Delen via


Basisconcepten van Windows-werkstromen

Werkstroomontwikkeling in .NET Framework 4.6.1 maakt gebruik van concepten die mogelijk nieuw zijn voor sommige ontwikkelaars. In dit onderwerp worden enkele concepten beschreven en hoe ze worden geïmplementeerd.

Werkstromen en activiteiten

Een werkstroom is een gestructureerde verzameling acties die een proces modelleert. Elke actie in de werkstroom wordt gemodelleerd als een activiteit. Een host communiceert met een werkstroom door WorkflowInvoker een werkstroom aan te roepen alsof het een methode is, WorkflowApplication voor expliciete controle over de uitvoering van één werkstroomexemplaren en WorkflowServiceHost voor op berichten gebaseerde interacties in scenario's met meerdere exemplaren. Omdat de stappen van de werkstroom zijn gedefinieerd als een hiërarchie van activiteiten, kan de bovenste activiteit in de hiërarchie worden gezegd om de werkstroom zelf te definiëren. Dit hiërarchiemodel krijgt de plaats van de expliciete SequentialWorkflow en StateMachineWorkflow klassen uit eerdere versies. Activiteiten zelf worden ontwikkeld als verzamelingen van andere activiteiten (met behulp van de Activity klasse als basis, meestal gedefinieerd met behulp van XAML) of worden aangepast gemaakt met behulp van de CodeActivity klasse, die de runtime voor gegevenstoegang kan gebruiken, of door de NativeActivity klasse te gebruiken, die de breedte van de werkstroomruntime blootstelt aan de auteur van de activiteit. Activiteiten die zijn ontwikkeld met behulp van CodeActivity en NativeActivity worden gemaakt met behulp van CLR-compatibele talen zoals C#.

Activiteitsgegevensmodel

Activiteiten slaan gegevens op en delen met behulp van de typen die worden weergegeven in de volgende tabel.

Type Description
Variabel Slaat gegevens op in een activiteit.
Argument Hiermee verplaatst u gegevens naar en van een activiteit.
Expression Een activiteit met een verhoogde retourwaarde die wordt gebruikt in argumentbindingen.

Werkstroomruntime

De werkstroomruntime is de omgeving waarin werkstromen worden uitgevoerd. WorkflowInvoker is de eenvoudigste manier om een werkstroom uit te voeren. De host gebruikt WorkflowInvoker voor het volgende:

  • Een werkstroom synchroon aanroepen.

  • Als u invoer wilt opgeven voor of uitvoer wilt ophalen uit een werkstroom.

  • Extensies toevoegen die moeten worden gebruikt door activiteiten.

ActivityInstance is de thread-veilige proxy die hosts kunnen gebruiken om te communiceren met de runtime. De host gebruikt ActivityInstance voor het volgende:

  • Een exemplaar verkrijgen door het te maken of te laden vanuit een exemplaararchief.

  • Om op de hoogte te worden gesteld van levenscyclusgebeurtenissen van exemplaren.

  • Werkstroomuitvoering beheren.

  • Als u invoer wilt opgeven voor of uitvoer wilt ophalen uit een werkstroom.

  • Om een vervolg van een werkstroom aan te geven en waarden door te geven aan de werkstroom.

  • Werkstroomgegevens behouden.

  • Extensies toevoegen die moeten worden gebruikt door activiteiten.

Activiteiten krijgen toegang tot de runtime-omgeving van de werkstroom met behulp van de juiste ActivityContext afgeleide klasse, zoals NativeActivityContext of CodeActivityContext. Ze gebruiken dit voor het oplossen van argumenten en variabelen, voor het plannen van onderliggende activiteiten en voor veel andere doeleinden.

Services

Werkstromen bieden een natuurlijke manier om losjes gekoppelde services te implementeren en te openen met behulp van berichtenactiviteiten. Berichtenactiviteiten zijn gebaseerd op WCF en zijn het primaire mechanisme dat wordt gebruikt om gegevens in en uit een werkstroom te halen. U kunt berichtenactiviteiten samenstellen om elk gewenst type berichtuitwisselingspatroon te modelleren. Zie Berichtenactiviteiten voor meer informatie. Werkstroomservices worden gehost met behulp van de WorkflowServiceHost klasse. Zie Overzicht hostingwerkstroomservices voor meer informatie. Zie Workflow Services voor meer informatie over werkstroomservices

Persistentie-, los- en langlopende werkstromen

Windows Workflow vereenvoudigt het ontwerpen van langlopende reactieve programma's door het volgende te bieden:

  • Activiteiten die toegang hebben tot externe invoer.

  • De mogelijkheid om objecten te maken Bookmark die kunnen worden hervat door een hostlistener.

  • De mogelijkheid om de gegevens van een werkstroom vast te houden en de werkstroom te verwijderen en vervolgens de werkstroom opnieuw te laden en opnieuw te activeren als reactie op het hervatten van Bookmark objecten in een bepaalde werkstroom.

Een werkstroom voert continu activiteiten uit totdat er geen activiteiten meer zijn die moeten worden uitgevoerd of totdat alle momenteel uitgevoerde activiteiten wachten op invoer. In deze laatste staat is de werkstroom niet actief. Het is gebruikelijk dat een host werkstromen die niet actief zijn gegaan, verwijdert en deze opnieuw laadt om door te gaan met de uitvoering wanneer een bericht binnenkomt. WorkflowServiceHost biedt functionaliteit voor deze functie en biedt een uitbreidbaar uitbreidbaar uitlaadbeleid. Voor uitvoeringsblokken die vluchtige statusgegevens of andere gegevens gebruiken die niet kunnen worden bewaard, kan een activiteit aangeven aan een host dat deze niet mag worden bewaard met behulp van de NoPersistHandle. Een werkstroom kan de gegevens ook expliciet op een duurzaam opslagmedium bewaren met behulp van de Persist activiteit.