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
Högerklicka på NumberGuessWorkflowActivities i Solution Explorer och välj Lägg till nytt objekt.
I noden Installerade, Vanliga objekt väljer du Arbetsflöde. Välj Aktivitet i arbetsflödeslistan.
Skriv
StateMachineNumberGuessWorkflow
i rutan Namn och klicka på Lägg till.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
Dubbelklicka på StateMachineNumberGuessWorkflow.xaml i Solution Explorer för att visa arbetsflödet i designern om det inte redan visas.
Klicka på Argument längst ned till vänster i arbetsflödesdesignern för att visa fönstret Argument .
Klicka på Skapa argument.
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.Klicka på Skapa argument.
Skriv
Turns
i rutan Namn som ligger under det nyligen tillagdaMaxNumber
argumentet, välj Ut i listrutan Riktning , välj Int32 i listrutan Argumenttyp och tryck sedan på RETUR.Klicka på Argument längst ned till vänster i aktivitetsdesignern för att stänga fönstret Argument .
Klicka på Variabler längst ned till vänster i arbetsflödesdesignern för att visa fönstret Variabler .
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.
Skriv
Guess
i rutan Namn , välj Int32 i listrutan Variabeltyp och tryck sedan på RETUR för att spara variabeln.Klicka på Skapa variabel.
Skriv
Target
i rutan Namn , välj Int32 i listrutan Variabeltyp och tryck sedan på RETUR för att spara variabeln.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
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önster på menyn Visa .
Dubbelklicka på det nyligen omdöpta tillståndet Initiera mål i arbetsflödesdesignern för att expandera det.
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åda på menyn Visa .
Gå tillbaka till den övergripande tillståndsdatorvyn i arbetsflödesdesignern genom att klicka på StateMachine i sökvägsvisningen överst i arbetsflödesdesignern.
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.
Klicka på Tillstånd1 för att markera det, ändra DisplayName till
Enter Guess
och dubbelklicka sedan på tillståndet i arbetsflödesdesignern för att expandera det.Dra en WriteLine-aktivitet från avsnittet Primitiver i verktygslådanoch släpp den i avsnittet Post i tillståndet.
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
Dra en Tilldela aktivitet från avsnittet Primitiver i verktygslådanoch släpp den till avsnittet Avsluta i tillståndet.
Skriv
Turns
i rutan Till ochTurns + 1
i rutan Ange ett C#-uttryck eller Ange ett VB-uttryck .Gå tillbaka till den övergripande tillståndsdatorvyn i arbetsflödesdesignern genom att klicka på StateMachine i sökvägsvisningen överst i arbetsflödesdesignern.
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.
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.
Dubbelklicka på den nyligen omdöpta övergången Gissa rätt i arbetsflödesdesignern för att expandera den.
Dra en ReadInt-aktivitet från avsnittet NumberGuessWorkflowActivities i verktygslådan och släpp den i avsnittet Utlösare i övergången.
I egenskapsfönstret för Aktiviteten ReadInt skriver du
"EnterGuess"
inklusive citattecken i rutan BookmarkName-egenskapsvärde och skriverGuess
i rutan ResultategenskapsvärdeSkriv följande uttryck i rutan Gissa rätt övergångs egenskapsvärde.
Guess = Target
Guess == Target
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 genereradeTarget
, skickasGuess
kontrollen till FinalState och arbetsflödet slutförs.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 tillfalse
), 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).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 .
Skriv följande uttryck i rutan Egenskapsvärde för Villkor .
Guess <> Target
Guess != Target
Dra en If-aktivitet från avsnittet Kontrollflöde i verktygslådanoch släpp den i avsnittet Åtgärd i övergången.
Skriv följande uttryck i rutan Om-aktivitetens egenskapsvärde för Villkor .
Guess < Target
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.
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."
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."
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.
Skapa arbetsflödet
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.