Alternativ för aktivitetsredigering i WF

.NET Framework 4.6.1 innehåller flera alternativ för att skapa anpassade aktiviteter. Vilken metod som ska användas för att redigera en viss aktivitet beror på vilka körningsfunktioner som krävs.

Bestämma vilken basaktivitetsklass som ska användas för redigering av anpassade aktiviteter

I följande tabell visas de funktioner som är tillgängliga i basklasserna för anpassad aktivitet.

Basaktivitetsklass Tillgängliga funktioner
Activity Består av grupper av systembaserade och anpassade aktiviteter i en sammansatt aktivitet.
CodeActivity Implementerar imperativa funktioner genom att tillhandahålla en Execute metod som kan åsidosättas. Ger också åtkomst till spårning, variabler och argument..
NativeActivity Innehåller alla funktioner i , plus att avbryta aktivitetskörning CodeActivity, avbryta körning av underordnade aktiviteter, använda bokmärken och schemalägga aktiviteter, aktivitetsåtgärder och funktioner.
DynamicActivity Tillhandahåller en DOM-liknande metod för att konstruera aktiviteter som samverkar med WF-designern och körningsmaskinerna via ICustomTypeDescriptor, vilket gör att nya aktiviteter kan skapas utan att definiera nya typer.

Redigeringsaktiviteter med aktivitet

Aktiviteter som härleds från Activity att skapa funktioner genom att montera andra befintliga aktiviteter. Dessa aktiviteter kan vara befintliga anpassade aktiviteter och aktiviteter från .NET Framework 4.6.1-aktivitetsbiblioteket. Att montera dessa aktiviteter är det mest grundläggande sättet att skapa anpassade funktioner. Den här metoden används oftast när du använder en visuell designmiljö för att redigera arbetsflöden.

Redigeringsaktiviteter med hjälp av CodeActivity eller AsyncCodeActivity

Aktiviteter som härleds från CodeActivity eller AsyncCodeActivity kan implementera imperativa funktioner genom att Execute åsidosätta metoden med anpassad imperativ kod. Den anpassade koden körs när aktiviteten körs av körningen. Även om aktiviteter som skapas på det här sättet har åtkomst till anpassade funktioner, har de inte åtkomst till alla funktioner i körningen, till exempel fullständig åtkomst till körningsmiljön, möjligheten att schemalägga underordnade aktiviteter, skapa bokmärken eller stödja en avbryt- eller abortmetod. När en CodeActivity körs har den åtkomst till en reducerad version av körningsmiljön (via CodeActivityContext klassen eller AsyncCodeActivityContext ). Aktiviteter som skapas med hjälp av CodeActivity har åtkomst till argument- och variabelmatchning, tillägg och spårning. Asynkron aktivitetsschemaläggning kan göras med hjälp av AsyncCodeActivity.

Redigeringsaktiviteter med nativeactivity

Aktiviteter som härleds från NativeActivity, som de som härleds från CodeActivity, skapar imperativa funktioner genom att Executeåsidosätta , men som också har åtkomst till alla funktioner i arbetsflödeskörningen NativeActivityContext via den som skickas till Execute metoden. Den här kontexten har stöd för att schemalägga och avbryta underordnade aktiviteter, köra ActivityAction och ActivityFunc<TResult> objekt, flöda transaktioner till ett arbetsflöde, anropa asynkrona processer, avbryta och avbryta körning, åtkomst till körningsegenskaper och tillägg samt bokmärken (referenser för att återuppta pausade arbetsflöden).

Redigeringsaktiviteter med dynamicactivity

Till skillnad från de andra tre typerna av aktivitet skapas inte nya funktioner genom att härleda nya typer från DynamicActivity (klassen är förseglad), utan i stället genom att samla funktioner i Properties egenskaperna och Implementation med hjälp av en aktivitetsdokumentobjektmodell (DOM).

Redigeringsaktiviteter som returnerar ett resultat

Många aktiviteter måste returnera ett resultat efter körningen. Även om det är möjligt att alltid definiera en anpassad OutArgument<T> aktivitet för det här ändamålet, föreslås det att du i stället använder Activity<TResult>, eller härleder från CodeActivity<TResult> eller NativeActivity<TResult>. Var och en av dessa basklasser har namnet OutArgument<T> Resultat som din aktivitet kan använda för sitt returvärde. Aktiviteter som returnerar ett resultat bör endast användas om endast ett resultat behöver returneras från en aktivitet. Om flera resultat måste returneras ska separata OutArgument<T> medlemmar användas i stället.