Partilhar via


Fluxos de trabalho da máquina de estado

Uma máquina de estado é um paradigma bem conhecido para o desenvolvimento de programas. A StateMachine atividade, juntamente com State, Transitione outras atividades podem ser usadas para criar programas de fluxo de trabalho de máquina de estado. Este tópico fornece uma visão geral da criação de fluxos de trabalho de máquina de estado.

Visão geral do fluxo de trabalho da máquina de estado

Os fluxos de trabalho da máquina de estado fornecem um estilo de modelagem com o qual você pode modelar seu fluxo de trabalho de maneira orientada a eventos. Uma StateMachine atividade contém os estados e transições que compõem a lógica da máquina de estado e pode ser usada em qualquer lugar onde uma atividade possa ser usada. Há várias classes no tempo de execução da máquina de estado:

Para criar um fluxo de trabalho de máquina de estado, os estados são adicionados a uma StateMachine atividade e as transições são usadas para controlar o fluxo entre estados. A captura de tela a seguir, da etapa do tutorial de introdução Como: Criar um fluxo de trabalho de máquina de estado, mostra um fluxo de trabalho de máquina de estado com três estados e três transições. Initialize Target é o estado inicial e representa o primeiro estado no fluxo de trabalho. Isso é designado pela linha que leva a ele a partir do nó Iniciar . O estado final no fluxo de trabalho é chamado FinalState e representa o ponto em que o fluxo de trabalho é concluído.

Illustration that shows the completed state machine workflow.

Um fluxo de trabalho de máquina de estado deve ter um e apenas um estado inicial e pelo menos um estado final. Cada estado que não é um estado final deve ter pelo menos uma transição. As seções a seguir abordam a criação e configuração de estados e transições.

Criando e configurando estados

A State representa um estado no qual uma máquina de estado pode estar. Para adicionar um State a um fluxo de trabalho, arraste o Designer de atividade de Estado da seção Máquina de Estado da Caixa de Ferramentas e solte-o em uma StateMachine atividade na superfície do Designer de Fluxo de Trabalho do Windows.

Screenshot of the State Machine section of the Toolbox.

Para configurar um estado como Estado Inicial, clique com o botão direito do mouse no estado e selecione Definir como Estado Inicial. Além disso, se não houver nenhum estado inicial atual, o estado inicial pode ser designado arrastando uma linha do nó Iniciar na parte superior do fluxo de trabalho para o estado desejado. Quando uma StateMachine atividade é solta no designer de fluxo de trabalho, ela é pré-configurada com um estado inicial chamado State1. Um fluxo de trabalho de máquina de estado deve ter um e apenas um estado inicial.

Um estado que representa um estado de terminação em uma máquina de estado é chamado de estado final. Um estado final é um estado que tem sua IsFinal propriedade definida como true, não Exit tem atividade e não tem transições originadas dele. Para adicionar um estado final a um fluxo de trabalho, arraste um designer de atividade FinalState da seção Máquina de Estado da Caixa de Ferramentas e solte-o em uma StateMachine atividade na superfície do Designer de Fluxo de Trabalho do Windows. Um fluxo de trabalho de máquina de estado deve ter pelo menos um estado final.

Configurando ações de entrada e saída

Um Estado pode ter uma Entry e uma Exit ação. (Um estado configurado como um estado final pode ter apenas uma ação de entrada). Quando uma instância de fluxo de trabalho entra em um estado, todas as atividades na ação de entrada são executadas. Quando a ação de entrada estiver concluída, os gatilhos para as transições do estado serão agendados. Quando uma transição para outro estado é confirmada, as atividades na ação de saída são executadas, mesmo que o estado faça a transição de volta para o mesmo estado. Após a conclusão da ação de saída, as atividades na ação da transição são executadas e, em seguida, o novo estado é transferido para e suas ações de entrada são agendadas.

Nota

Ao depurar um fluxo de trabalho de máquina de estado, os pontos de interrupção podem ser colocados na atividade da máquina de estado raiz e nos estados dentro do fluxo de trabalho da máquina de estado. Os pontos de interrupção não podem ser colocados diretamente nas transições, mas podem ser colocados em quaisquer atividades contidas nos estados e transições.

Criando e configurando transições

Todos os estados devem ter pelo menos uma transição, exceto um estado final, que pode não ter transições. As transições podem ser adicionadas depois que um estado é adicionado a um fluxo de trabalho de máquina de estado ou podem ser criadas à medida que o estado é descartado.

Para adicionar e State criar uma transição em uma etapa, arraste uma atividade de Estado da seção Máquina de Estado da Caixa de Ferramentas e passe o mouse sobre outro estado no designer de fluxo de trabalho. Quando o arrastado State estiver sobre outro State, quatro triângulos aparecerão ao redor do outro State. Se o State for solto em um dos quatro triângulos, ele será adicionado à máquina de estado e uma transição será criada da origem State para o destino Statedescartado. Para obter mais informações, consulte Designer de atividade de transição.

Para criar uma transição depois que um estado é adicionado, há duas opções. A primeira opção é arrastar o estado da superfície do designer de fluxo de trabalho e passar o mouse sobre um estado existente e soltá-lo em um dos pontos de soltar. Isso é semelhante ao método descrito na seção anterior. Você também pode passar o mouse sobre o estado de origem desejado e arrastar uma linha para o estado de destino desejado.

Nota

Um único estado em uma máquina de estado pode ter até 76 transições criadas usando o designer de fluxo de trabalho. O limite de transições para um estado para fluxos de trabalho criados fora do designer é limitado apenas pelos recursos do sistema.

Uma transição pode ter um Trigger, a Conditione um Action. Uma transição Trigger é agendada quando a ação do estado Entry de origem da transição é concluída. Normalmente, a Trigger é uma atividade que espera que algum tipo de evento ocorra, mas pode ser qualquer atividade, ou nenhuma atividade. Uma vez concluída a Trigger atividade, o Condition, se presente, é avaliado. Se não Trigger houver atividade, então o Condition é imediatamente avaliado. Se a condição for avaliada como false, a transição será cancelada e a Trigger atividade para todas as transições do estado será reagendada. Se houver outras transições que compartilham o mesmo estado de origem da transição atual, essas Trigger ações também serão canceladas e reagendadas. Se o Condition avalia para true, ou não há nenhuma condição, então a Exit ação do estado de origem é executada e, em seguida, a Action da transição é executada. Quando o for concluído, o Action controle passará para o estado de destino

As transições que compartilham um gatilho comum são conhecidas como transições de gatilho compartilhado. Cada transição em um grupo de transições de gatilho compartilhadas tem o mesmo gatilho, mas um único Condition e Ação. Para adicionar ações adicionais a uma transição e criar uma transição compartilhada, clique no círculo que indica o início da transição desejada e arraste-o para o estado desejado. A nova transição partilhará um mesmo gatilho que a transição inicial, mas terá uma condição e uma ação únicas. 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.

Para obter mais informações sobre como criar fluxos de trabalho de máquina de estado, consulte Como criar um fluxo de trabalho de máquina de estado, Designer de atividade StateMachine, Designer de atividade de estado, Designer de atividade FinalState e Designer de atividade de transição.

Terminologia da máquina de estado

Esta seção define o vocabulário da máquina de estado usado ao longo deste tópico.

Estado
A unidade básica que compõe uma máquina de estado. Uma máquina de estado pode estar em um estado a qualquer momento específico.

Ação de Entrada
Uma atividade executada ao entrar no estado

Ação de saída
Uma atividade executada ao sair do estado

Transition
Uma relação direcionada entre dois estados que representa a resposta completa de uma máquina de estado a uma ocorrência de um evento de um tipo específico.

Transição compartilhada
Uma transição que compartilha um estado de origem e gatilho com uma ou mais transições, mas tem uma condição e ação exclusivas.

Acionador
Uma atividade desencadeadora que faz com que ocorra uma transição.

Condição
Uma restrição que deve ser avaliada após true o gatilho ocorrer para que a transição seja concluída.

Ação de transição
Uma atividade que é executada ao executar uma determinada transição.

Transição condicional
Uma transição com uma condição explícita.

Auto-transição
Uma transição que transita de um Estado para si mesmo.

Estado inicial
Um estado que representa o ponto de partida da máquina de estado.

Estado final
Um estado que representa a conclusão da máquina de estado.

Consulte também