Zustandsautomatworkflows

Ein Zustandsautomat ist ein bekanntes Paradigma zum Entwickeln von Anwendungen. Die StateMachine-Aktivität kann zusammen mit State, Transition und anderen Aktivitäten verwendet werden, um Zustandsautomatenworkflow-Programme zu erstellen. Dieses Thema bietet eine Übersicht über das Erstellen von Zustandsautomatenworkflows.

Übersicht über Zustandsautomatenworkflows

Zustandsautomatenworkflows bieten eine Möglichkeit, Workflows in einer ereignisgesteuerten Weise zu modellieren. Eine StateMachine-Aktivität enthält die Zustände und Übergänge, aus denen sich die Logik des Zustandsautomaten aufbaut, und kann überall dort verwendet werden, wo eine Aktivität verwendet werden kann. Es gibt mehrere Klassen in der Zustandsautomat-Laufzeit:

Um einen Zustandsautomatenworkflow zu erstellen, werden die Zustände einer StateMachine-Aktivität hinzugefügt. Übergänge werden verwendet, um den Fluss zwischen den Zuständen zu steuern. Der folgende Screenshot aus dem Erste Schritte-TutorialschrittGewusst wie: Erstellen eines Zustandsautomatworkflows: zeigt einen Zustandsautomatworkflow mit drei Zuständen und drei Übergängen. Ziel initialisieren ist der Anfangszustand und stellt den ersten Zustand im Workflow dar. Dieser ist an der Linie erkennbar, die vom Knoten Start zum Zustand führt. Der Endzustand im Workflow hat den Namen FinalState und stellt den Punkt dar, an dem der Workflow abgeschlossen ist.

Illustration that shows the completed state machine workflow.

Ein Zustandsautomatenworkflow muss über genau einen Anfangszustand und mindestens einen Endzustand verfügen. Jeder Zustand, der kein Endzustand ist, muss mindestens einen Übergang enthalten. In den folgenden Abschnitten wird das Erstellen und Konfigurieren von Zuständen und Übergängen erläutert.

Erstellen und Konfigurieren von Zuständen

State stellt einen Zustand dar, in dem sich ein Zustandsautomat befinden kann. Um einem Workflow einen State hinzuzufügen, ziehen Sie den Zustands-Aktivitätsdesigner aus dem Abschnitt Zustandsautomat der Toolbox und fügen ihn auf einer StateMachine-Aktivität auf der Windows-Workflow-Designer-Oberfläche ein.

Screenshot of the State Machine section of the Toolbox.

Um einen Zustand als Anfangszustand zu konfigurieren, klicken Sie mit der rechten Maustaste auf den Zustand und wählen Als Anfangszustand festlegen aus. Wenn derzeit kein Anfangszustand vorhanden ist, kann dieser auch festgelegt werden, indem eine Linie vom Knoten Start am oberen Rand des Workflows zum gewünschten Zustand gezogen wird. Wenn eine StateMachine-Aktivität im Workflow-Designer abgelegt wird, wird sie mit einem Anfangszustand mit dem Namen State1 vorkonfiguriert. Ein Zustandsautomatenworkflow muss über genau einen Anfangszustand verfügen.

Ein Zustand, der einen beendenden Zustand in einem Zustandsautomaten darstellt, wird als Endzustand bezeichnet. Ein Endzustand ist ein Zustand, dessen IsFinal-Eigenschaft auf true festgelegt ist, der keine Exit-Aktivität aufweist und von dem keine Übergänge ausgehen. Um einem Workflow einen Endzustand hinzuzufügen, ziehen Sie den FinalState-Aktivitätsdesigner aus dem Abschnitt Zustandsautomat der Toolbox und fügen ihn auf einer StateMachine-Aktivität auf der Windows-Workflow-Designer-Oberfläche ein. Ein Zustandsautomatenworkflow muss über mindestens einen Endzustand verfügen.

Konfigurieren von Eingangs- und Ausgangsaktionen

Ein Zustand kann über eine Entry-Aktion und eine Exit-Aktion verfügen. (Ein als Endzustand konfigurierter Zustand darf nur über eine Eingangsaktion verfügen.) Wenn eine Workflowinstanz in einen Zustand wechselt, werden alle Aktivitäten in der Eingangsaktion ausgeführt. Wenn die Eingangsaktion abgeschlossen ist, werden die Trigger für die Übergänge des Zustands geplant. Wenn ein Übergang zu einem anderen Status bestätigt wird, werden die Aktivitäten in der Ausgangsaktion auch dann ausgeführt, wenn der Zustand wieder in denselben Zustand übergeht. Nachdem die Ausgangsaktion abgeschlossen wurde, werden die Aktivitäten in der Aktion des Übergangs ausgeführt. Anschließend findet ein Übergang in den neuen Zustand statt, und dessen Eingangsaktionen werden geplant.

Hinweis

Wenn Sie einen Zustandsautomatenworkflow debuggen, können Haltepunkte für die Stammaktivität des Zustandsautomaten und für Zustände innerhalb des Zustandsautomatenworkflows festgelegt werden. Haltepunkte können nicht direkt in die Übergänge eingefügt werden, sie können jedoch für alle Aktivitäten festgelegt werden, die in den Zuständen und Übergängen enthalten sind.

Erstellen und Konfigurieren von Übergängen

Alle Zustände mit Ausnahme des Endzustands, der keine Übergänge aufweisen darf, müssen über mindestens einen Übergang verfügen. Übergänge können hinzugefügt werden, nachdem ein Zustand einem Zustandsautomatenworkflow hinzugefügt wurde, oder sie können beim Ablegen des Zustands erstellt werden.

Um in einem Schritt einen State hinzuzufügen und einen Übergang zu erstellen, ziehen Sie eine Zustands-Aktivität aus dem Abschnitt Zustandsautomat der Toolboxüber einen anderen Zustand im Workflow-Designer. Sobald sich der gezogene State über einem anderen State befindet, werden vier Dreiecke um den anderen State herum eingeblendet. Wenn State auf einem der vier Dreiecke abgelegt wird, wird er dem Zustandsautomaten hinzugefügt, und es wird ein Übergang vom Quell-State zum abgelegten Ziel-State erstellt. Weitere Informationen finden Sie unter Transition-Aktivitäts-Designer.

Um einen Übergang zu erstellen, nachdem ein Zustand hinzugefügt wurde, gibt es zwei Möglichkeiten. Die erste Möglichkeit besteht darin, den Zustand aus der Workflow-Designeroberfläche auf einen vorhandenen Zustand zu ziehen und auf einem der Ablegepunkte abzulegen. Diese Methode ähnelt derjenigen, die im vorherigen Abschnitt beschrieben wird. Sie können auch mit der Maus auf den gewünschten Quellzustand zeigen und eine Linie zum gewünschten Zielzustand ziehen.

Hinweis

Ein einzelner Zustand eines Zustandsautomaten kann bis zu 76 Übergänge aufweisen, die mithilfe des Workflow-Designers erstellt wurden. Die Anzahl der Zustandsübergänge für Workflows, die außerhalb des Designers erstellt werden, wird nur durch die verfügbaren Systemressourcen beschränkt.

Ein Übergang kann über Trigger, Condition und Action verfügen. Der Trigger eines Übergangs wird geplant, wenn die Entry-Aktion der Quelle des Übergangs abgeschlossen ist. In der Regel ist Trigger eine Aktivität, die darauf wartet, dass ein Ereignis eintritt. Er kann jedoch auch eine beliebige oder gar keine Aktivität darstellen. Sobald die Trigger-Aktivität abgeschlossen ist, wird Condition ausgewertet, falls vorhanden. Wenn keine Trigger-Aktivität vorhanden ist, wird Condition sofort ausgewertet. Wenn die Bedingung false ergibt, wird der Übergang abgebrochen und die Trigger-Aktivität für alle Übergänge aus dem Zustand neu geplant. Sind andere Übergänge vorhanden, die den gleichen Quellzustand wie der aktuelle Übergang aufweisen, werden diese Trigger-Aktionen ebenfalls abgebrochen und neu geplant. Wenn Conditiontrue ergibt oder keine Bedingung vorhanden ist, wird die Exit-Aktion des Quellzustands ausgeführt, und dann wird Action des Übergangs ausgeführt. Wenn Action abgeschlossen wird, wird die Steuerung an den Zielzustand übergeben

Übergänge, die einen gemeinsamen Trigger verwenden, werden als gemeinsamer Triggerübergang bezeichnet. Jeder Übergang in einer Gruppe von gemeinsamen Triggerübergängen verfügt über denselben Trigger, aber über eine eindeutige Condition und eine eindeutige Aktion. Um einem Übergang zusätzliche Aktionen hinzuzufügen und einen gemeinsamen Übergang zu erstellen, klicken Sie auf den Kreis, der den Anfang des gewünschten Übergangs angibt, und ziehen Sie ihn auf den gewünschten Zustand. Der neue Übergang verwendet denselben Trigger wie der Anfangsübergang, besitzt jedoch eine eindeutige Bedingung und Aktion. Gemeinsame Übergänge können auch innerhalb des Übergangs-Designers erstellt werden, indem Sie im unteren Bereich des Übergangs-Designers auf Gemeinsamen Triggerübergang hinzufügen klicken und dann den gewünschten Zielzustand aus der Dropdownliste Verfügbare Zustände für Verbindung auswählen.

Hinweis

Wenn die Condition-Aktivität eines Übergangs mit False ausgewertet wird (oder alle Bedingungen eines Übergangs mit freigegebenem Trigger mit False ausgewertet werden), erfolgt der Übergang nicht, und die Trigger aller Übergänge aus dem Zustand werden neu geplant.

Weitere Informationen zum Erstellen von Zustandsautomatworkflows finden Sie unter Gewusst wie: Erstellen eines Zustandsautomatworkflows, StateMachine-Aktivitätsdesigner, Zustandsaktivitätsdesigner, FinalState-Aktivitätsdesigner und Übergangsaktivitätsdesigner.

Terminologie für Zustandsautomaten

In diesem Abschnitt werden die in diesem Thema verwendeten Begriffe im Hinblick auf Zustandsautomaten erläutert.

State
Die Basiseinheit, aus der ein Zustandsautomat besteht. Ein Zustandsautomat kann zu einem bestimmten Zeitpunkt jeweils einen Zustand aufweisen.

Eingangsaktion
Eine Aktivität, die beim Eintritt in den Zustand ausgeführt wird.

Ausgangsaktion
Eine Aktivität, die beim Austritt aus dem Zustand ausgeführt wird.

Übergang
Eine spezielle Beziehung zwischen zwei Zuständen, die die vollständige Antwort eines Zustandsautomaten auf das Eintreten eines Ereignisses eines bestimmten Typs darstellt.

Gemeinsamer Übergang
Ein Übergang, der denselben Quellzustand und Trigger wie mindestens ein anderer Übergang verwendet, jedoch über eine eindeutige Bedingung und Aktion verfügt.

Trigger
Eine Triggeraktivität, die einen Übergang auslöst.

Bedingung
Eine Einschränkung, die nach dem Auftreten des Triggers true ergeben muss, damit der Übergang abgeschlossen wird.

Übergangsaktion
Eine Aktivität, die ausgeführt wird, wenn ein bestimmter Übergang ausgeführt wird.

Bedingter Übergang
Ein Übergang mit einer expliziten Bedingung.

Selbstübergang
Ein Übergang, der von einem Zustand in denselben Übergang übergeht.

Anfangszustand
Ein Zustand, der den Anfangspunkt des Zustandsautomaten darstellt.

Endzustand
Ein Zustand, der den Abschluss des Zustandsautomaten darstellt.

Siehe auch