Workflowsteuerungsendpunkt
Der Workflowsteuerungsendpunkt ermöglicht Entwicklern das Aufrufen von Steuerungsvorgängen, um mit WorkflowServiceHost gehostete Workflowinstanzen remote zu steuern. Diese Funktion kann verwendet werden, um Steuerungsvorgänge wie das Anhalten, Fortsetzen und Beenden programmgesteuert auszuführen.
Warnung
Wenn der Workflowsteuerungsendpunkt innerhalb einer Transaktion verwendet wird und der gesteuerte Workflow eine Persist-Aktivität enthält, wird die Workflowinstanz bis zum Timeout der Transaktion gesperrt.
Workflowinstanzverwaltung
.NET Framework 4.6.1 definiert einen neuen Vertrag namens IWorkflowInstanceManagement. Dieser Vertrag definiert eine Reihe von Steuerungsvorgängen, mit denen Sie von WorkflowServiceHost gehostete Workflowinstanzen remote steuern können. WorkflowControlEndpoint ist ein Standardendpunkt, der eine Implementierung des IWorkflowInstanceManagement-Vertrags bereitstellt. WorkflowControlClient ist eine Klasse, über die Steuerungsvorgänge an den WorkflowControlEndpoint gesendet werden.
Workflowinstanzen können einen der folgenden Zustände aufweisen:
Aktiv
Dies ist der Zustand einer Workflowinstanz vor dem Zustand "Abgeschlossen", falls diese nicht den Zustand "Angehalten" aufweist. In diesem Zustand wird die Workflowinstanz ausgeführt und verarbeitet Anwendungsmeldungen.
Ausgesetzt
In diesem Zustand wird die Workflowinstanz nicht ausgeführt. Dies gilt auch, wenn Aktivitäten vorhanden sind, deren Ausführung noch nicht gestartet wurde oder die nur teilweise ausgeführt wurden.
Abgeschlossen
Der Endzustand einer Workflowinstanz. Die Workflowinstanz kann nicht ausgeführt werden, nachdem sie den Zustand "Abgeschlossen" erreicht hat.
IWorkflowInstanceManagement
Die IWorkflowInstanceManagement-Schnittstelle definiert einen Satz von Steuerungsvorgängen mit synchronen und asynchronen Versionen. Die transaktiven Versionen erfordern die Verwendung einer Bindung, die Transaktionen verarbeiten kann. In der folgenden Tabelle sind die unterstützten Steuerungsvorgänge aufgelistet.
Steuerungsvorgang | BESCHREIBUNG |
---|---|
Abbruch | Erzwingt, dass Ausführung der Workflowinstanz beendet wird. |
Abbrechen | Bewirkt, dass eine Workflowinstanz aus dem Zustand "Aktiv" oder "Angehalten" in den Zustand "Abgeschlossen" wechselt. |
Ausführen | Ermöglicht, dass eine Workflowinstanz ausgeführt wird. |
Angehalten | Bewirkt, dass eine Workflowinstanz aus dem Zustand "Aktiv" in den Zustand "Angehalten" wechselt. |
Terminate | Bewirkt, dass eine Workflowinstanz aus dem Zustand "Aktiv" oder "Angehalten" in den Zustand "Abgeschlossen" wechselt. |
Unsuspend (Fortsetzen) | Bewirkt, dass eine Workflowinstanz aus dem Zustand "Angehalten" in den Zustand "Aktiv" wechselt. |
TransactedCancel | Führt den Vorgang "Abbrechen" im Rahmen einer Transaktion (per Transaktionsfluss vom Client oder lokal erstellt) aus. Wenn das System den permanenten Zustand der Workflowinstanz beibehält, muss die Workflowinstanz während der Ausführung dieses Vorgangs beibehalten werden. |
TransactedRun | Führt den Vorgang "Ausführen" im Rahmen einer Transaktion (per Transaktionsfluss vom Client oder lokal erstellt) aus. Wenn das System den permanenten Zustand der Workflowinstanz beibehält, muss die Workflowinstanz während der Ausführung dieses Vorgangs beibehalten werden. |
TransactedSuspend | Führt den Vorgang "Anhalten" im Rahmen einer Transaktion (per Transaktionsfluss vom Client oder lokal erstellt) aus. Wenn das System den permanenten Zustand der Workflowinstanz beibehält, muss die Workflowinstanz während der Ausführung dieses Vorgangs beibehalten werden. |
TransactedTerminate | Führt den Vorgang "Beenden" im Rahmen einer Transaktion (per Transaktionsfluss vom Client oder lokal erstellt) aus. Wenn das System den permanenten Zustand der Workflowinstanz beibehält, muss die Workflowinstanz während der Ausführung dieses Vorgangs beibehalten werden. |
TransactedUnsuspend | Führt den Vorgang „Fortsetzen“ im Rahmen einer Transaktion (per Transaktionsfluss vom Client oder lokal erstellt) aus. Wenn das System den permanenten Zustand der Workflowinstanz beibehält, muss die Workflowinstanz während der Ausführung dieses Vorgangs beibehalten werden. |
Mit dem IWorkflowInstanceManagement-Vertrag können Sie keine neue Workflowinstanz erstellen, sondern nur vorhandene Workflowinstanzen verwalten. Weitere Informationen zur Remoteerstellung einer neuen Workflowinstanz finden Sie unter Erweiterbarkeit des Workflowdiensthosts.
WorkflowControlEndpoint
WorkflowControlEndpoint ist ein Standardendpunkt mit einem festen Vertrag (IWorkflowInstanceManagement). Wenn dieser Endpunkt einer WorkflowServiceHost-Instanz hinzugefügt wird, kann er zum Senden von Befehlsvorgängen an eine beliebige Workflowinstanz verwendet werden, die von der Hostinstanz gehostet wird. Weitere Informationen zu Standardendpunkten finden Sie unter Standardendpunkte.
WorkflowControlClient
WorkflowControlClient ist eine Klasse, mit der Sie Steuerungsmeldungen an einen WorkflowControlEndpoint auf einem WorkflowServiceHost senden können. Die Klasse enthält eine Methode für jeden einzelnen Vorgang, der vom IWorkflowInstanceManagement-Vertrag unterstützt wird, mit Ausnahme der transaktiven Vorgänge. WorkflowControlClient verwendet die Ambient-Transaktion, um zu ermitteln, ob ein transaktiver Vorgang verwendet werden soll.