Dela via


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.