Delen via


Interne werkstroomservicehosts

WorkflowServiceHost biedt een host voor werkstroomservices. Het is verantwoordelijk voor het luisteren naar binnenkomende berichten en het doorsturen naar het juiste exemplaar van de werkstroomservice, het regelt het lossen en behouden van niet-actieve werkstromen, en meer. In dit onderwerp wordt beschreven hoe WorkflowServiceHost binnenkomende berichten verwerkt.

Overzicht van WorkflowServiceHost

De WorkflowServiceHost klasse wordt gebruikt voor het hosten van werkstroomservices. Het luistert naar binnenkomende berichten en stuurt deze naar het juiste service-exemplaar, maakt nieuwe exemplaren of laadt bestaande exemplaren van duurzame opslag indien nodig. In het volgende diagram ziet u op een hoog niveau hoe WorkflowServiceHost u dit doet:

Diagram that shows an overview of the Workflow Service Host.

In dit diagram ziet u dat WorkflowServiceHost werkstroomservicedefinities uit .xamlx-bestanden worden geladen en configuratiegegevens uit een configuratiebestand worden geladen. Ook wordt de traceringsconfiguratie vanuit het traceringsprofiel geladen. WorkflowServiceHost maakt een eindpunt voor werkstroombeheer beschikbaar waarmee u besturingsbewerkingen naar werkstroomexemplaren kunt verzenden. Zie het voorbeeld van het eindpunt voor werkstroombeheer voor meer informatie.

WorkflowServiceHost maakt ook toepassingseindpunten beschikbaar die luisteren naar binnenkomende toepassingsberichten. Wanneer een binnenkomend bericht binnenkomt, wordt het verzonden naar het juiste werkstroomservice-exemplaar (als het momenteel is geladen). Indien nodig wordt er een nieuw werkstroomexemplaren gemaakt. Of als een bestaand exemplaar is behouden, wordt het geladen vanuit het persistentiearchief.

WorkflowServiceHost Details

In het volgende diagram ziet u hoe WorkflowServiceHost berichten in iets meer detail worden verwerkt:

Diagram that shows the Workflow Service Host message flow.

In dit diagram ziet u drie verschillende eindpunten, een toepassingseindpunt, een eindpunt voor werkstroombeheer en een eindpunt voor het hosten van werkstromen. Het toepassingseindpunt ontvangt berichten die zijn gebonden aan een specifiek werkstroomexemplaren. Het eindpunt voor werkstroombeheer luistert naar besturingsbewerkingen. Het hosteindpunt van de werkstroom luistert naar berichten die leiden tot WorkflowServiceHost het laden en uitvoeren van niet-servicewerkstromen. Zoals in het diagram wordt weergegeven, worden alle berichten verwerkt via de WCF-runtime. Beperking van werkstroomservice-exemplaren wordt bereikt met behulp van de MaxConcurrentInstances eigenschap. Met deze eigenschap wordt het aantal gelijktijdige werkstroomservice-exemplaren beperkt. Wanneer deze beperking wordt overschreden, worden eventuele extra aanvragen voor nieuwe werkstroomservice-exemplaren of aanvragen voor het activeren van persistente werkstroomexemplaren in de wachtrij geplaatst. De aanvragen in de wachtrij worden verwerkt in FIFO-volgorde, ongeacht of het aanvragen zijn voor een nieuw exemplaar of een actief, persistent exemplaar. Informatie over hostbeleid wordt geladen waarmee wordt bepaald hoe niet-verwerkte uitzonderingen worden behandeld en hoe niet-actieve werkstroomservices worden uitgepakt en behouden. Zie How to: Configure Workflow Unhandled Exception Behavior with WorkflowServiceHost and How to: Configure Idle Behavior with WorkflowServiceHost. Werkstroomexemplaren blijven behouden volgens het hostbeleid en worden zo nodig opnieuw geladen. Zie voor meer informatie over werkstroompersistentie: Persistentie configureren met WorkflowServiceHost, Een langlopende werkstroomservice maken en werkstroompersistentie.

In de volgende afbeelding ziet u de stroom wanneer WorkflowServiceHost.Open wordt aangeroepen:

Diagram that shows the flow when WorkflowServiceHost.Open is called.

De werkstroom wordt geladen vanuit XAML en de activiteitenstructuur wordt gemaakt. WorkflowServiceHost begeleidt de activiteitenstructuur en maakt de servicebeschrijving. De configuratie wordt toegepast op de host. Ten slotte begint de host te luisteren naar binnenkomende berichten.

In de volgende afbeelding ziet u wat de WorkflowServiceHost bewerking doet wanneer er een bericht wordt ontvangen dat is gebonden aan een ontvangstactiviteit waarvoor CanCreateInstance is ingesteld trueop:

Decision tree used by the WFS Host when it receives a message and CanCreateInstance is true.

Het bericht komt binnen en wordt verwerkt door de WCF-kanaalstack. Beperkingen worden gecontroleerd en correlatiequery's worden uitgevoerd. Als het bericht afhankelijk is van een bestaand exemplaar, wordt het bericht bezorgd. Als er een nieuw exemplaar moet worden gemaakt, wordt de eigenschap CanCreateInstance van de activiteit Ontvangen ingeschakeld. Als deze is ingesteld op true, wordt er een nieuw exemplaar gemaakt en wordt het bericht bezorgd.

In de volgende afbeelding ziet u wat het WorkflowServiceHost doet wanneer er een bericht wordt ontvangen dat is gebonden aan een ontvangstactiviteit waarvoor CanCreateInstance is ingesteld op false.

Decision tree used by the WFS Host when it receives a message and CanCreateInstance is false.

Het bericht komt binnen en wordt verwerkt door de WCF-kanaalstack. Beperkingen worden gecontroleerd en correlatiequery's worden uitgevoerd. Het bericht is gebonden aan een bestaand exemplaar (omdat CanCreateInstance onwaar is), zodat het exemplaar wordt geladen vanuit het persistentiearchief, de bladwijzer wordt hervat en de werkstroom wordt uitgevoerd.

Waarschuwing

Werkstroomservicehost kan niet worden geopend als SQL Server is geconfigureerd om alleen te luisteren op het NamedPipe-protocol.

Zie ook