Jak mohu vytvořit pracovního postupu instance spolehlivě na základě externí události?

hlasů
3

trochu nové pro Windows Workflow věci, takže jít snadno :)

Přál bych si navrhnout workflow hostitelské prostředí, které má vysokou dostupnost - minimálně 2 WF runtime hostitelů na samostatném hardwaru obou směřující ke stejnému perzistence nebo sledování databáze SQL.

Hledám vzor, ​​kterým mohu asynchronně vytvořit nové instance pracovního postupu na základě nějaké externí události (tj některé část dat je aktualizován v DB jinou aplikací). Pro každou událost musím vytvořit přesně jeden workflow instance a nezáleží na tom, který hostitel, že instance je vytvořena na. K dispozici je také určitá flexibilita ohledně délky trvání doby mezi událostí a kdy workflow instance je vlastně vytvořen.

Jedním z možných řešení Uvažuji je s WCF rozhraní na hostiteli WF a jejich umisťování za jakési vyrovnávání zatížení. To by pak bylo až do jakékoliv části systému, který je odpálení „událost“, aby WCF volání.

Nejsem spokojený s tím, protože pokud oba \ všichni hostitelé WF jsou dole, nebo jinak nedostupné, událost by mohla být „ztracené“. Také nebudu moci spravují nahrát tak, jak bych chtěl. I představit situaci, kdy mohou existovat mnoho událostí v malém časovém období, ale je to naprosto přijatelné, aby tyto události zvládnout nějaký čas později.

Takže hádám, musím trvat události nějak oddělit a vytváření událostí z manipulace událostí.

Je uvedení těchto událostí do MSMQ nebo jednoduchou tabulku událostí v SQL Server a má hostitel WF jen dotazování fronty pravidelně schůdné řešení? Dotazování se zdá být jako sprosté slovo i když ...

Tu bude užitečné NServiceBus a trvanlivé zpráv?

Veškeré poznatky by se moc líbí.

dodatky

Databáze bude dělit se společnou ukládání vláken kanálu. Síť bude také nadbytečné. Aby případech WF runtime mít fail-over oni musí směřovat ke společnému persistence služby, což v tomto případě znamená SQL backend. Je to vysoká dostupnost, není Total Availabilty :)

článek MSDN na WF spolehlivost a vysoký kalendář

Také, každý instance WF běhu, musí být spuštěn přesně stejné kousky, takže upgrade bude vyžadovat přijetí je všechny najednou. Líbí se mi představa, že budou moci k tomu, že v případě potřeby, aniž by celý systém dolů.

Položena 14/08/2008 v 15:56
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Používáte-li služby WCF s netMsmqBinding, můžete přijímat zprávy zařazené do fronty, aniž by museli hlasování. Zprávy budou čekat, pokud není služba spuštěna, aby je vyzvedla. Budete chtít, aby se ujistil použít seskupený fronty pro svou spolehlivost v případě, že hlavní hromadné obsluhy stroje klesá.

Také být vědomi při inovaci, kterou nelze oživit instance ze staré verze služby. Takže upgrade dlouhé provozní pracovní postupy, je třeba jim zabránit přijímání nových žádostí a počkejte, až se všechny instance skončil před změnou bitů, nebo staré případy se zasekl ve svém perzistence obchodě navždy.

Odpovězeno 17/09/2008 v 22:07
zdroj uživatelem

hlasů
0

To je, jak jsem to vyřešil.

Já používám NServiceBus as každým WF runtime hostitel směřující ke stejnému messagebus (pomocí MSMQ jako přepravy). NServiceBus podporuje transakční čte z autobusu a vrácení zprávy. Je-li zpráva přijata z autobusu, ale tento proces ukončen před tím, než je zpráva plně ovládal zůstane ve frontě a různé runtime hostitele bude si ji vyzvednout.

Chcete-li mít WF runtime počítače běžící na samostatných strojů, messagebus \ fronta bude muset nacházet v systému Windows 2008 Server (MSMQ 4.0) nebo novější, jako dřívější verze MSMQ nepodporují vzdálený transakční čte. Všimněte si také, za účelem provedení vzdáleného transakční čtení stroj provádějící čtení bude také muset mít MSMQ 4.0 nainstalován (tj Windows Server 2008)

Odpovězeno 02/11/2008 v 17:55
zdroj uživatelem

hlasů
0

Chtěl bych jít s MSMQ tabulky / událostí. Dotazování je jen špinavá, pokud děláte to špatně.

Jedna věc je mít na paměti: říkáte, že chcete více serverů WF pro zajištění vysoké dostupnosti, ale oba používají stejný SQL backend ? Vysoká dostupnost funguje pouze tehdy, pokud jste odstranit všechny jednotlivé body selhání, ne jen některé z nich.

Odpovězeno 14/08/2008 v 16:56
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more