Omnia DocumentaçãoRecursos
DocumentaçãoRecursos
Recursos
Voltar | Lista de artigos

Nova funcionalidade: Máquina de Estados

Última alteração a 28/09/2021

"Uma máquina de estados finita (FSM - do inglês Finite State Machine) ou autómato finito é um modelo matemático usado para representar programas de computadores ou circuitos lógicos. O conceito é concebido como uma máquina abstrata que deve estar em um de um número finito de estados. A máquina está em apenas num estado de cada vez, este estado é chamado de estado atual. Um estado armazena informações sobre o passado, isto é, ele reflete as mudanças desde a entrada num estado, no início do sistema, até o momento presente. Uma transição indica uma mudança de estado e é descrita por uma condição que precisa ser realizada para que a transição ocorra. Uma ação é a descrição de uma atividade que deve ser realizada num determinado momento." - Wikipédia


(este artigo foi originalmente publicado no blog oficial OMNIA)

A última atualização da plataforma OMNIA trouxe grandes melhoramentos à experiência de desenvolvimento, sendo este inteiramente focado no desenvolvimento de Máquinas de Estado (ver documentação). Com esta nova funcionalidade, desenvolver Máquinas de Estados, e os seus respetivos elementos, torna-se num processo mais simples, rápido e intuitivo.

Qualquer desenvolvimento que englobe qualquer tipo de workflow de aprovação, como despesas ou férias, serão agora muito mais rápidos.

Experiência de Modelação

Para criar uma nova máquina de estados, é necessário apenas de recorrer ao botão "Add new" no novo menu dedicado a Máquinas de Estado.

O primeiro passo inclui as seguintes configurações:

  • related to: selecione a entidade que a máquina de estados irá gerir;
  • description: descrição da máquina de estados;


Dashboard

Cada máquina de estados está pré configurada com dois estados - "Initial" e "Completed" - que podem ser consultados através do respetivo dashboard. Nesta área é possível consultar todos os estados disponíveis e como estes se relacionam entre si (ver diagrama do lado esquerdo da seguinte imagem)


Adicionar novos estados

O processo de adicionar um novo estado a uma máquina de estados é muito simples e familiar para os utilizadores da plataforma. Através da opção "Add New", localizada no dashboard da Máquina de Estados, iremos ativar um formulário com as seguintes opções de configuração:

  • Nome: nome, ID único, estado;
  • Description: um texto descritivo;
  • Is the initial state?: checkbox que permite ao programador definir o novo estado como inicial;
  • Disable all attributes?: checkbox que permite ao programador desativar todos os atributos do estado;
  • Disable all operations?: checkbox que permite ao programador desativar todas as operações do estado;
  • Assign to (C# expression): expressão C# para controlo do acesso à entidade;


Decisões | Transições | Comportamentos

Para cada estado existem três aspetos que podemos controlar:

  • Decisões: permitem controlar a ação de utilizadores quando a entidade se encontra num determinado estado;
  • Transições: permitem definir e configurar o caminho, condições e triggers de uma transição de estado;
  • Comportamentos: dispara comportamentos C# quando um estado é atingido, ou abandonado;


Decisões

"Decisões" são um dos três aspetos que podemos controlar num estado. O conceito foi desenvolvido para controlar o que utilizadores específicos podem fazer quando uma entidade atinge um determinado estado.

Em adição, as "Decisions" vêm com um campo de comentário que pode ser adicionado e definido como obrigatório, ou facultativo, com apenas um click.


Transições

"Transições" são o segundo aspeto que podemos controlar dentro de uma máquina de estados. Como o próprio nome indica, uma transição representa uma mudança de um estado para outro e permite avaliar e condicionar a sua execução.

As avaliações podem ser baseadas em "Decisões" previamente existentes, ou através de expressões C#.


Comportamentos

"Comportamentos" é o último aspeto que podemos controlar em state machines e irá permitir a execução de código C# em duas fases distintas:

  • On State In: quando um estado é atingido, executar C#;
  • On State Out: quando um estado é abandonado, executar C#;


Diagrama de Fluxo de Estados

Um dos grandes desafios de desenvolver máquinas de estado complexas reside na visualização do processo como um todo. Por essa razão implementamos um gerador automático de diagramas que apresenta todo o fluxo de estados diretamente no dashboard da Máquina de Estados, como demonstrado na imagem abaixo:

Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.

login para deixar a sua opinião.

Obrigado pelo seu feedback. Iremos analisá-lo para continuarmos a melhorar!
Artigos Relacionados
Primeiros Passos com OMNIA Debugging com o Visual Studio Máquinas de Estado: Workflows Avançados Nova Funcionalidade: Histórico de Entidades Notificações de email