Freigeben über


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.