Základní koncepce Windows Workflow
Vývoj pracovních postupů v rozhraní .NET Framework 4.6.1 používá koncepty, které mohou být pro některé vývojáře nové. Toto téma popisuje některé koncepty a způsob jejich implementace.
Pracovní postupy a aktivity
Pracovní postup je strukturovaná kolekce akcí, které modeluje proces. Každá akce v pracovním postupu se modeluje jako aktivita. Hostitel pracuje s pracovním postupem, který používá WorkflowInvoker k vyvolání pracovního postupu, jako by šlo o metodu, WorkflowApplication pro explicitní kontrolu nad prováděním jedné instance pracovního postupu a WorkflowServiceHost pro interakce založené na zprávách ve scénářích s více instancemi. Vzhledem k tomu, že kroky pracovního postupu jsou definovány jako hierarchie aktivit, je možné říci, že nejvyšší aktivita v hierarchii definuje samotný pracovní postup. Tento model hierarchie se používá místo explicitních SequentialWorkflow
a StateMachineWorkflow
tříd z předchozích verzí. Samotné aktivity se vyvíjejí jako kolekce jiných aktivit (pomocí Activity třídy jako základu, obvykle definované pomocí XAML) nebo jsou vlastní vytvořené pomocí CodeActivity třídy, která může použít modul runtime pro přístup k datům nebo pomocí NativeActivity třídy, která zveřejňuje šířku modulu runtime pracovního postupu autorovi aktivity. Aktivity vyvinuté pomocí a CodeActivityNativeActivity vytvářejí se pomocí jazyků kompatibilních s CLR, jako je C#.
Datový model aktivity
Aktivity ukládají a sdílejí data pomocí typů zobrazených v následující tabulce.
Typ | Popis |
---|---|
Proměnná | Ukládá data v aktivitě. |
Argument | Přesune data do a z aktivity. |
Výraz | Aktivita se zvýšenou návratovou hodnotou použitou ve vazbách argumentů. |
Modul runtime pracovního postupu
Modul runtime pracovního postupu je prostředí, ve kterém se spouští pracovní postupy. WorkflowInvoker je nejjednodušší způsob, jak spustit pracovní postup. Hostitel používá WorkflowInvoker následující:
Synchronní vyvolání pracovního postupu
Zadání vstupu nebo načtení výstupu z pracovního postupu
Přidání rozšíření, která mají být používána aktivitami.
ActivityInstance je proxy server bezpečný pro přístup z více vláken, který můžou hostitelé použít k interakci s modulem runtime. Hostitel používá ActivityInstance následující:
Pokud chcete získat instanci tak, že ji vytvoříte nebo načtete z úložiště instancí.
Chcete-li být upozorněni na události životního cyklu instance.
Řízení provádění pracovního postupu.
Zadání vstupu nebo načtení výstupu z pracovního postupu
Chcete-li signalizovat pokračování pracovního postupu a předat do pracovního postupu hodnoty.
Chcete-li zachovat data pracovního postupu.
Přidání rozšíření, která mají být používána aktivitami.
Aktivity získávají přístup k prostředí modulu runtime pracovního postupu pomocí odpovídající ActivityContext odvozené třídy, například NativeActivityContext nebo CodeActivityContext. Používají ho k řešení argumentů a proměnných, pro plánování podřízených aktivit a pro mnoho dalších účelů.
Služby
Pracovní postupy poskytují přirozený způsob implementace volně propojených služeb a přístupu k němu pomocí aktivit zasílání zpráv. Aktivity zasílání zpráv jsou založené na WCF a jsou primárním mechanismem, který slouží k získání dat do pracovního postupu a z pracovního postupu. Aktivity zasílání zpráv můžete vytvářet společně a modelovat libovolný druh vzoru výměny zpráv. Další informace naleznete v tématu Aktivity zasílání zpráv. Služby pracovního postupu jsou hostovány pomocí WorkflowServiceHost třídy. Další informace naleznete v tématu Přehled služeb pracovních postupů hostování. Další informace o službách pracovních postupů naleznete v tématu Služby pracovního postupu
Trvalost, uvolňování a dlouhotrvající pracovní postupy
Windows Workflow zjednodušuje vytváření dlouhotrvajících reaktivních programů tím, že poskytuje:
Aktivity, které přistupuje k externímu vstupu
Schopnost vytvářet Bookmark objekty, které lze obnovit naslouchacím procesem hostitele.
Schopnost zachovat data pracovního postupu a uvolnit pracovní postup a pak pracovní postup znovu načíst a znovu aktivovat v reakci na obnovení Bookmark objektů v konkrétním pracovním postupu.
Pracovní postup nepřetržitě provádí aktivity, dokud nebudou spuštěny žádné další aktivity, nebo dokud všechny aktuálně spuštěné aktivity čekají na vstup. V tomto druhém stavu je pracovní postup nečinný. Hostitel může uvolnit pracovní postupy, které byly nečinné, a znovu je načíst, aby mohl pokračovat v provádění při doručení zprávy. WorkflowServiceHost poskytuje funkce pro tuto funkci a poskytuje rozšiřitelné zásady uvolnění. Pro bloky provádění, které používají nestálá stavová data nebo jiná data, která nelze zachovat, může aktivita indikovat hostitele, že by neměla být zachována pomocí NoPersistHandle. Pracovní postup může také explicitně uchovávat data na trvalé médium úložiště pomocí Persist aktivity.