Grundlegende Konzepte für Windows-Workflows
Bei der Workflowentwicklung in .NET Framework 4.6.1 werden Konzepte verwendet, die für einige Entwickler möglicherweise neu sind. In diesem Thema werden einige dieser Konzepte und ihre Implementierung beschrieben.
Workflows und Aktivitäten
Ein Workflow ist eine strukturierte Auflistung von Aktionen zur Modellierung eines Prozesses. Jede Aktion im Workflow wird als Aktivität modelliert. Ein Host verwendet bei der Interaktion mit einem Workflow ein WorkflowInvoker-Element zum Aufrufen eines Workflows wie eine Methode, WorkflowApplication zur expliziten Steuerung der Ausführung einer einzelnen Workflowinstanz und WorkflowServiceHost für nachrichtenbasierte Interaktionen in Szenarios mit mehreren Instanzen. Die Schritte des Workflows setzen sich aus einer Hierarchie von Aktivitäten zusammen, und der Workflow selbst wird durch die Aktivität auf oberster Ebene in der Hierarchie definiert. Dieses Hierarchiemodell tritt an die Stelle der expliziten SequentialWorkflow
-Klasse und StateMachineWorkflow
-Klasse in früheren Versionen. Die einzelnen Aktivitäten können entweder als Auflistungen anderer Aktivitäten (mit der Activity-Klasse als Basis, in der Regel mit XAML definiert) entwickelt oder neu erstellt werden, entweder mit der CodeActivity-Klasse, die die Laufzeit für den Datenzugriff nutzen kann, oder mit der NativeActivity-Klasse, die die Workflowlaufzeit für den Aktivitätsautor verfügbar macht. Mit CodeActivity und NativeActivity entwickelte Aktivitäten werden mit CLR-kompatiblen Sprachen wie C# erstellt.
Aktivitätsdatenmodell
Aktivitäten nutzen die Typen in der folgenden Tabelle zum Speichern und Freigeben von Daten.
Typ | Beschreibung |
---|---|
Variable | Speichert Daten in einer Aktivität. |
Argument | Verschiebt Daten in eine bzw. aus einer Aktivität. |
Ausdruck | Eine Aktivität mit einem eskalierten Rückgabewert in Argumentbindungen. |
Workflow-Laufzeit
Die Workflowlaufzeit ist die Umgebung, in der Workflows ausgeführt werden. WorkflowInvoker ist die einfachste Möglichkeit, einen Workflow auszuführen. Der Host verwendet WorkflowInvoker für folgende Aktionen:
Synchrones Aufrufen eines Workflows
Bereitstellen von Eingabedaten bzw. Abrufen von Ausgabedaten eines Workflows
Hinzufügen von Erweiterungen für Aktivitäten
ActivityInstance ist der threadsichere Proxy, über den Hosts mit der Laufzeit interagieren können. Der Host verwendet ActivityInstance für folgende Aktionen:
Abrufen einer Instanz durch Erstellen oder Laden aus einem Instanzspeicher
Aktivieren von Benachrichtigungen bei Instanzlebenszyklusereignissen
Steuern der Workflowausführung
Bereitstellen von Eingabedaten bzw. Abrufen von Ausgabedaten eines Workflows
Signalisieren einer Workflowfortsetzung und Übergeben von Werten in den Workflow
Aufbewahren von Workflowdaten
Hinzufügen von Erweiterungen für Aktivitäten
Aktivitäten erhalten Zugriff auf die Workflowlaufzeitumgebung, indem sie die entsprechende abgeleitete ActivityContext-Klasse wie NativeActivityContext oder CodeActivityContext verwenden. Sie verwenden diese zum Auflösen von Argumenten und Variablen, zum Planen von untergeordneten Aktivitäten und zu vielen anderen Zwecken.
Dienste
Workflows bieten eine natürliche Möglichkeit zum Implementieren von und zum Zugreifen auf lose verknüpfte Dienste mithilfe von Messagingaktivitäten. Messagingaktivitäten werden auf Grundlage von WCF erstellt und sind der primäre Mechanismus, der verwendet wird, um Daten in einen Workflow einzufügen bzw. daraus abzurufen. Sie können Messagingaktivitäten kombinieren, um beliebige Arten von Nachrichtenaustauschmustern zu modellieren. Weitere Informationen finden Sie unter Messagingaktivitäten. Workflowdienste werden mit der WorkflowServiceHost-Klasse gehostet. Weitere Informationen finden Sie unter Übersicht über das Hosten von Workflowdiensten. Weitere Informationen zu den verschiedenen Workflowdiensten finden Sie unter Workflowdienste.
Persistenz, Entladen und langfristige Workflows
Windows Workflow vereinfacht die Erstellung von langfristigen reaktiven Programmen durch die folgenden Punkte:
Aktivitäten, die auf externe Eingabedaten zugreifen.
Die Möglichkeit zur Erstellung von Bookmark-Objekten, die von einer Host-Listeneranwendung übernommen werden können.
Die Möglichkeit zum Aufbewahren der Daten eines Workflows und zum Entladen des Workflows und zum anschließenden erneuten Laden und Aktivieren des Workflows basierend auf der Wiederaufnahme von Bookmark-Objekten in einem bestimmten Workflow.
Ein Workflow führt kontinuierlich Aktivitäten aus, bis keine Aktivitäten mehr auszuführen sind bzw. bis für alle ausgeführten Aktivitäten eine Eingabe aussteht. Im letzteren Fall befindet sich der Workflow im Leerlauf. Workflows im Leerlauf werden von einem Host häufig entladen und dann neu geladen, um die Ausführung fortzusetzen, wenn eine Nachricht eingeht. WorkflowServiceHost stellt Funktionen für dieses Feature sowie eine erweiterbare Entladerichtlinie bereit. Für Ausführungsblöcke mit Daten im flüchtigen Zustand bzw. anderen Daten, die nicht dauerhaft gespeichert werden können, kann in einer Aktivität mit NoPersistHandle angegeben werden, dass die Daten nicht dauerhaft gespeichert werden sollen. Die Daten eines Workflows können auch mit der Persist-Aktivität explizit auf einem dafür vorgesehenen Speichermedium dauerhaft gespeichert werden.