Postupy: Vytvoření pracovního postupu stavového stroje
Pracovní postupy lze vytvářet z předdefinovaných aktivit i z vlastních aktivit. Toto téma popisuje vytvoření pracovního postupu, který používá jak předdefinované aktivity, jako StateMachine je aktivita, tak vlastní aktivity z předchozího postupu: Vytvoření tématu aktivity . Pracovní postup modeluje číselnou hádanou hru.
Poznámka:
Každé téma v kurzu Začínáme závisí na předchozích tématech. Chcete-li dokončit toto téma, musíte nejprve dokončit postupy: Vytvoření aktivity.
Vytvoření pracovního postupu
Klikněte pravým tlačítkem na NumberGuessWorkflowActivities v Průzkumník řešení a vyberte Přidat novou položku.
V uzlu Nainstalované společné položky vyberte Pracovní postup. V seznamu Pracovních postupů vyberte aktivitu.
Zadejte
StateMachineNumberGuessWorkflow
do pole Název a klikněte na Přidat.Přetáhněte aktivitu StateMachine z oddílu State Machine v sadě nástrojů a přetáhněte ji na popisek aktivity Drop zde na návrhové ploše pracovního postupu.
Vytvoření proměnných a argumentů pracovního postupu
Poklikáním na StateMachineNumberGuessWorkflow.xaml v Průzkumník řešení zobrazíte pracovní postup v návrháři, pokud ještě není zobrazen.
Kliknutím na Argumenty v levém dolním rohu návrháře pracovního postupu zobrazte podokno Argumenty .
Klikněte na Vytvořit argument.
Zadejte
MaxNumber
do pole Název, vyberte V rozevíracím seznamu Směr, v rozevíracím seznamu Typ argumentu vyberte Int32 a stisknutím klávesy ENTER argument uložte.Klikněte na Vytvořit argument.
Zadejte
Turns
do pole Název pod nově přidanýmMaxNumber
argumentem, v rozevíracím seznamu Směr vyberte Možnost Ven, z rozevíracího seznamu Typ argumentu vyberte Int32 a stiskněte ENTER.Kliknutím na Argumenty v levém dolním rohu návrháře aktivit zavřete podokno Argumenty .
Kliknutím na Proměnné v levém dolním rohu návrháře pracovního postupu zobrazte podokno Proměnné .
Klikněte na Vytvořit proměnnou.
Tip
Pokud se nezobrazí žádné pole Vytvořit proměnnou , vyberte ji kliknutím na StateMachine aktivitu na ploše návrháře pracovního postupu.
Zadejte
Guess
do pole Název, v rozevíracím seznamu Typ proměnné vyberte Int32a stisknutím klávesy ENTER proměnnou uložte.Klikněte na Vytvořit proměnnou.
Zadejte
Target
do pole Název, v rozevíracím seznamu Typ proměnné vyberte Int32a stisknutím klávesy ENTER proměnnou uložte.Kliknutím na Proměnné v levém dolním rohu návrháře aktivit zavřete podokno Proměnné .
Přidání aktivit pracovního postupu
Kliknutím na State1 ho vyberte. V okně Vlastnosti změňte displayName na
Initialize Target
.Tip
Pokud se okno Vlastnosti nezobrazí, v nabídce Zobrazení vyberte oknoVlastnosti.
Poklikejte na nově přejmenovaný stav Inicializovat cíl v návrháři pracovního postupu a rozbalte ho.
Přetáhněte aktivitu Assign z části Primitives panelu nástrojů a přetáhněte ji do oddílu Entry (Položka) stavu. Zadejte
Target
do pole To a následující výraz do výrazuEnter a C# nebo Zadejte pole výrazu VB.New System.Random().Next(1, MaxNumber + 1)
new System.Random().Next(1, MaxNumber + 1)
Tip
Pokud se okno Panel nástrojů nezobrazí, vyberte v nabídce Zobrazení sadu nástrojů.
Vraťte se do zobrazení počítače celkového stavu v návrháři pracovního postupu kliknutím na StateMachine v zobrazení s popisem cesty v horní části návrháře pracovního postupu.
Přetáhněte aktivitu stavu z oddílu Stavový stroj sady nástrojů do návrháře pracovního postupu a najeďte myší na inicializovat cílový stav. Všimněte si, že kolem stavu Inicializovat cíl se zobrazí čtyři trojúhelníky, když je nový stav nad ním. Zahoďte nový stav na trojúhelníku, který je bezprostředně pod stavem Inicializovat cíl . Tím se nový stav umístí do pracovního postupu a vytvoří přechod ze stavu Inicializovat cíl do nového stavu.
Kliknutím na State1 ho vyberte, změňte displayName na
Enter Guess
a potom poklikejte na stav v návrháři pracovního postupu a rozbalte ho.Přetáhněte aktivitu WriteLine z části Primitives panelu nástrojů a přetáhněte ji do oddílu Entry (Položka) stavu.
Do textového pole vlastnosti WriteLine zadejte následující výraz.
"Please enter a number between 1 and " & MaxNumber
"Please enter a number between 1 and " + MaxNumber
Přetáhněte aktivitu Assign z části Primitiva panelu nástrojů a přetáhněte ji do výstupní části stavu.
Zadejte
Turns
do pole To a do výrazu Enter aTurns + 1
C# nebo Zadejte pole výrazu VB.Vraťte se do zobrazení počítače celkového stavu v návrháři pracovního postupu kliknutím na StateMachine v zobrazení s popisem cesty v horní části návrháře pracovního postupu.
Přetáhněte aktivitu FinalState z části Stavový stroj panelu nástrojů, najeďte myší na stav Enter Guess a umístěte ji do trojúhelníku, který se zobrazí napravo od stavu Zadat odhad tak, aby byl vytvořen přechod mezi Enter Guess a FinalState.
Výchozí název přechodu je T2. Kliknutím na přechod v návrháři pracovního postupu ho vyberte a nastavte jeho DisplayName na Guess Correct. Potom klikněte a vyberte FinalState a přetáhněte ho doprava, aby se zobrazil prostor pro úplný název přechodu bez překrytí některého ze dvou stavů. Tím usnadníte dokončení zbývajících kroků v kurzu.
Poklikejte na nově přejmenovaný přechod Guess Correct v návrháři pracovního postupu a rozbalte ho.
Přetáhněte aktivitu ReadInt z části NumberGuessWorkflowActivities panelu nástrojů a přesuňte ji do části Aktivační událost přechodu.
V okně Vlastnosti aktivity ReadInt zadejte
"EnterGuess"
do pole hodnota vlastnosti BookmarkName uvozovky a zadejteGuess
do pole Hodnota vlastnosti Výsledek.Do pole Hodnota vlastnosti Podmínky odhadu správnosti převodu zadejte následující výraz.
Guess = Target
Guess == Target
Vraťte se do zobrazení počítače celkového stavu v návrháři pracovního postupu kliknutím na StateMachine v zobrazení s popisem cesty v horní části návrháře pracovního postupu.
Poznámka:
K přechodu dojde, když se událost triggeru obdrží a Conditionpokud je k dispozici, vyhodnotí se jako
True
. Pro tento přechod platí, že pokud se uživatelGuess
shoduje s náhodně vygenerovanýmTarget
ovládacím prvku, předá ovládací prvek FinalState a pracovní postup se dokončí.V závislosti na tom, jestli je odhad správný, by měl pracovní postup přejít buď na Konečný stav , nebo zpět do stavu Zadat odhad pro další pokus. Oba přechody sdílejí stejný trigger čekání na přijetí odhadu uživatele prostřednictvím aktivity ReadInt . Tomu se říká sdílený přechod. Pokud chcete vytvořit sdílený přechod, klikněte na kruh, který označuje začátek přechodu Guess Correct a přetáhněte ho do požadovaného stavu. V tomto případě je přechodem samočinný přechod, takže přetáhněte počáteční bod přechodu Guess Correct a přetáhněte ho zpět do dolní části stavu Zadat odhad. Po vytvoření přechodu ho vyberte v návrháři pracovního postupu a nastavte jeho Vlastnost DisplayName na Odhad Nesprávné.
Poznámka:
Sdílené přechody lze také vytvořit v návrháři přechodu kliknutím na Přidat sdílený přechod triggeru v dolní části návrháře přechodu a výběrem požadovaného cílového stavu z dostupných stavů připojit rozevírací seznam.
Poznámka:
Všimněte si, že pokud se Condition přechod vyhodnotí jako
false
(nebo všechny podmínky sdíleného přechodu triggeru se vyhodnotí jako ), nedojde kfalse
přechodu a všechny triggery pro všechny přechody ze stavu se přeplánují. V tomto kurzu k této situaci nemůže dojít kvůli způsobu konfigurace podmínek (máme konkrétní akce pro to, zda je odhad správný nebo nesprávný).Poklikáním na přechod Hádat nesprávná odpověď v návrháři pracovního postupu ho rozbalte. Všimněte si, že aktivační událost je již nastavena na stejnou aktivitu ReadInt, kterou použil přechod Guess Correct.
Do pole Hodnota vlastnosti podmínky zadejte následující výraz.
Guess <> Target
Guess != Target
Přetáhněte aktivitu If z části Tok řízení panelu nástrojů a přesuňte ji do části Akce přechodu.
Do pole Vlastnosti podmínky aktivity If zadejte následující výraz.
Guess < Target
Přetáhněte dvě aktivity WriteLine z části Primitiva panelu nástrojů a přesuňte je tak, aby jedna byla v části Pak aktivity If a jedna je v oddílu Else.
Kliknutím na aktivitu WriteLine v části Pak ji vyberte a do pole Hodnota vlastnosti Text zadejte následující výraz.
"Your guess is too low."
Kliknutím na aktivitu WriteLine v části Else ji vyberte a do pole Hodnota vlastnosti Text zadejte následující výraz.
"Your guess is too high."
Vraťte se do zobrazení počítače celkového stavu v návrháři pracovního postupu kliknutím na StateMachine v zobrazení s popisem cesty v horní části návrháře pracovního postupu.
Následující příklad znázorňuje dokončený pracovní postup.
Sestavení pracovního postupu
Stisknutím kláves CTRL+SHIFT+B řešení sestavíte.
Pokyny ke spuštění pracovního postupu najdete v dalším tématu Postupy : Spuštění pracovního postupu. Pokud jste již dokončili postup: Spusťte krok pracovního postupu s jiným stylem pracovního postupu a chcete ho spustit pomocí pracovního postupu stavového počítače z tohoto kroku, přeskočte k části Sestavení a spuštění aplikace v části Postupy: Spuštění pracovního postupu.