Freigeben über


Interne Funktionsweise des Workflowdiensthosts

WorkflowServiceHost stellt einen Host für Workflowdienste bereit. Sie ist für das Überwachen eingehender Nachrichten und das Weiterleiten an die entsprechende Workflowdienstinstanz verantwortlich, steuert das Entladen und Beibehalten von Leerlaufworkflows und vieles mehr. In diesem Thema wird beschrieben, wie WorkflowServiceHost eingehende Nachrichten verarbeitet.

WorkflowServiceHost -Übersicht

Die WorkflowServiceHost Klasse wird zum Hosten von Workflowdiensten verwendet. Er lauscht auf eingehende Nachrichten und leitet sie an die entsprechende Dienstinstanz weiter, erstellt neue Instanzen oder lädt vorhandene Instanzen nach Bedarf aus dauerhaftem Speicher. Das folgende Diagramm veranschaulicht auf hoher Ebene die Funktionsweise von WorkflowServiceHost.

Diagramm, das eine Übersicht über den Host des Workflow-Dienstes zeigt.

Dieses Diagramm zeigt, dass WorkflowServiceHost Workflowdienstdefinitionen aus XAMLX-Dateien geladen 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 Workflow-Control-Endpoint.

WorkflowServiceHost Macht auch Anwendungsendpunkte verfügbar, die auf eingehende Anwendungsnachrichten lauschen. Wenn eine eingehende Nachricht eingeht, wird sie an die entsprechende Workflowdienstinstanz gesendet (wenn sie derzeit geladen ist). Bei Bedarf wird eine neue Workflowinstanz erstellt. Oder wenn eine vorhandene Instanz beibehalten wurde, wird sie aus dem Persistenzspeicher geladen.

Details des WorkflowServiceHost

Das folgende Diagramm zeigt, wie WorkflowServiceHost Nachrichten etwas ausführlicher behandelt:

Diagramm, das den Workflowdiensthost-Nachrichtenfluss zeigt.

Dieses Diagramm zeigt drei verschiedene Endpunkte, einen Anwendungsendpunkt, einen Workflowsteuerungsendpunkt und einen Workflowhostingendpunkt. Der Anwendungsendpunkt empfängt Nachrichten, die für eine bestimmte Workflowinstanz gebunden sind. Der Endpunkt für die Workflow-Steuerung lauscht auf Steuerungsvorgänge. Der Workflow-Hosting-Endpunkt lauscht auf Nachrichten, die dazu führen, dass WorkflowServiceHost Nicht-Dienst-Workflows geladen und ausgeführt werden. Wie im Diagramm dargestellt, werden alle Nachrichten über die WCF-Runtime verarbeitet. Die Einschränkung von Workflowdienstinstanzen wird mit der MaxConcurrentInstances-Eigenschaft erreicht. Diese Eigenschaft beschränkt die Anzahl gleichzeitiger Workflowdienstinstanzen. 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 die Warteschlange eingereihten Anforderungen werden in FIFO-Reihenfolge verarbeitet, unabhängig davon, ob sie Anforderungen für eine neue Instanz oder eine ausgeführte, permanente Instanz sind. Informationen zu den Hostrichtlinien werden geladen, die festlegen, wie unbehandelte Ausnahmen behandelt werden, und wie Leerlauf-Workflowdienste entladen und gespeichert werden. Weitere Informationen zu diesen Themen finden Sie unter So konfigurieren Sie das WorkflowVerhalten für unbehandelte Ausnahmen mit WorkflowServiceHost und So konfigurieren Sie das Leerlaufverhalten mit WorkflowServiceHost. Workflowinstanzen werden gemäß Hostrichtlinien beibehalten und bei Bedarf neu geladen. Weitere Informationen zur Workflowpersistenz finden Sie unter : How to: Configure Persistence with WorkflowServiceHost, Creating a Long-running Workflow Service, and Workflow Persistence.

Die folgende Abbildung zeigt den Ablauf, wenn WorkflowServiceHost.Open aufgerufen wird:

Diagramm, das den Fluss zeigt, wenn WorkflowServiceHost.Open aufgerufen wird.

Der Workflow wird aus XAML geladen, und die Aktivitätsstruktur wird erstellt. WorkflowServiceHost durchläuft den Aktivitätsbaum und erstellt die Dienstbeschreibung. Die Konfiguration wird auf den Host angewendet. Schließlich beginnt der Host mit dem Empfangen eingehender Nachrichten.

Die folgende Abbildung zeigt, was WorkflowServiceHost tut, wenn es eine Nachricht für eine Empfangsaktivität empfängt, bei der CanCreateInstance auf true gesetzt ist.

Entscheidungsstruktur, die vom WFS-Host verwendet wird, wenn sie eine Nachricht empfängt und CanCreateInstance wahr ist.

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet. Drosselungen werden überprüft und Korrelationsabfragen ausgeführt. Wenn die Nachricht für eine vorhandene Instanz gebunden ist, wird die Nachricht zugestellt. Wenn eine neue Instanz erstellt werden muss, wird die CanCreateInstance-Eigenschaft der Empfangsaktivität überprüft. Wenn sie auf "true" festgelegt ist, wird eine neue Instanz erstellt, und die Nachricht wird übermittelt.

Die folgende Abbildung zeigt, was WorkflowServiceHost macht, wenn es eine Nachricht erhält, die für einen Empfangsvorgang bestimmt ist und "CanCreateInstance" auf "false" festgelegt hat.

Entscheidungsstruktur, die vom WFS-Host verwendet wird, wenn sie eine Nachricht empfängt, und CanCreateInstance ist

Die Meldung wird empfangen und vom WCF-Kanalstapel verarbeitet. Drosselungen werden überprüft und Korrelationsabfragen ausgeführt. Die Nachricht ist für eine vorhandene Instanz gebunden (da CanCreateInstance falsch ist), sodass die Instanz aus dem Persistenzspeicher geladen wird, die Textmarke fortgesetzt wird und der Workflow ausgeführt wird.

Warnung

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

Siehe auch