Skip to main content

Ciclo de vida do processo

Nessa página será possível entender como um ciclo de execução de um processo no FlowBuild.

Veja abaixo o diagrama de execução:

ciclo-api

diagrama de estados

Ciclo Básico#

A engine recebe uma requisição de startWorkflow

Criação do processo#

Nesse momento a entidade workflow é sensibilizada, retornando a blueprint a ser utilizada.

Um processo é criado, copiando a blueprint da entidade workflow para a entidade processo.

O primeiro estado do processo é criado, no status UNSTARTED.

A criação de um estado envia um evento que será capturado pelo StateListener que poderá implementar ações customizadas que não afetam a execução do processo em si.

A criação do processo gera um retorno para o solicitante do ID do processo criado.

Inicialização do processo#

Com o processo no estado UNSTARTED, a engine executa a ação de inicializar o processo. Isso gera um novo estado no processo, com o status RUNNING.

Assim como o estado anterior, isso dispara um evento que é capturado pelo StateListener.

Loop de Execução#

Com o processo em status RUNNING, este processo é identificado pela engine como um processo disponível para execução.

O processo é capturado por uma engine disponível, que irá executar o próximo nó do processo.

A execução de um nó do processo poderá resultar em 4 possíveis novos estados:

  • RUNNING: quando o nó é executado com sucesso.
  • FINISHED: quando o nó executado é do tipo FinishNode.
  • ERROR: quando a execução do nó resulta em um erro não tratado.
  • DELEGATED: quando o nó instrui o processo a iniciar um subprocesso.
  • PENDING: quando o nó instrui o processo a aguardar a expiração de um timer.
  • WAITING: quando o nó instrui o processo a delegar a tarefa a um Activity Manager.

A engine continuará em um loop de execução enquanto o estado gerado for igual a RUNNING.

Timers#

No caso da existência de prazos de expiração, que poderão existir em nós de timer e atividades de usuário, a entidade timer será sensibilizada, criado uma nova instância, vinculada ao processo ou atividade relacionada, dependendo do tipo de nó que originou a demanda.

Activity Managers#

Quando o processo atinge um nó de usuário (userTask), é gerado um estado com status WAITING e a entidade activity manager é sensibilizada, criando uma nova instância.

O Activity Manager receberá os parameters do nó, sendo parte desses compartilhados com o canal (action, input, timeout, activity_schema) e outros utilizados internamente para gestão da atividade (type, next_node_id).

A criação de um Activity Manager gera um evento específico, que é capturado por um listener independente, o ActivityManagerListener que poderá ser configurado para tomar ações como notificação de canais, disparos de eventos de telemetria, etc.

O processo permanece em espera até a conclusão do Activity Manager, que poderá ocorrer em 2 situações:

  1. Conclusão da atividade pelo usuário.
  2. Expiração do activity manager, caso um timeout tenha sido definido.

Em ambas situações, o status do activity manager é atualizado e um novo estado é gerado no processo, com status RUNNING, que resulta na retomada do loop de execução.