Sdílet prostřednictvím


Základní koncepty pracovních postupů Windows

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í CodeActivity a NativeActivity jsou vytvářeny s využitím 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ě.
Důvod Přesune data do nebo z aktivity.
Výraz Aktivita se zvýšenou návratovou hodnotou použitou ve vazbách argumentů.

Běhové prostředí pracovního postupu

Prostředí runtime je prostředí, ve kterém se spouštějí pracovní postupy. WorkflowInvoker je nejjednodušší způsob, jak spustit pracovní postup. Hostitel používá WorkflowInvoker pro následující:

  • Synchronní vyvolání pracovního postupu

  • Zadání vstupu nebo načtení výstupu z pracovního postupu

  • Přidat 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ý hostitelé mohou použít k interakci s modulem runtime. Hostitel používá ActivityInstance pro následující:

  • Pokud chcete získat instanci tak, že ji vytvoříte nebo načtete z úložiště instancí.

  • Být upozorněn 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.

  • Zachovat data pracovního postupu.

  • Přidat 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ženy na WCF a představují primární mechanismus pro získávání dat do 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, vykládání a pracovní postupy Long-Running

Windows Workflow zjednodušuje vytváření dlouhotrvajících reaktivních programů tím, že poskytuje:

  • Aktivity, které přistupují k externímu vstupu

  • Schopnost vytvářet Bookmark objekty, které lze obnovit nasloucháním 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 pozdějším stavu je pracovní postup nečinný. Je běžné, že hostitel uvolňuje pracovní postupy, které se staly nečinnými, a znovu je načítá, aby mohl pokračovat v provádění, když dorazí zpráva. WorkflowServiceHost poskytuje funkce pro tuto vlastnost a nabízí rozšiřitelnou politiku 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.