Grundläggande begrepp för Windows-arbetsflöde
Arbetsflödesutveckling i .NET Framework 4.6.1 använder begrepp som kan vara nya för vissa utvecklare. I det här avsnittet beskrivs några av begreppen och hur de implementeras.
Arbetsflöden och aktiviteter
Ett arbetsflöde är en strukturerad samling åtgärder som modellerar en process. Varje åtgärd i arbetsflödet modelleras som en aktivitet. En värd interagerar med ett arbetsflöde med hjälp WorkflowInvoker av för att anropa ett arbetsflöde som om det vore en metod, WorkflowApplication för explicit kontroll över körningen av en enskild arbetsflödesinstans och WorkflowServiceHost för meddelandebaserade interaktioner i scenarier med flera instanser. Eftersom steg i arbetsflödet definieras som en hierarki med aktiviteter kan den översta aktiviteten i hierarkin sägas definiera själva arbetsflödet. Den här hierarkimodellen tar plats för de explicita SequentialWorkflow
klasserna och StateMachineWorkflow
klasserna från tidigare versioner. Själva aktiviteterna utvecklas som samlingar av andra aktiviteter (med Activity klassen som bas, som vanligtvis definieras med hjälp av XAML) eller är anpassade som skapas med hjälp CodeActivity av klassen, som kan använda körningen för dataåtkomst eller genom att använda NativeActivity klassen, som exponerar bredden för arbetsflödeskörningen för aktivitetsförfattaren. Aktiviteter som utvecklas med hjälp CodeActivity av och NativeActivity skapas med hjälp av CLR-kompatibla språk, till exempel C#.
Aktivitetsdatamodell
Aktiviteter lagrar och delar data med hjälp av de typer som visas i följande tabell.
Typ | Beskrivning |
---|---|
Olika | Lagrar data i en aktivitet. |
Argument | Flyttar data till och från en aktivitet. |
Uttryck | En aktivitet med ett förhöjt returvärde som används i argumentbindningar. |
Arbetsflödeskörning
Arbetsflödeskörningen är den miljö där arbetsflöden körs. WorkflowInvoker är det enklaste sättet att köra ett arbetsflöde. Värden använder WorkflowInvoker för följande:
Anropa ett arbetsflöde synkront.
Ange indata till eller hämta utdata från ett arbetsflöde.
Så här lägger du till tillägg som ska användas av aktiviteter.
ActivityInstance är den trådsäkra proxy som värdar kan använda för att interagera med körningen. Värden använder ActivityInstance för följande:
Hämta en instans genom att skapa den eller läsa in den från ett instansarkiv.
Meddelas om instansens livscykelhändelser.
För att styra arbetsflödets körning.
Ange indata till eller hämta utdata från ett arbetsflöde.
För att signalera en arbetsflödesfortsättning och skicka värden till arbetsflödet.
Spara arbetsflödesdata.
Så här lägger du till tillägg som ska användas av aktiviteter.
Aktiviteter får åtkomst till arbetsflödets körningsmiljö med hjälp av lämplig ActivityContext härledd klass, till exempel NativeActivityContext eller CodeActivityContext. De använder detta för att lösa argument och variabler, för att schemalägga underordnade aktiviteter och för många andra syften.
Tjänster
Arbetsflöden är ett naturligt sätt att implementera och komma åt löst kopplade tjänster med hjälp av meddelandeaktiviteter. Meddelandeaktiviteter bygger på WCF och är den primära mekanismen som används för att hämta data till och från ett arbetsflöde. Du kan skapa meddelandeaktiviteter tillsammans för att modellera alla typer av mönster för meddelandeutbyte som du vill. Mer information finns i Meddelandeaktiviteter. Arbetsflödestjänster hanteras med hjälp av WorkflowServiceHost klassen . Mer information finns i Översikt över arbetsflödestjänster. Mer information om arbetsflödestjänster finns i Arbetsflödestjänster
Beständighet, avlastning och långvariga arbetsflöden
Windows Workflow förenklar redigeringen av långvariga reaktiva program genom att tillhandahålla:
Aktiviteter som har åtkomst till externa indata.
Möjligheten att skapa Bookmark objekt som kan återupptas av en värdlyssnare.
Möjligheten att bevara ett arbetsflödes data och ta bort arbetsflödet och sedan läsa in och återaktivera arbetsflödet som svar på återupptagandet av Bookmark objekt i ett visst arbetsflöde.
Ett arbetsflöde kör kontinuerligt aktiviteter tills det inte finns några fler aktiviteter att köra eller tills alla aktiviteter som körs för närvarande väntar på indata. I det senare tillståndet är arbetsflödet inaktivt. Det är vanligt att en värd tar bort arbetsflöden som har gått inaktiva och läser in dem igen för att fortsätta körningen när ett meddelande kommer. WorkflowServiceHost tillhandahåller funktioner för den här funktionen och tillhandahåller en utökningsbar avlastningsprincip. För körningsblock som använder flyktiga tillståndsdata eller andra data som inte kan bevaras kan en aktivitet indikera för en värd att den inte ska bevaras med hjälp NoPersistHandleav . Ett arbetsflöde kan också uttryckligen spara sina data till ett varaktigt lagringsmedium med hjälp Persist av aktiviteten.