Vorgehensweise: Erstellen eines ZustandsautomatworkflowsHow to: Create a State Machine Workflow

Workflows können aus integrierten Aktivitäten und aus benutzerdefinierten Aktivitäten erstellt werden.Workflows can be constructed from built-in activities as well as from custom activities. In diesem Thema wird Schritt für Schritt beschrieben, wie Sie einen Workflow erstellen, der integrierte Aktivitäten verwendet, z. b. die StateMachine Aktivität, und die benutzerdefinierten Aktivitäten aus dem vorherigen Gewusst wie: Erstellen Sie eine Aktivität Thema.This topic steps through creating a workflow that uses both built-in activities such as the StateMachine activity, and the custom activities from the previous How to: Create an Activity topic. Der Workflow erstellt ein Spiel, das Zahlen errät.The workflow models a number guessing game.

Hinweis

Ein Thema im Lernprogramm "Erste Schritte" hängt jeweils von den vorherigen Themen ab.Each topic in the Getting Started tutorial depends on the previous topics. Um dieses Thema abzuschließen, müssen Sie zuerst Gewusst wie: Erstellen Sie eine Aktivitäts.To complete this topic, you must first complete How to: Create an Activity.

Hinweis

Eine abgeschlossene Version des Tutorials können Sie im Windows Workflow Foundation (WF45) Getting Started Tutorialherunterladen.To download a completed version of the tutorial, see Windows Workflow Foundation (WF45) - Getting Started Tutorial.

So erstellen Sie den WorkflowTo create the workflow

  1. Klicken Sie mit der rechten Maustaste Projektmappen-Explorer auf " numguess Workflow Activities ", und wählen Sie Hinzufügen, Neues Elementaus.Right-click NumberGuessWorkflowActivities in Solution Explorer and select Add, New Item.

  2. Wählen Sie im Knoten installierte, Allgemeine Elemente die Option Workflowaus.In the Installed, Common Items node, select Workflow. Wählen Sie in der Liste Workflow die Option Aktivität aus.Select Activity from the Workflow list.

  3. Geben Sie im Feld Name StateMachineNumberGuessWorkflow ein, und klicken Sie auf Hinzufügen.Type StateMachineNumberGuessWorkflow into the Name box and click Add.

  4. Ziehen Sie eine StateMachine -Aktivität aus dem Abschnitt Zustands Automat der Toolbox , und legen Sie Sie auf der Bezeichnung Aktivität hier ablegen auf der Workflow Entwurfs Oberfläche ab.Drag a StateMachine activity from the State Machine section of the Toolbox and drop it onto the Drop activity here label on the workflow design surface.

So erstellen Sie die Workflowvariablen und -argumenteTo create the workflow variables and arguments

  1. Doppelklicken Sie in Projektmappen-Explorer auf statemachinenumberguess Workflow. XAML , um den Workflow im Designer anzuzeigen, falls er nicht bereits angezeigt wird.Double-click StateMachineNumberGuessWorkflow.xaml in Solution Explorer to display the workflow in the designer, if it is not already displayed.

  2. Klicken Sie Links unten im Workflow-Designer auf Argumente , um den Bereich Argumente anzuzeigen.Click Arguments in the lower-left side of the workflow designer to display the Arguments pane.

  3. Klicken Sie auf Argument erstellen.Click Create Argument.

  4. Geben Sie MaxNumber in das Feld Name ein, wählen Sie in der Dropdown Liste Richtung die Option ein aus, wählen Sie in der Dropdown Liste Argumenttyp die Option Int32 aus, und drücken Sie dann die EINGABETASTE, um das Argument zu speichernType MaxNumber into the Name box, select In from the Direction drop-down list, select Int32 from the Argument type drop-down list, and then press ENTER to save the argument.

  5. Klicken Sie auf Argument erstellen.Click Create Argument.

  6. Geben Sie Turns in das Feld Name ein, das sich unterhalb des neu hinzugefügten MaxNumber Arguments befindet, wählen Sie aus der Dropdown Liste Richtung die Option out aus, wählen Sie Int32 aus der Dropdown Liste Argumenttyp aus, und drücken Sie dann die EINGABETASTE.Type Turns into the Name box that is below the newly added MaxNumber argument, select Out from the Direction drop-down list, select Int32 from the Argument type drop-down list, and then press ENTER.

  7. Klicken Sie Links unten im Aktivitäts-Designer auf Argumente , um den Bereich Argumente zu schließen.Click Arguments in the lower-left side of the activity designer to close the Arguments pane.

  8. Klicken Sie Links unten im Workflow-Designer auf Variablen , um den Bereich Variablen anzuzeigen.Click Variables in the lower-left side of the workflow designer to display the Variables pane.

  9. Klicken Sie auf Variable erstellen.Click Create Variable.

    Tipp

    Wenn das Feld Variable erstellen nicht angezeigt wird, klicken Sie auf der Oberfläche des Workflow-Designers auf die StateMachine Aktivität, um Sie auszuwählen.If no Create Variable box is displayed, click the StateMachine activity on the workflow designer surface to select it.

  10. Geben Sie Guess in das Feld Name ein, wählen Sie Int32 aus der Dropdown Liste Variablentyp aus, und drücken Sie dann die EINGABETASTE, um die Variable zu speichernType Guess into the Name box, select Int32 from the Variable type drop-down list, and then press ENTER to save the variable.

  11. Klicken Sie auf Variable erstellen.Click Create Variable.

  12. Geben Sie Target in das Feld Name ein, wählen Sie Int32 aus der Dropdown Liste Variablentyp aus, und drücken Sie dann die EINGABETASTE, um die Variable zu speichernType Target into the Name box, select Int32 from the Variable type drop-down list, and then press ENTER to save the variable.

  13. Klicken Sie Links unten im Aktivitäts-Designer auf Variablen , um den Bereich Variablen zu schließen.Click Variables in the lower-left side of the activity designer to close the Variables pane.

So fügen Sie die Workflowaktivitäten hinzuTo add the workflow activities

  1. Klicken Sie auf state1 , um es auszuwählen.Click State1 to select it. Ändern Sie im Fenster Eigenschaftenden Display Name in Initialize Target.In the Properties Window, change the DisplayName to Initialize Target.

    Tipp

    Wenn das Fenster Eigenschaften nicht angezeigt wird, wählen Sie im Menü Ansicht die Option Eigenschaften Fenster aus.If the Properties Window is not displayed, select Properties Window from the View menu.

  2. Doppelklicken Sie auf den neu umbenannten Zustand Ziel initialisieren im Workflow-Designer, um ihn zu erweitern.Double-click the newly renamed Initialize Target state in the workflow designer to expand it.

  3. Ziehen Sie eine assign -Aktivität aus dem Abschnitt primitive der Toolbox , und legen Sie Sie auf dem Abschnitt Entry des Zustands ab.Drag an Assign activity from the Primitives section of the Toolbox and drop it onto the Entry section of the state. Geben Sie Target in das Feld an und den folgenden Ausdruck in das Feld C# Ausdruck eingeben oder VB-Ausdruck eingeben ein .Type Target into the To box and the following expression into the Enter a C# expression or Enter a VB expression box.

    New System.Random().Next(1, MaxNumber + 1)  
    
    new System.Random().Next(1, MaxNumber + 1)  
    

    Tipp

    Wenn das Fenster Toolbox nicht angezeigt wird, wählen Sie im Menü Ansicht die Option Toolbox aus.If the Toolbox window is not displayed, select Toolbox from the View menu.

  4. Kehren Sie im Workflow-Designer zur Ansicht Gesamt Zustands Automat zurück, indem Sie in der Breadcrumb-Anzeige am oberen Rand des Workflow-Designers auf StateMachine klicken.Return to the overall state machine view in the workflow designer by clicking StateMachine in the breadcrumb display at the top of the workflow designer.

  5. Ziehen Sie eine State -Aktivität aus dem Abschnitt Zustands Automat der Toolbox auf den Workflow-Designer, und bewegen Sie den Mauszeiger über den Zustand Ziel initialisieren .Drag a State activity from the State Machine section of the Toolbox onto the workflow designer and hover it over the Initialize Target state. Beachten Sie, dass vier Dreiecke um den Initialisierungs Ziel Status angezeigt werden, wenn sich der neue Status darüber befindet.Note that four triangles will appear around the Initialize Target state when the new state is over it. Legen Sie den neuen Zustand auf dem Dreieck ab, das sich direkt unterhalb des Ziel Zustands initialisieren befindet.Drop the new state on the triangle that is immediately below the Initialize Target state. Dadurch wird der neue Zustand auf dem Workflow platziert, und es wird ein Übergang vom Zustand " Initialize Target " in den neuen Zustand erstellt.This places the new state onto the workflow and creates a transition from the Initialize Target state to the new state.

  6. Klicken Sie auf state1 , um es auszuwählen, ändern Sie Display Name in Enter Guess, und doppelklicken Sie dann auf den Zustand im Workflow-Designer, um ihn zu erweitern.Click State1 to select it, change the DisplayName to Enter Guess, and then double-click the state in the workflow designer to expand it.

  7. Ziehen Sie eine " Write teline "-Aktivität aus dem Abschnitt primitive der Toolbox , und legen Sie Sie auf dem Abschnitt Entry des Zustands ab.Drag a WriteLine activity from the Primitives section of the Toolbox and drop it onto the Entry section of the state.

  8. Geben Sie den folgenden Ausdruck in das Text -Eigenschaften Feld von " Write teline" ein.Type the following expression into the Text property box of the WriteLine.

    "Please enter a number between 1 and " & MaxNumber  
    
    "Please enter a number between 1 and " + MaxNumber  
    
  9. Ziehen Sie eine assign -Aktivität aus dem Abschnitt primitive der Toolbox , und legen Sie Sie auf dem Exit -Abschnitt des Zustands ab.Drag an Assign activity from the Primitives section of the Toolbox and drop onto the Exit section of the state.

  10. Geben Sie Turns in das Feld an ein C# , und Turns + 1 Sie in das Feld Ausdruck eingeben oder VB-Ausdruck eingeben .Type Turns into the To box and Turns + 1 into the Enter a C# expression or Enter a VB expression box.

  11. Kehren Sie im Workflow-Designer zur Ansicht Gesamt Zustands Automat zurück, indem Sie in der Breadcrumb-Anzeige am oberen Rand des Workflow-Designers auf StateMachine klicken.Return to the overall state machine view in the workflow designer by clicking StateMachine in the breadcrumb display at the top of the workflow designer.

  12. Ziehen Sie eine FinalState -Aktivität aus dem Abschnitt Zustands Automat der Toolbox, zeigen Sie mit dem Mauszeiger auf den Status Enter Guess , und legen Sie ihn auf dem Dreieck ab, das rechts neben dem Status Eingabe Raten angezeigt wird, sodass ein Übergang zwischen Enter Guess und FinalStateerstellt wird.Drag a FinalState activity from the State Machine section of the Toolbox, hover it over the Enter Guess state, and drop it onto the triangle that appears to the right of the Enter Guess state so that a transition is created between Enter Guess and FinalState.

  13. Der Standardname des Übergangs ist T2.The default name of the transition is T2. Klicken Sie auf den Übergang im Workflow-Designer, um ihn auszuwählen, und legen Sie dessen Display Name auf Guess correctfest.Click the transition in the workflow designer to select it, and set its DisplayName to Guess Correct. Klicken Sie anschließend auf FinalState, und ziehen Sie ihn nach rechts, damit genügend Platz vorhanden ist, damit der vollständige Übergangs Name angezeigt wird, ohne einen der beiden Zustände zu überlagern.Then click and select the FinalState, and drag it to the right so that there is room for the full transition name to be displayed without overlaying either of the two states. Das vereinfacht die Ausführung der verbleibenden Schritte im Lernprogramm.This will make it easier to complete the remaining steps in the tutorial.

  14. Doppelklicken Sie im Workflow-Designer auf den neu umbenannten Abschnitt " Guess correct ", um ihn zu erweitern.Double-click the newly renamed Guess Correct transition in the workflow designer to expand it.

  15. Ziehen Sie eine Aktivität "read int " aus dem Abschnitt " nummeriguess Workflow Activities " der Toolbox , und legen Sie Sie im triggerabschnitt des Übergangs ab.Drag a ReadInt activity from the NumberGuessWorkflowActivities section of the Toolbox and drop it in the Trigger section of the transition.

  16. Geben Sie im Eigenschaften Fenster für die Aktivität "read int " "EnterGuess" einschließlich der Anführungszeichen in das Feld BookmarkName -Eigenschafts Wert ein, und geben Sie Guess in das Feld Ergebnis Eigenschafts Wert ein.In the Properties Window for the ReadInt activity, type "EnterGuess" including the quotes into the BookmarkName property value box, and type Guess into the Result property value box

  17. Geben Sie den folgenden Ausdruck in das Feld Eigenschafts Wert des Bedingungs Werts des Übergangs erraten ein.Type the following expression into the Guess Correct transition’s Condition property value box.

    Guess = Target  
    
    Guess == Target  
    
  18. Kehren Sie im Workflow-Designer zur Ansicht Gesamt Zustands Automat zurück, indem Sie in der Breadcrumb-Anzeige am oberen Rand des Workflow-Designers auf StateMachine klicken.Return to the overall state machine view in the workflow designer by clicking StateMachine in the breadcrumb display at the top of the workflow designer.

    Hinweis

    Ein Übergang erfolgt, wenn das Triggerereignis empfangen wird und Condition, falls vorhanden, True ergibt.A transition occurs when the trigger event is received and the Condition, if present, evaluates to True. Wenn die Guess des Benutzers mit der zufällig generierten Targetübereinstimmt, übergibt die Steuerung für diesen Übergang an den FinalState , und der Workflow wird beendet.For this transition, if the user’s Guess matches the randomly generated Target, then control passes to the FinalState and the workflow completes.

  19. Abhängig davon, ob der Schätzwert richtig ist, sollte der Workflow für einen anderen Versuch entweder in den FinalState oder zurück in den Zustand " Enter Guess " übergehen.Depending on whether the guess is correct, the workflow should transition either to the FinalState or back to the Enter Guess state for another try. Beide Übergänge verwenden denselben-Triggern, der darauf wartet, dass die Schätzung des Benutzers über die Read int -Aktivität empfangen wird.Both transitions share the same trigger of waiting for the user’s guess to be received via the ReadInt activity. Dies wird als gemeinsamer Übergang bezeichnet.This is called a shared transition. Um einen freigegebenen Übergang zu erstellen, klicken Sie auf den Kreis, der den Anfang des korrekten Guess -Übergangs angibt, und ziehen Sie ihn in den gewünschten Zustand.To create a shared transition, click the circle that indicates the start of the Guess Correct transition and drag it to the desired state. In diesem Fall handelt es sich bei dem Übergang um einen selbst Übergang. ziehen Sie daher den Startpunkt des über-/Unterbrechungs -Übergangs, und legen Sie ihn wieder am unteren Ende des Zustands für die Eingabe Vermutung abIn this case the transition is a self-transition, so drag the start point of the Guess Correct transition and drop it back onto the bottom of the Enter Guess state. Nachdem Sie den Übergang erstellt haben, wählen Sie ihn im Workflow-Designer aus, und legen Sie dessen Eigenschaft Display Name auf nicht richtigfest.After creating the transition, select it in the workflow designer and set its DisplayName property to Guess Incorrect.

    Hinweis

    Freigegebene Übergänge können auch aus dem Übergangs-Designer erstellt werden, indem Sie im unteren Bereich des Übergangs-Designers auf frei gegebenen triggerübergang hinzufügen klicken und dann den gewünschten Ziel Status aus der Dropdown Liste Verfügbare Zustände zum Verbinden auswählen.Shared transitions can also be created from within the transition designer by clicking Add shared trigger transition at the bottom of the transition designer, and then selecting the desired target state from the Available states to connect drop-down.

    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.Note that if the Condition of a transition evaluates to false (or all of the conditions of a shared trigger transition evaluate to false), the transition will not occur and all triggers for all the transitions from the state will be rescheduled. In diesem Lernprogramm kann diese Situation aufgrund der Konfigurationsmethode für die Bedingungen (es gibt spezielle Aktionen für richtige oder falsche Schätzungen) nicht auftreten.In this tutorial, this situation cannot happen because of the way the conditions are configured (we have specific actions for whether the guess is correct or incorrect).

  20. Doppelklicken Sie im Workflow-Designer auf den Übergang erraten , um ihn zu erweitern.Double-click the Guess Incorrect transition in the workflow designer to expand it. Beachten Sie, dass der- Triggerwert bereits auf die gleiche Read int -Aktivität festgelegt ist , die von der falschen Übertragung verwendet wurde.Note that the Trigger is already set to the same ReadInt activity that was used by the Guess Correct transition.

  21. Geben Sie im Feld Bedingungs Eigenschaften Wert den folgenden Ausdruck ein.Type the following expression into the Condition property value box.

    Guess <> Target  
    
    Guess != Target  
    
  22. Ziehen Sie eine if -Aktivität aus dem Abschnitt Ablauf Steuerung der Toolbox , und legen Sie Sie im Abschnitt Aktion des Übergangs ab.Drag an If activity from the Control Flow section of the Toolbox and drop it in the Action section of the transition.

  23. Geben Sie den folgenden Ausdruck in das Feld Bedingungs Eigenschafts Wert der if -Aktivität ein.Type the following expression into the If activity’s Condition property value box.

    Guess < Target
    
  24. Ziehen Sie zwei Write -Aktivitäten aus dem Abschnitt primitive der Toolbox , und legen Sie diese so ab, dass Sie sich im Then -Abschnitt der if -Aktivität befinden und eine im Abschnitt else .Drag two WriteLine activities from the Primitives section of the Toolbox and drop them so that one is in the Then section of the If activity, and one is in the Else section.

  25. Klicken Sie im Abschnitt Then auf die Aktivität Write -Aktivität, um Sie auszuwählen, und geben Sie den folgenden Ausdruck in das Feld Text -Eigenschafts Wert ein.Click the WriteLine activity in the Then section to select it, and type the following expression into the Text property value box.

    "Your guess is too low."  
    
  26. Klicken Sie im Abschnitt else auf die Aktivität Write -Aktivität, um Sie auszuwählen, und geben Sie den folgenden Ausdruck in das Feld Text -Eigenschafts Wert ein.Click the WriteLine activity in the Else section to select it, and type the following expression into the Text property value box.

    "Your guess is too high."  
    
  27. Kehren Sie im Workflow-Designer zur Ansicht Gesamt Zustands Automat zurück, indem Sie in der Breadcrumb-Anzeige am oberen Rand des Workflow-Designers auf StateMachine klicken.Return to the overall state machine view in the workflow designer by clicking StateMachine in the breadcrumb display at the top of the workflow designer.

    Im folgenden Beispiel wird der abgeschlossene Workflow dargestellt.The following example illustrates the completed workflow.

    Die Abbildung zeigt den abgeschlossenen Zustandsautomatworkflow.

So erstellen Sie den WorkflowTo build the workflow

  1. Drücken Sie STRG+UMSCHALT+B, um die Projektmappe zu erstellen.Press CTRL+SHIFT+B to build the solution.

    Anweisungen zum Ausführen des Workflows finden Sie im nächsten Thema Vorgehensweise: Führt einen Workflowaus.For instructions on how to run the workflow, please see the next topic, How to: Run a Workflow. Wenn Sie die bereits abgeschlossen haben, Vorgehensweise: Führen Sie einen Workflow Schritt mit einem anderen Workflow Workflow aus, und möchten Sie ihn mit dem Zustandsautomatworkflow aus diesem Schritt ausführen, gehen Sie zum Abschnitt so Erstellen und führen Sie die Anwendung aus Gewusst wie: Führt einen Workflow aus.If you have already completed the How to: Run a Workflow step with a different style of workflow and wish to run it using the state machine workflow from this step, skip ahead to the To build and run the application section of How to: Run a Workflow.

Siehe auchSee also