Interne Funktionsweise des Workflowdiensthosts

WorkflowServiceHost stellt einen Host für Workflowdienste bereit. Der Host lauscht unter anderem auf eingehende Meldungen, leitet sie an die entsprechende Workflowdienstinstanz weiter und kontrolliert das Entladen und Beibehalten von Workflows. In diesem Thema wird beschrieben, wie eingehende Meldungen vom WorkflowServiceHost verarbeitet werden.

Übersicht über WorkflowServiceHost

Mit der WorkflowServiceHost-Klasse werden Workflowdienste gehostet. Die Klasse lauscht auf eingehende Meldungen und leitet diese an die entsprechende Dienstinstanz weiter, erstellt neue Dienstinstanzen oder lädt vorhandene Instanzen bei Bedarf aus dem permanenten Speicher. Das folgende Diagramm veranschaulicht die allgemeine Funktionsweise von WorkflowServiceHost:

Diagram that shows an overview of the Workflow Service Host.

Das Diagramm zeigt, dass Workflowdienstdefinitionen von WorkflowServiceHost aus XAMLX-Dateien und Konfigurationsinformationen aus einer Konfigurationsdatei geladen werden. Außerdem wird eine Überwachungskonfiguration aus dem Überwachungsprofil geladen. WorkflowServiceHost macht einen Workflowsteuerungsendpunkt verfügbar, mit dem Sie Steuerungsvorgänge an Workflowinstanzen senden können. Weitere Informationen finden Sie im Beispiel für den Workflowsteuerungsendpunkt.

WorkflowServiceHost macht darüber hinaus Anwendungsendpunkte zum Lauschen auf eingehende Meldungen verfügbar. Eingehende Meldungen werden an die entsprechende Workflowdienstinstanz gesendet (sofern diese aktuell geladen ist). Bei Bedarf wird eine neue Workflowinstanz erstellt. Wenn eine vorhandene Instanz beibehalten wurde, wird diese aus dem Persistenzspeicher geladen.

Details zum WorkflowServiceHost

Das folgende Diagramm zeigt mehr Details zur Verarbeitung von Meldungen von WorkflowServiceHost:

Diagram that shows the Workflow Service Host message flow.

Das Diagramm enthält drei verschiedene Endpunkte: einen Anwendungsendpunkt, einen Workflowsteuerungsendpunkt sowie einen Workflowhostingendpunkt. Der Anwendungsendpunkt empfängt Meldungen für eine spezifische Workflowinstanz. Der Workflowsteuerungsendpunkt lauscht auf Steuerungsvorgänge. Der Workflowhostingendpunkt lauscht auf Meldungen, die bewirken, dass WorkflowServiceHost geladen wird und Workflows ausgeführt werden, die keine Dienstworkflows sind. Alle Meldungen werden, wie im Diagramm gezeigt, von der WCF-Laufzeit verarbeitet. Die Einschränkung von Workflowdienstinstanzen wird mit der MaxConcurrentInstances-Eigenschaft erreicht. Diese Eigenschaft schränkt die Anzahl von gleichzeitigen Workflowdienstinstanzen ein. Wenn diese Drosselung überschritten wird, werden zusätzliche Anforderungen für neue Workflowdienstinstanzen oder Anforderungen zum Aktivieren beibehaltener Workflowinstanzen in einer Warteschlange gespeichert. Die in der Warteschlange gespeicherten Anforderungen werden in FIFO-Reihenfolge verarbeitet, unabhängig davon, ob sie Anforderungen für eine neue Instanz oder eine ausgeführte, beibehaltene Instanz sind. Hostrichtlinieninformationen werden geladen, um festzulegen, wie Ausnahmefehler gehandhabt und Workflowdienste im Leerlauf entladen und beibehalten werden. Weitere Informationen zu diesen Themen finden Sie unter Vorgehensweise: Konfigurieren des Verhaltens bei nicht behandelten Ausnahmen für Workflows mit WorkflowServiceHost und Vorgehensweise: Konfigurieren des Leerlaufverhaltens mit WorkflowServiceHost. Workflowinstanzen werden gemäß den Hostrichtlinien beibehalten und bei Bedarf erneut geladen. Weitere Informationen zur Workflowpersistenz finden Sie unter: Vorgehensweise: Konfigurieren der Persistenz mit WorkflowServiceHost, Erstellen eines Workflowdiensts mit langer Ausführungszeit und Workflowpersistenz.

Die folgende Abbildung zeigt den Ablauf bei Aufruf von „WorkflowServiceHost.Open“:

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

Der Workflow wird aus XAML geladen, und die Aktivitätsstruktur wird erstellt. WorkflowServiceHost durchläuft die Aktivitätsstruktur und erstellt die Dienstbeschreibung. Die Konfiguration wird auf den Host angewendet. Abschließend beginnt der Host mit dem Lauschen auf eingehende Meldungen.

Die folgende Abbildung veranschaulicht die Vorgehensweise von WorkflowServiceHost beim Empfang einer Meldung für eine Receive-Aktivität, für die „CanCreateInstance“ auf true festgelegt ist:

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

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet. Drosselungen werden überprüft und Korrelationsabfragen ausgeführt. Wenn die Meldung an eine vorhandene Instanz gerichtet ist, wird sie übermittelt. Wenn eine neue Instanz erstellt werden muss, wird die Receive-Aktivität der CanCreateInstance-Eigenschaft überprüft. Wenn die Eigenschaft auf True festgelegt ist, wird eine neue Instanz erstellt, und die Meldung wird übermittelt.

In der folgenden Abbildung wird die Vorgehensweise von WorkflowServiceHost beim Empfangen einer Meldung für eine Receive-Aktivität veranschaulicht, deren CanCreateInstance auf False festgelegt ist.

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

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet. Drosselungen werden überprüft und Korrelationsabfragen ausgeführt. Die Meldung ist für eine vorhandene Instanz bestimmt (CanCreateInstance ist auf False festgelegt). Daher wird die Instanz aus dem Persistenzspeicher geladen, das Lesezeichen wird wiederaufgenommen, und der Workflow wird ausgeführt.

Warnung

Der Workflowdiensthost kann nicht geöffnet werden, wenn SQL Server nur zum Lauschen auf das NamedPipe-Protokoll konfiguriert wurde.

Siehe auch