Partilhar via


Como: Criar um fluxo de trabalho de máquina de estado

Os fluxos de trabalho podem ser construídos a partir de atividades internas, bem como de atividades personalizadas. Este tópico descreve a criação de um fluxo de trabalho que usa atividades internas, como a StateMachine atividade, e as atividades personalizadas do tópico anterior Como: Criar uma atividade . O fluxo de trabalho modela um jogo de adivinhação de números.

Nota

Cada tópico no tutorial de Introdução depende dos tópicos anteriores. Para concluir este tópico, você deve primeiro concluir Como: Criar uma atividade.

Para criar o fluxo de trabalho

  1. Clique com o botão direito do mouse em NumberGuessWorkflowActivities no Gerenciador de Soluções e selecione Adicionar, Novo Item.

  2. No nó Itens comuns instalados, selecione Fluxo de trabalho. Selecione Atividade na lista Fluxo de trabalho .

  3. Digite StateMachineNumberGuessWorkflow na caixa Nome e clique em Adicionar.

  4. Arraste uma atividade StateMachine da seção State Machine da Caixa de Ferramentas e solte-a no rótulo Soltar atividade aqui na superfície de design do fluxo de trabalho.

Para criar as variáveis e argumentos do fluxo de trabalho

  1. Clique duas vezes em StateMachineNumberGuessWorkflow.xaml no Gerenciador de Soluções para exibir o fluxo de trabalho no designer, se ele ainda não estiver exibido.

  2. Clique em Argumentos no lado inferior esquerdo do designer de fluxo de trabalho para exibir o painel Argumentos .

  3. Clique em Criar argumento.

  4. Digite MaxNumber na caixa Nome , selecione Em na lista suspensa Direção , selecione Int32 na lista suspensa Tipo de argumento e pressione ENTER para salvar o argumento.

  5. Clique em Criar argumento.

  6. Digite Turns na caixa Nome que está abaixo do argumento recém-adicionado MaxNumber , selecione Fora na lista suspensa Direção , selecione Int32 na lista suspensa Tipo de argumento e pressione ENTER.

  7. Clique em Argumentos no lado inferior esquerdo do designer de atividades para fechar o painel Argumentos .

  8. Clique em Variáveis no lado inferior esquerdo do designer de fluxo de trabalho para exibir o painel Variáveis .

  9. Clique em Criar variável.

    Gorjeta

    Se nenhuma caixa Criar variável for exibida, clique StateMachine na atividade na superfície do designer de fluxo de trabalho para selecioná-la.

  10. Digite Guess na caixa Nome , selecione Int32 na lista suspensa Tipo de variável e pressione ENTER para salvar a variável.

  11. Clique em Criar variável.

  12. Digite Target na caixa Nome , selecione Int32 na lista suspensa Tipo de variável e pressione ENTER para salvar a variável.

  13. Clique em Variáveis no lado inferior esquerdo do designer de atividades para fechar o painel Variáveis .

Para adicionar as atividades do fluxo de trabalho

  1. Clique em State1 para selecioná-lo. Na janela Propriedades, altere o DisplayName para Initialize Target.

    Gorjeta

    Se a janela Propriedades não for exibida, selecione Janela Propriedades no menu Exibir .

  2. Clique duas vezes no estado recém-renomeado Inicializar Destino no designer de fluxo de trabalho para expandi-lo.

  3. Arraste uma atividade Atribuir da seção Primitivos da Caixa de Ferramentas e solte-a na seção Entrada do estado. Digite Target na caixa Para e a seguinte expressão na caixa Digite uma expressão C# ou Digite uma expressão VB.

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

    Gorjeta

    Se a janela Caixa de Ferramentas não for exibida, selecione Caixa de Ferramentas no menu Exibir .

  4. Retorne à exibição geral da máquina de estado no designer de fluxo de trabalho clicando em StateMachine na exibição de trilha na parte superior do designer de fluxo de trabalho.

  5. Arraste uma atividade de Estado da seção Máquina de Estado da Caixa de Ferramentas para o designer de fluxo de trabalho e passe o mouse sobre o estado Inicializar Destino. Observe que quatro triângulos aparecerão ao redor do estado Inicializar destino quando o novo estado estiver sobre ele. Solte o novo estado no triângulo que está imediatamente abaixo do estado Inicializar destino . Isso coloca o novo estado no fluxo de trabalho e cria uma transição do estado Inicializar destino para o novo estado.

  6. Clique em State1 para selecioná-lo, altere DisplayName para Enter Guesse, em seguida, clique duas vezes no estado no designer de fluxo de trabalho para expandi-lo.

  7. Arraste uma atividade WriteLine da seção Primitivos da Caixa de Ferramentas e solte-a na seção Entrada do estado.

  8. Digite a seguinte expressão na caixa de propriedade Text do WriteLine.

    "Please enter a number between 1 and " & MaxNumber  
    
    "Please enter a number between 1 and " + MaxNumber  
    
  9. Arraste uma atividade Atribuir da seção Primitivos da Caixa de Ferramentas e solte na seção Sair do estado.

  10. Digite Turns na caixa Para e Turns + 1 na caixa Digite uma expressão C# ou Digite uma expressão VB.

  11. Retorne à exibição geral da máquina de estado no designer de fluxo de trabalho clicando em StateMachine na exibição de trilha na parte superior do designer de fluxo de trabalho.

  12. Arraste uma atividade FinalState da seção State Machine da Caixa de Ferramentas, passe o mouse sobre o estado Enter Guess e solte-a no triângulo que aparece à direita do estado Enter Guess para que uma transição seja criada entre Enter Guess e FinalState.

  13. O nome padrão da transição é T2. Clique na transição no designer de fluxo de trabalho para selecioná-la e defina seu DisplayName como Guess Correct. Em seguida, clique e selecione o FinalState e arraste-o para a direita para que haja espaço para que o nome completo da transição seja exibido sem sobrepor nenhum dos dois estados. Isso facilitará a conclusão das etapas restantes no tutorial.

  14. Clique duas vezes na transição Adivinhar Correto recentemente renomeada no designer de fluxo de trabalho para expandi-la.

  15. Arraste uma atividade ReadInt da seção NumberGuessWorkflowActivities da Caixa de Ferramentas e solte-a na seção Gatilho da transição.

  16. Na janela Propriedades da atividade ReadInt, digite "EnterGuess" incluindo as aspas na caixa Valor da propriedade BookmarkName e digite Guess na caixa Valor da propriedade Result

  17. Digite a seguinte expressão na caixa Valor da propriedade Condition da transição Guess Correct.

    Guess = Target  
    
    Guess == Target  
    
  18. Retorne à exibição geral da máquina de estado no designer de fluxo de trabalho clicando em StateMachine na exibição de trilha na parte superior do designer de fluxo de trabalho.

    Nota

    Uma transição ocorre quando o evento gatilho é recebido e o Condition, se presente, é avaliado como True. Para essa transição, se o usuário Guess corresponder ao gerado Targetaleatoriamente, o controle passa para o FinalState e o fluxo de trabalho é concluído.

  19. Dependendo se a suposição está correta, o fluxo de trabalho deve fazer a transição para o FinalState ou voltar para o estado Enter Guess para outra tentativa. Ambas as transições compartilham o mesmo gatilho de esperar que o palpite do usuário seja recebido por meio da atividade ReadInt . Isso é chamado de transição compartilhada. Para criar uma transição compartilhada, clique no círculo que indica o início da transição Adivinhar Correto e arraste-o para o estado desejado. Nesse caso, a transição é uma autotransição, portanto, arraste o ponto inicial da transição Guess Correct e solte-o de volta na parte inferior do estado Enter Guess . Depois de criar a transição, selecione-a no designer de fluxo de trabalho e defina sua propriedade DisplayName como Guess Incorrect.

    Nota

    As transições compartilhadas também podem ser criadas de dentro do designer de transição clicando em Adicionar transição de gatilho compartilhado na parte inferior do designer de transição e, em seguida, selecionando o estado de destino desejado na lista suspensa Estados disponíveis para conexão.

    Nota

    Observe que, se o Condition de uma transição for avaliado para false (ou todas as condições de uma transição de gatilho compartilhado avaliarem para false), a transição não ocorrerá e todos os gatilhos para todas as transições do estado serão reagendados. Neste tutorial, essa situação não pode acontecer devido à forma como as condições são configuradas (temos ações específicas para saber se o palpite está correto ou incorreto).

  20. Clique duas vezes na transição Adivinhar Incorreto no designer de fluxo de trabalho para expandi-la. Observe que o Trigger já está definido para a mesma atividade ReadInt que foi usada pela transição Guess Correct .

  21. Digite a seguinte expressão na caixa Valor da propriedade Condition .

    Guess <> Target  
    
    Guess != Target  
    
  22. Arraste uma atividade If da seção Fluxo de Controle da Caixa de Ferramentas e solte-a na seção Ação da transição.

  23. Digite a seguinte expressão na caixa Valor da propriedade Condition da atividade If.

    Guess < Target
    
  24. Arraste duas atividades WriteLine da seção Primitivos da Caixa de Ferramentas e solte-as para que uma esteja na seção Then da atividade If e uma na seção Else .

  25. Clique na atividade WriteLine na seção Then para selecioná-la e digite a seguinte expressão na caixa Valor da propriedade Text .

    "Your guess is too low."  
    
  26. Clique na atividade WriteLine na seção Else para selecioná-la e digite a seguinte expressão na caixa Valor da propriedade Text .

    "Your guess is too high."  
    
  27. Retorne à exibição geral da máquina de estado no designer de fluxo de trabalho clicando em StateMachine na exibição de trilha na parte superior do designer de fluxo de trabalho.

    O exemplo a seguir ilustra o fluxo de trabalho concluído.

    Illustration that shows the completed state machine workflow.

Para criar o fluxo de trabalho

  1. Prima CTRL+SHIFT+B para compilar a solução.

    Para obter instruções sobre como executar o fluxo de trabalho, consulte o próximo tópico, Como executar um fluxo de trabalho. Se você já concluiu a etapa Como: Executar um fluxo de trabalho com um estilo diferente de fluxo de trabalho e deseja executá-lo usando o fluxo de trabalho da máquina de estado desta etapa, pule para a seção Para criar e executar o aplicativo de Como: Executar um fluxo de trabalho.

Consulte também