Delen via


Procedure: Een werkstroom voor een statusmachine maken

Werkstromen kunnen worden samengesteld op basis van ingebouwde activiteiten en van aangepaste activiteiten. In dit onderwerp wordt uitgelegd hoe u een werkstroom maakt die gebruikmaakt van zowel ingebouwde activiteiten als de StateMachine activiteit en de aangepaste activiteiten uit de vorige procedure: Een activiteitsonderwerp maken. De werkstroom modelleert een getal radend spel.

Notitie

Elk onderwerp in de zelfstudie Aan de slag is afhankelijk van de vorige onderwerpen. Als u dit onderwerp wilt voltooien, moet u eerst het volgende voltooien : Een activiteit maken.

De werkstroom maken

  1. Klik met de rechtermuisknop op NumberGuessWorkflowActivities in Solution Explorer en selecteer Toevoegen, Nieuw item.

  2. Selecteer Werkstroom in het knooppunt Geïnstalleerde, algemene items. Selecteer Activiteit in de lijst Werkstroom .

  3. Typ StateMachineNumberGuessWorkflow in het vak Naam en klik op Toevoegen.

  4. Sleep een StateMachine-activiteit uit de sectie State Machine van de Werkset en zet deze neer op het label Neerzetten hier op het ontwerpoppervlak van de werkstroom.

De werkstroomvariabelen en -argumenten maken

  1. Dubbelklik op StateMachineNumberGuessWorkflow.xaml in Solution Explorer om de werkstroom in de ontwerpfunctie weer te geven als deze nog niet wordt weergegeven.

  2. Klik linksonder in de werkstroomontwerper op Argumenten om het deelvenster Argumenten weer te geven.

  3. Klik op Argument maken.

  4. Typ MaxNumber in het vak Naam , selecteer In in de vervolgkeuzelijst Richting , selecteer Int32 in de vervolgkeuzelijst Argumenttype en druk op Enter om het argument op te slaan.

  5. Klik op Argument maken.

  6. Typ Turns in het vak Naam onder het zojuist toegevoegde MaxNumber argument, selecteer Uit in de vervolgkeuzelijst Richting , selecteer Int32 in de vervolgkeuzelijst Argumenttype en druk op Enter.

  7. Klik linksonder in de activiteitsontwerper op Argumenten om het deelvenster Argumenten te sluiten.

  8. Klik linksonder in de werkstroomontwerper op Variabelen om het deelvenster Variabelen weer te geven.

  9. Klik op Variabele maken.

    Tip

    Als er geen vak Variabele maken wordt weergegeven, klikt u op de StateMachine activiteit op het ontwerpoppervlak van de werkstroom om het te selecteren.

  10. Typ Guess in het vak Naam , selecteer Int32 in de vervolgkeuzelijst Variabele en druk op Enter om de variabele op te slaan.

  11. Klik op Variabele maken.

  12. Typ Target in het vak Naam , selecteer Int32 in de vervolgkeuzelijst Variabele en druk op Enter om de variabele op te slaan.

  13. Klik op Variabelen in de linkerbenedenhoek van de activiteitsontwerper om het deelvenster Variabelen te sluiten.

De werkstroomactiviteiten toevoegen

  1. Klik op State1 om deze te selecteren. Wijzig in het venster Eigenschappen de DisplayName in Initialize Target.

    Tip

    Als het venster Eigenschappen niet wordt weergegeven, selecteert u Het venster Eigenschappen in het menu Beeld .

  2. Dubbelklik op de zojuist hernoemde Initialize Target-status in de werkstroomontwerper om deze uit te vouwen.

  3. Sleep een toewijzingsactiviteit uit de sectie Primitieven van de Werkset en zet deze neer op de sectie Invoer van de status. Typ Target in het vak Aan en de volgende expressie in het vak Een C#-expressie invoeren of voer een VB-expressie in.

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

    Tip

    Als het werksetvenster niet wordt weergegeven, selecteert u Werkset in het menu Beeld .

  4. Ga terug naar de weergave voor de algemene statusmachine in de werkstroomontwerper door boven aan de werkstroomontwerper op StateMachine te klikken in de breadcrumb-weergave.

  5. Sleep een statusactiviteit van de sectie State Machine van de Werkset naar de werkstroomontwerper en plaats deze boven de doelstatus initialiseren. Houd er rekening mee dat er vier driehoeken worden weergegeven rond de status Doel initialiseren wanneer de nieuwe status erboven staat. Zet de nieuwe status neer op de driehoek die zich direct onder de status Doel initialiseren bevindt. Hiermee wordt de nieuwe status op de werkstroom weergegeven en wordt er een overgang gemaakt van de status Doel initialiseren naar de nieuwe status.

  6. Klik op State1 om deze te selecteren, wijzig de DisplayNameEnter Guessin en dubbelklik vervolgens op de status in de werkstroomontwerper om deze uit te vouwen.

  7. Sleep een WriteLine-activiteit vanuit de sectie Primitieven van de Werkset en zet deze neer op het invoergedeelte van de status.

  8. Typ de volgende expressie in het eigenschappenvak Tekst van de WriteLine.

    "Please enter a number between 1 and " & MaxNumber  
    
    "Please enter a number between 1 and " + MaxNumber  
    
  9. Sleep een toewijzingsactiviteit uit de sectie Primitieven van de Werkset en zet deze neer op de sectie Afsluiten van de status.

  10. Typ Turns in het vak Aan en Turns + 1 typ een C#-expressie of voer een VB-expressie in.

  11. Ga terug naar de weergave voor de algemene statusmachine in de werkstroomontwerper door boven aan de werkstroomontwerper op StateMachine te klikken in de breadcrumb-weergave.

  12. Sleep een FinalState-activiteit uit de sectie State Machine van de Werkset, beweeg de muisaanwijzer over de status Schatting invoeren en zet deze neer op de driehoek die rechts van de status Guess invoeren wordt weergegeven, zodat er een overgang wordt gemaakt tussen Enter Guess en FinalState.

  13. De standaardnaam van de overgang is T2. Klik op de overgang in de werkstroomontwerper om deze te selecteren en stel de weergavenaam in op Guess Correct. Klik en selecteer de FinalState en sleep deze naar rechts, zodat er ruimte is voor de volledige overgangsnaam die moet worden weergegeven zonder een van de twee statussen te overlayen. Hierdoor is het eenvoudiger om de resterende stappen in de zelfstudie uit te voeren.

  14. Dubbelklik op de zojuist hernoemde overgang Guess Correct in de werkstroomontwerper om deze uit te vouwen.

  15. Sleep een ReadInt-activiteit uit de sectie NumberGuessWorkflowActivities van de Werkset en zet deze neer in de sectie Trigger van de overgang.

  16. Typ "EnterGuess" in het venster Eigenschappen voor de ReadInt-activiteit, inclusief de aanhalingstekens in het eigenschappenvak BookmarkName en typ Guess in het vak Resultaateigenschapswaarde

  17. Typ de volgende expressie in het vak Waarde van de eigenschap Voorwaarde van De juiste overgang raden.

    Guess = Target  
    
    Guess == Target  
    
  18. Ga terug naar de weergave voor de algemene statusmachine in de werkstroomontwerper door boven aan de werkstroomontwerper op StateMachine te klikken in de breadcrumb-weergave.

    Notitie

    Er treedt een overgang op wanneer de triggergebeurtenis wordt ontvangen en de Condition, indien aanwezig, resulteert in True. Als voor deze overgang de gebruiker Guess overeenkomt met de willekeurig gegenereerde Target, wordt het besturingselement doorgegeven aan de FinalState en wordt de werkstroom voltooid.

  19. Afhankelijk van of de schatting juist is, moet de werkstroom worden overgezet naar de FinalState of teruggaan naar de status Guess invoeren voor een andere poging. Beide overgangen delen dezelfde trigger voor het wachten tot de schatting van de gebruiker wordt ontvangen via de ReadInt-activiteit . Dit wordt een gedeelde overgang genoemd. Als u een gedeelde overgang wilt maken, klikt u op de cirkel die het begin van de overgang Schatting juist aangeeft en sleept u deze naar de gewenste status. In dit geval is de overgang een zelfovergang, dus sleep het beginpunt van de schatting juiste overgang en zet deze terug op de onderkant van de status Guess invoeren . Nadat u de overgang hebt gemaakt, selecteert u deze in de werkstroomontwerper en stelt u de eigenschap DisplayName in op Guess Incorrect.

    Notitie

    Gedeelde overgangen kunnen ook worden gemaakt vanuit de overgangsontwerper door onder aan de overgangsontwerper op Gedeelde triggerovergang toevoegen te klikken en vervolgens de gewenste doelstatus te selecteren in de vervolgkeuzelijst Beschikbare statussen om verbinding te maken.

    Notitie

    Houd er rekening mee dat als de Condition overgang resulteert in false (of alle voorwaarden van een gedeelde triggerovergang worden geëvalueerd), falsede overgang niet plaatsvindt en alle triggers voor alle overgangen van de status opnieuw worden gepland. In deze zelfstudie kan deze situatie niet optreden vanwege de manier waarop de voorwaarden worden geconfigureerd (we hebben specifieke acties om te bepalen of de schatting juist of onjuist is).

  20. Dubbelklik op de onjuiste overgang raden in de werkstroomontwerper om deze uit te vouwen. Houd er rekening mee dat de trigger al is ingesteld op dezelfde ReadInt-activiteit die is gebruikt door de overgang Guess Correct .

  21. Typ de volgende expressie in het vak Eigenschapswaarde voorwaarde .

    Guess <> Target  
    
    Guess != Target  
    
  22. Sleep een If-activiteit vanuit de sectie Controlestroom van de Werkset en zet deze neer in de sectie Actie van de overgang.

  23. Typ de volgende expressie in het vak If-eigenschapswaardevoorwaarde .

    Guess < Target
    
  24. Sleep twee WriteLine-activiteiten uit de sectie Primitieven van de Werkset en zet ze neer, zodat deze zich in de sectie Then van de If-activiteit bevinden en één zich in de sectie Else bevindt.

  25. Klik op de activiteit WriteLine in de sectie Vervolgens om deze te selecteren en typ de volgende expressie in het vak Waarde van de eigenschap Tekst.

    "Your guess is too low."  
    
  26. Klik op de activiteit WriteLine in de sectie Else om deze te selecteren en typ de volgende expressie in het vak Waarde van de eigenschap Tekst.

    "Your guess is too high."  
    
  27. Ga terug naar de weergave voor de algemene statusmachine in de werkstroomontwerper door boven aan de werkstroomontwerper op StateMachine te klikken in de breadcrumb-weergave.

    In het volgende voorbeeld ziet u de voltooide werkstroom.

    Illustration that shows the completed state machine workflow.

De werkstroom bouwen

  1. Druk op CTRL + SHIFT + B om de oplossing te bouwen.

    Zie het volgende onderwerp: Een werkstroom uitvoeren voor instructies voor het uitvoeren van de werkstroom. Als u de procedure al hebt voltooid: Een werkstroomstap uitvoeren met een andere stijl van de werkstroom en deze wilt uitvoeren met behulp van de werkstroom voor de statusmachine uit deze stap, gaat u verder naar de sectie Voor het bouwen en uitvoeren van de toepassingssectie van Procedure: Een werkstroom uitvoeren.

Zie ook