Sdílet prostřednictvím


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 k vytváření dané aktivity, závisí na požadovaných funkcích modulu runtime.

Rozhodování o tom, kterou základní třídu aktivity použít k vytváření vlastních aktivit

Následující tabulka uvádí funkce, které jsou k dispozici ve vlastních základních třídách aktivit.

Základní třída aktivity Dostupné funkce
Activity Seskupuje skupiny systémově poskytovaný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 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 součástí rozhraní s návrhářem WF a stroji runtime prostřednictvím ICustomTypeDescriptor, což umožňuje vytváření nových aktivit bez definování nových typů.

Aktivity vytváření pomocí aktivity

Aktivity, které jsou odvozeny od Activity funkce vytváření sestavení sestavením dalších existujících aktivit. Tyto aktivity mohou být existující vlastní aktivity a aktivity z knihovny aktivit rozhraní .NET Framework 4.6.1. Sestavení těchto aktivit je nejzásadnější způsob, jak vytvořit vlastní funkce. Tento přístup se obvykle používá při použití vizuálního návrhového prostředí pro vytváření pracovních postupů.

Aktivity vytváření pomocí CodeActivity nebo AsyncCodeActivity

Aktivity odvozené 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 podporovat metodu Cancel nebo Abort. CodeActivity Při spuštění má přístup ke snížené verzi spouštěcího prostředí (prostřednictvím CodeActivityContext nebo AsyncCodeActivityContext třídy). 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.

Aktivity vytváření pomocí NativeActivity

Aktivity, které jsou odvozeny od NativeActivity, jako jsou ty, které jsou odvozeny 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 , který se předá 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ání asynchronních procesů, zrušení a přerušení provádění, přístup k vlastnostem spuštění a rozšířením a záložky (obslužné rutiny pro obnovení pozastavených pracovních postupů).

Aktivity vytváření pomocí funkce DynamicActivity

Na rozdíl od ostatních tří typů aktivit se nové funkce nevytvoří odvozením nových typů ( DynamicActivity třída je zapečetěna), ale sestavením funkcí do Properties vlastností Implementation pomocí objektového modelu dokumentu aktivity (DOM).

Aktivity vytváření, které vracejí výsledek

Mnoho aktivit musí po spuštění vrátit výsledek. I když je možné vždy definovat vlastní aktivitu OutArgument<T> pro tento účel, je doporučeno 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ý vaše aktivita může použít pro svoji návratovou hodnotu. Aktivity, které vrací výsledek, by se měly použít pouze v případě, že z aktivity musí být vrácen 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.