Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Uma máquina de estado é um paradigma conhecido para o desenvolvimento de programas. As atividades StateMachine, juntamente com State, Transition e outras, podem ser usadas para criar programas de workflows de máquinas de estado. Este tópico fornece uma visão geral da criação de fluxos de trabalho de computador de estado.
Visão geral de fluxo de trabalho do computador de estado
Os fluxos de trabalho do computador 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 do computador de estado e pode ser usada em qualquer lugar em que uma atividade possa ser usada. Há várias classes no runtime do computador de estado:
Para criar um fluxo de trabalho de computador 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 Tutorial de IntroduçãoComo criar um fluxo de trabalho de máquina de estado, mostra um fluxo de trabalho de computador de estado com três estados e três transições. Inicializar Destino é o estado inicial e representa o primeiro estado no fluxo de trabalho. Ele é designado pela linha que resulta nele desde o nó Iniciar. O estado final no fluxo de trabalho é chamado FinalState e representa o ponto no qual o fluxo de trabalho é concluído.
Um fluxo de trabalho de computador 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 abrangem a criação e a configuração de estados e transições.
Criando e configurando estados
State representa um estado no qual uma máquina de estados pode estar. Para adicionar 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 atividade StateMachine na superfície do Designer de Fluxo de Trabalho do Windows.
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 poderá ser designado arrastando uma linha do nó Iniciar na parte superior do fluxo de trabalho para o estado desejado. Quando uma StateMachine atividade é inserida no editor de fluxo de trabalho, ela é pré-configurada com um estado inicial chamado State1. Um fluxo de trabalho do computador de estado deve ter um e somente um estados iniciais.
Um estado que representa um estado de terminação em um computador de estado é chamado de estado final. Um estado final é um estado que tem sua IsFinal propriedade definida como true
, não tem nenhuma Exit atividade e nenhuma transição proveniente dela. Para adicionar um estado final a um fluxo de trabalho, arraste um designer de atividade FinalState da seção State Machine 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 computador 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 em ação de entrada são executadas. Quando a ação de entrada for concluída, os gatilhos para as transições de 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 volte para o mesmo estado. Depois que a ação de saída for concluída, as atividades na ação da transição serão executadas, será feita a transição para o novo estado e suas ações de entrada serão agendadas.
Observação
Para depurar um fluxo de trabalho do computador de estado, pontos de interrupção podem ser colocados na atividade e os estados do computador de estado da raiz no fluxo de trabalho do computador de estado. Os pontos de interrupção podem não ser colocados diretamente nas transições, mas podem ser colocados em qualquer atividade contida 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 computador de estado ou podem ser criadas à medida que o estado é descartado.
Para adicionar um State e 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 State arrastado está sobre um outro State, quatro triângulos aparecerão em torno do outro State. Se State é solto em um dos quatro triângulos, é adicionado ao computador de estado e uma transição é criada de origem State ao destino solto State. Para obter mais informações, consulte o Designer de Atividade de Transição.
Para criar uma transição depois que um estado é adicionado, há duas opções. A primeira opção é arraste o estado da superfície do designer de fluxo de trabalho e focalizar-lo sobre um estado existente e solte-o em um dos pontos da operação. 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.
Observação
Um único estado em um computador 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, um Conditione um Action. O Trigger de uma transição é agendado quando a ação Entry do estado de origem da transição é concluída. Normalmente Trigger é uma atividade que espera qualquer tipo de evento ocorra, mas pode ser qualquer atividade, ou nenhuma atividade de todo. Uma vez que a atividade de Trigger estiver concluída, Condition, se presentes, é avaliada. Se não houver nenhuma atividade Trigger, o Condition será avaliado imediatamente. Se a condição for avaliada como false
, a transição será cancelada e a atividade Trigger para todas as transições de estado será reagendada. Se houver outras transições que compartilham o mesmo estado de origem que a transição atual, essas Trigger ações também serão canceladas e reagendadas. Se o Condition for avaliado como true
, ou não houver condição, a ação Exit do estado de origem é executada e, depois, a Action da transição é executada. Quando Action for concluído, o controle passará para o estado de Destino
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 compartilhadas do disparador tem o mesmo disparador, mas Condition e uma ação exclusivos. 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-a para o estado desejado. A nova transição compartilhará um mesmo gatilho que a transição inicial, mas terá uma condição e uma ação exclusivas. As transições compartilhadas também podem ser criadas a partir do designer de transição clicando em Adicionar transição de disparo 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 conectar.
Observação
Observe que, se o Condition de uma transição for avaliado como False
(ou se todas as condições de uma transição de gatilho compartilhado forem avaliadas como 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 da máquina de estado, consulte Como criar um fluxo de trabalho da máquina de estado, Designer de atividade de StateMachine, Designer de atividade de estado, Designer de atividade de FinalState e Designer de atividade de transição.
Terminologia do computador 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 um computador de estado. Um computador de estado pode estar em um estado em todas as hora.
Ação de entrada
Uma atividade executada ao entrar no estado
Ação de saída
Uma atividade executada ao sair do estado
Transição
Uma relação direcionada entre dois estados que representa a resposta completa de um computador 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 um gatilho com uma ou mais transições, mas tem uma condição e uma ação exclusiva.
Gatilho
Uma atividade de gatilho que faz com que uma transição ocorra.
Condição
Uma restrição que deve ser avaliada como true
após o gatilho ocorrer para que a transição seja concluída.
Ação de transição
Uma atividade executada ao executar uma determinada transição.
Transição condicional
Uma transição com uma condição explícita.
Dica transição
Uma transição que transita de um estado para si mesma.
Estado Inicial
Um estado que representa o ponto de partida do computador de estado.
Estado Final
Um estado que representa a conclusão da máquina de estado.