Možnosti vytváření aktivit ve WF
Rozhraní .NET Framework 4.6.1 poskytuje několik možností pro vytváření vlastních aktivit. Správná metoda, která se má použít pro vytváření dané aktivity, závisí na tom, jaké funkce za běhu jsou vyžadovány.
Rozhodování, kterou třídu základní aktivity použít pro vytváření vlastních aktivit
Následující tabulka uvádí funkce dostupné v základních třídách vlastních aktivit.
Třída základní aktivity | Dostupné funkce |
---|---|
Activity | Složí skupiny systémových a vlastních aktivit do složené aktivity. |
CodeActivity | Implementuje imperativní funkce poskytnutím Execute metody, kterou lze přepsat. Poskytuje také přístup ke sledování, proměnným a argumentům. |
NativeActivity | Poskytuje všechny funkce nástroje CodeActivity, plus přerušení provádění aktivit, zrušení provádění podřízených aktivit, používání záložek a plánování aktivit, akcí aktivit a funkcí. |
DynamicActivity | Poskytuje přístup podobný modelu DOM k vytváření aktivit, které jsou v kontaktu s návrhářem WF a stroji běhu prostřednictvím ICustomTypeDescriptornástroje , což umožňuje vytváření nových aktivit bez definování nových typů. |
Vytváření aktivit pomocí aktivity
Aktivity, které jsou odvozeny z Activity funkce vytváření sestav sestavením dalších existujících aktivit. Tyto aktivity můžou být existující vlastní aktivity a aktivity z knihovny aktivit rozhraní .NET Framework 4.6.1. Sestavení těchto aktivit je nejzákladnějším způsobem, jak vytvořit vlastní funkce. Tento přístup se nejčastěji používá při použití prostředí vizuálního návrhu pro vytváření pracovních postupů.
Vytváření aktivit pomocí CodeActivity nebo AsyncCodeActivity
Aktivity, které jsou odvozeny z CodeActivity nebo AsyncCodeActivity mohou implementovat imperativní funkce přepsáním Execute metody vlastním imperativním kódem. Vlastní kód se spustí při spuštění aktivity modulem runtime. I když aktivity vytvořené tímto způsobem mají přístup k vlastním funkcím, nemají přístup ke všem funkcím modulu runtime, jako je úplný přístup k spouštěcímu prostředí, možnost plánovat podřízené aktivity, vytváření záložek nebo podpora metody Cancel nebo Abort. CodeActivity Při spuštění má přístup k omezené verzi spouštěcího prostředí (prostřednictvím CodeActivityContext třídy neboAsyncCodeActivityContext). Aktivity vytvořené pomocí CodeActivity mají přístup k rozlišení argumentů a proměnných, rozšířením a sledování. Asynchronní plánování aktivit lze provést pomocí AsyncCodeActivity.
Vytváření aktivit pomocí NativeActivity
Aktivity, které jsou odvozeny z NativeActivity, jako ty, které jsou odvozeny z CodeActivity, vytvářejí imperativní funkce přepsáním Execute, ale mají také přístup ke všem funkcím modulu runtime pracovního postupu prostřednictvím NativeActivityContext metody, která se předává do Execute metody. Tento kontext podporuje plánování a rušení podřízených aktivit, spouštění ActivityAction a ActivityFunc<TResult> objektů, tok transakcí do pracovního postupu, vyvolávání asynchronních procesů, rušení a přerušení provádění, přístup k vlastnostem a rozšířením provádění a záložkám (popisovače pro obnovení pozastavených pracovních postupů).
Vytváření aktivit pomocí DynamicActivity
Na rozdíl od ostatních tří typů aktivit se nové funkce nevytvoří odvozením nových typů z DynamicActivity (třída je zapečetěná), ale sestavením funkcí do Properties vlastností a Implementation pomocí modelu DOM (Activity Document Object Model).
Aktivity vytváření, které vrací výsledek
Mnoho aktivit musí po provedení vrátit výsledek. I když je pro tento účel možné vždy definovat vlastní OutArgument<T> aktivitu, doporučujeme místo toho použít Activity<TResult>, nebo odvodit z CodeActivity<TResult> nebo NativeActivity<TResult>. Každá z těchto základních tříd má pojmenovaný OutArgument<T> Výsledek, který může vaše aktivita použít pro svou návratovou hodnotu. Aktivity, které vracejí výsledek, by měly být použity pouze v případě, že z aktivity je třeba vrátit pouze jeden výsledek; Pokud je potřeba vrátit více výsledků, měli byste místo toho použít samostatné OutArgument<T> členy.