Dela via


Anvisningar: Skapa ett tillståndsdatorarbetsflöde

Arbetsflöden kan konstrueras från inbyggda aktiviteter samt från anpassade aktiviteter. Det här avsnittet beskriver hur du skapar ett arbetsflöde som använder både inbyggda aktiviteter som StateMachine aktiviteten och anpassade aktiviteter från föregående How to: Create an Activity-ämne . Arbetsflödet modellerar ett nummer gissande spel.

Kommentar

Varje ämne i självstudiekursen Komma igång beror på föregående avsnitt. För att slutföra det här avsnittet måste du först slutföra Så här: Skapa en aktivitet.

Skapa arbetsflödet

  1. Högerklicka på NumberGuessWorkflowActivities i Solution Explorer och välj Lägg till nytt objekt.

  2. I noden Installerade, Vanliga objekt väljer du Arbetsflöde. Välj Aktivitet i arbetsflödeslistan.

  3. Skriv StateMachineNumberGuessWorkflow i rutan Namn och klicka på Lägg till.

  4. Dra en StateMachine-aktivitet från avsnittet Tillståndsdator i verktygslådan och släpp den på etiketten Släpp aktivitet här på arbetsflödets designyta.

Skapa arbetsflödesvariabler och argument

  1. Dubbelklicka på StateMachineNumberGuessWorkflow.xaml i Solution Explorer för att visa arbetsflödet i designern om det inte redan visas.

  2. Klicka på Argument längst ned till vänster i arbetsflödesdesignern för att visa fönstret Argument .

  3. Klicka på Skapa argument.

  4. Skriv MaxNumber i rutan Namn , välj In i listrutan Riktning , välj Int32 i listrutan Argumenttyp och tryck sedan på RETUR för att spara argumentet.

  5. Klicka på Skapa argument.

  6. Skriv Turns i rutan Namn som ligger under det nyligen tillagda MaxNumber argumentet, välj Ut i listrutan Riktning , välj Int32 i listrutan Argumenttyp och tryck sedan på RETUR.

  7. Klicka på Argument längst ned till vänster i aktivitetsdesignern för att stänga fönstret Argument .

  8. Klicka på Variabler längst ned till vänster i arbetsflödesdesignern för att visa fönstret Variabler .

  9. Klicka på Skapa variabel.

    Dricks

    Om ingen ruta för att skapa variabel visas klickar du på StateMachine aktiviteten på arbetsflödesdesignerns yta för att välja den.

  10. Skriv Guess i rutan Namn , välj Int32 i listrutan Variabeltyp och tryck sedan på RETUR för att spara variabeln.

  11. Klicka på Skapa variabel.

  12. Skriv Target i rutan Namn , välj Int32 i listrutan Variabeltyp och tryck sedan på RETUR för att spara variabeln.

  13. Klicka på Variabler längst ned till vänster i aktivitetsdesignern för att stänga fönstret Variabler .

Så här lägger du till arbetsflödesaktiviteterna

  1. Klicka på Tillstånd1 för att välja det. I fönstret Egenskaper ändrar du DisplayName till Initialize Target.

    Dricks

    Om fönstret Egenskaper inte visas väljer du Egenskapsfönstermenyn Visa .

  2. Dubbelklicka på det nyligen omdöpta tillståndet Initiera mål i arbetsflödesdesignern för att expandera det.

  3. Dra en Tilldela aktivitet från avsnittet Primitiver i verktygslådanoch släpp den till avsnittet Entry i tillståndet. Skriv Target i rutan Till och följande uttryck i rutan Ange ett C#-uttryck eller Ange ett VB-uttryck .

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

    Dricks

    Om fönstret Verktygslåda inte visas väljer du Verktygslådamenyn Visa .

  4. Gå tillbaka till den övergripande tillståndsdatorvyn i arbetsflödesdesignern genom att klicka på StateMachine i sökvägsvisningen överst i arbetsflödesdesignern.

  5. Dra en tillståndsaktivitet från avsnittet Tillståndsdator i verktygslådan till arbetsflödesdesignern och hovra den över tillståndet Initiera mål. Observera att fyra trianglar visas runt tillståndet Initiera mål när det nya tillståndet är över. Släpp det nya tillståndet på triangeln som ligger omedelbart under tillståndet Initiera mål . Detta placerar det nya tillståndet i arbetsflödet och skapar en övergång från tillståndet Initiera mål till det nya tillståndet.

  6. Klicka på Tillstånd1 för att markera det, ändra DisplayName till Enter Guessoch dubbelklicka sedan på tillståndet i arbetsflödesdesignern för att expandera det.

  7. Dra en WriteLine-aktivitet från avsnittet Primitiver i verktygslådanoch släpp den i avsnittet Post i tillståndet.

  8. Skriv följande uttryck i rutan Textegenskap i WriteLine.

    "Please enter a number between 1 and " & MaxNumber  
    
    "Please enter a number between 1 and " + MaxNumber  
    
  9. Dra en Tilldela aktivitet från avsnittet Primitiver i verktygslådanoch släpp den till avsnittet Avsluta i tillståndet.

  10. Skriv Turns i rutan Till och Turns + 1 i rutan Ange ett C#-uttryck eller Ange ett VB-uttryck .

  11. Gå tillbaka till den övergripande tillståndsdatorvyn i arbetsflödesdesignern genom att klicka på StateMachine i sökvägsvisningen överst i arbetsflödesdesignern.

  12. Dra en FinalState-aktivitet från avsnittet Tillståndsdator i verktygslådan, hovra den över tillståndet Ange gissning och släpp den till triangeln som visas till höger om tillståndet Ange gissning så att en övergång skapas mellan Enter Guess och FinalState.

  13. Standardnamnet för övergången är T2. Klicka på övergången i arbetsflödesdesignern för att välja den och ange dess DisplayName till Gissa rätt. Klicka sedan på och välj FinalState och dra den till höger så att det finns utrymme för att det fullständiga övergångsnamnet ska visas utan att överlägga något av de två tillstånden. Detta gör det enklare att slutföra de återstående stegen i självstudien.

  14. Dubbelklicka på den nyligen omdöpta övergången Gissa rätt i arbetsflödesdesignern för att expandera den.

  15. Dra en ReadInt-aktivitet från avsnittet NumberGuessWorkflowActivities i verktygslådan och släpp den i avsnittet Utlösare i övergången.

  16. I egenskapsfönstret för Aktiviteten ReadInt skriver du "EnterGuess" inklusive citattecken i rutan BookmarkName-egenskapsvärde och skriver Guess i rutan Resultategenskapsvärde

  17. Skriv följande uttryck i rutan Gissa rätt övergångs egenskapsvärde.

    Guess = Target  
    
    Guess == Target  
    
  18. Gå tillbaka till den övergripande tillståndsdatorvyn i arbetsflödesdesignern genom att klicka på StateMachine i sökvägsvisningen överst i arbetsflödesdesignern.

    Kommentar

    En övergång inträffar när utlösarhändelsen tas emot och , om den Conditionfinns, utvärderas till True. För den här övergången, om användarens matchar den slumpmässigt genererade Target, skickas Guess kontrollen till FinalState och arbetsflödet slutförs.

  19. Beroende på om gissningen är korrekt bör arbetsflödet antingen övergå till FinalState eller tillbaka till tillståndet Ange gissning för ett annat försök. Båda övergångarna delar samma utlösare av väntan på att användarens gissning ska tas emot via ReadInt-aktiviteten . Detta kallas för en delad övergång. Om du vill skapa en delad övergång klickar du på cirkeln som anger början på övergången Gissa rätt och drar den till önskat tillstånd. I det här fallet är övergången en självövergång, så dra startpunkten för övergången Gissa rätt och släpp tillbaka den längst ned i tillståndet Ange gissning . När du har skapat övergången väljer du den i arbetsflödesdesignern och anger egenskapen DisplayName till Gissa fel.

    Kommentar

    Delade övergångar kan också skapas inifrån övergångsdesignern genom att klicka på Lägg till delad utlösarövergång längst ned i övergångsdesignern och sedan välja önskat måltillstånd från listrutan Tillgängliga tillstånd för att ansluta .

    Kommentar

    Observera att om Condition en övergång utvärderas till false (eller alla villkor för en delad utlösarövergång utvärderas till false), sker inte övergången och alla utlösare för alla övergångar från tillståndet schemaläggs om. I den här självstudien kan den här situationen inte inträffa på grund av hur villkoren konfigureras (vi har specifika åtgärder för huruvida gissningen är korrekt eller felaktig).

  20. Dubbelklicka på övergången Gissa fel i arbetsflödesdesignern för att expandera den. Observera att utlösaren redan är inställd på samma ReadInt-aktivitet som användes av övergången Gissa rätt .

  21. Skriv följande uttryck i rutan Egenskapsvärde för Villkor .

    Guess <> Target  
    
    Guess != Target  
    
  22. Dra en If-aktivitet från avsnittet Kontrollflöde i verktygslådanoch släpp den i avsnittet Åtgärd i övergången.

  23. Skriv följande uttryck i rutan Om-aktivitetens egenskapsvärde för Villkor .

    Guess < Target
    
  24. Dra två WriteLine-aktiviteter från avsnittet Primitiver i verktygslådan och släpp dem så att en finns i avsnittet Sedan i if-aktiviteten och en finns i avsnittet Else.

  25. Klicka på aktiviteten WriteLine i avsnittet Sedan för att markera den och skriv följande uttryck i rutan Textegenskapsvärde.

    "Your guess is too low."  
    
  26. Klicka på aktiviteten WriteLine i avsnittet Else för att markera den och skriv följande uttryck i rutan Textegenskapsvärde.

    "Your guess is too high."  
    
  27. Gå tillbaka till den övergripande tillståndsdatorvyn i arbetsflödesdesignern genom att klicka på StateMachine i sökvägsvisningen överst i arbetsflödesdesignern.

    I följande exempel visas det slutförda arbetsflödet.

    Illustration that shows the completed state machine workflow.

Skapa arbetsflödet

  1. Tryck på CTRL+SKIFT+B för att skapa lösningen.

    Anvisningar om hur du kör arbetsflödet finns i nästa avsnitt: Så här kör du ett arbetsflöde. Om du redan har slutfört steget Så här: Kör ett arbetsflöde med ett annat arbetsflödesformat och vill köra det med hjälp av tillståndsmaskinens arbetsflöde från det här steget går du vidare till avsnittet Skapa och kör programmet i How to: Kör ett arbetsflöde.

Se även