1. Visão de Negócio (Usuário de Processo)
O que são sinais no FlowFast
- Sinais são usados dentro da mesma instância de processo, não afetando processos externos ou instâncias diferentes.
- Eles servem para sincronizar ou ativar condições internas ao fluxo.
Elementos relevantes que envolvem sinais
- Envio de sinal: ponto no fluxo onde um sinal interno é emitido.
- Aguarda sinal (intermediário ou borda): pontos onde o fluxo espera esse sinal específico para continuar ou desviar.
- Aguarda sinal (início): ponto onde pode ser iniciado uma nova sequencia, numa instancia já existente, com um sinal enviado externamente usando a função wfl_sinal_ext_prc.
- Eventos de borda podem ser de dois tipos: com interrupção (a tarefa aberta é finalizada) ou sem interrupção (a tarefa permanece aberta).
- Fim com envio de sinal: para emitir um sinal ao encerrar parte ou toda instância, útil se há eventos aguardando.
Exemplos de uso prático (localizados na instância)
- Você pode ter no meio de uma tarefa “Verificação”, um evento de borda “Aguarda sinal com interrupção” para casos de exceção interna: se o sinal “Verificação OK” ou “Verificação Falhou” for emitido, a tarefa “Verificação” é fechada e segue por caminhos diferentes.
- Em outro ponto, um evento intermediário “Aguarda sinal” que bloqueia entre duas tarefas: por exemplo, depois de “Coleta de Documentos”, espera-se o sinal “Documentos Recebidos” para prosseguir para “Análise”. Se esse sinal já tiver sido enviado antes da instância chegar nesse ponto, o fluxo segue imediatamente.
2. Visão Técnica (Desenvolvedores)
Regras de implementação no FlowFast
- Sinais são tratados apenas na instância corrente. O sistema não considera sinais externos ou que afetem outras instâncias.
Quando um evento intermediário “Aguarda sinal” é definido:
- Ele cria um ponto de espera na instância.
- Se o sinal já tiver sido emitido anteriormente (na instância), esse evento é executado imediatamente (não espera).
- Se o sinal for emitido depois que o fluxo chega, ele será capturado, e o fluxo continua.
Para eventos de borda:
- Interrupção: se o sinal vier enquanto a tarefa está aberta, a tarefa é interrompida/fechada e fluxo segue pela sequencia do evento de borda.
- Sem interrupção: a tarefa permanece aberta e a sequencia a partir do evento é executada.
- No evento final “Fim com envio de sinal”, ao encerrar o processo ou uma sequência, é possível emitir um sinal para liberar outros eventos aguardando sinal dentro da mesma instância.
Pontos de atenção / restrições
- Não há retenção de sinais anteriores para eventos de borda — ou seja, se o sinal foi emitido antes da tarefa abrir, um evento de borda “aguarda sinal” não será disparado para aquela tarefa.
- Importante rastrear qual sinal foi emitido, em que momento da instância, para evitar inconsistência ou casos em que o fluxo fica bloqueado indevidamente.
- Garantir que os modelos/processos especifiquem claramente os nomes de sinais usados para evitar colisões ou confusão interna.