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 BásicoA engine recebe uma requisição de startWorkflow
#
Criação do processoNesse 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 processoCom 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çãoCom 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.
#
TimersNo 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 ManagersQuando 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:
- Conclusão da atividade pelo usuário.
- 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.