Dela via


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 redigering av 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 de anpassade aktivitetsbasklasserna.

Basaktivitetsklass Tillgängliga funktioner
Activity Skapar 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, avbryta körning av CodeActivityunderordnade 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örningsmaskiner via ICustomTypeDescriptor, vilket gör att nya aktiviteter kan skapas utan att definiera nya typer.

Redigera aktiviteter 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 aktivitetsbiblioteket 4.6.1. 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 redigering av arbetsflöden.

Redigera aktiviteter 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 metoden Avbryt eller Avbryt. 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 har CodeActivity åtkomst till argument- och variabelmatchning, tillägg och spårning. Asynkron aktivitetsschemaläggning kan göras med hjälp av AsyncCodeActivity.

Redigera aktiviteter 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 har också åtkomst till alla funktioner i arbetsflödeskörningen via NativeActivityContext 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 och bokmärken (referenser för att återuppta pausade arbetsflöden).

Redigera aktiviteter 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 montera funktioner i Properties egenskaperna och Implementation med hjälp av en DOM (activity document object model).

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 detta ändamål, rekommenderas det att i stället använda Activity<TResult>, eller härleda från CodeActivity<TResult> eller NativeActivity<TResult>. Var och en av dessa basklasser har ett OutArgument<T> namngivet 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.