Grundlegende Konzepte für Windows-Workflows
Dieses Thema gilt für Windows Workflow Foundation 4.
Bei der Workflowentwicklung in .NET Framework, Version 4 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, ein WorkflowInstance-Element zur expliziten Steuerung der Ausführung einer einzelnen Workflowinstanz und ein WorkflowServiceHost-Element 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, definiert in der Regel mit XAML) entwickelt oder neu erstellt werden, entweder mit dem CodeActivity-Element, das 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 der CodeActivity-Klasse und der NativeActivity-Klasse 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.
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. |
Workflowlaufzeit
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
Workflowelemente erhalten Zugriff auf die Workflowlaufzeitumgebung über die ActivityExecutionContext-Klasse. 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 Windows Communication Foundation (WCF)-Dienste mithilfe von Messagingaktivitäten. Workflowdienste werden im WorkflowServiceHost-Element gehostet.
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, wenn eine Nachricht zur Fortsetzung der Ausführung eingeht. WorkflowServiceHost stellt Funktionen für dieses Feature bereit sowie eine erweiterbare Entladerichtlinie. Für Ausführungsblöcke mit Daten, die nicht dauerhaft gespeichert werden können, kann in einer Aktivität mit dem ActivityExecutionContext-Element 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.