Código fonte Wiki de Eventos de sinal

Versão 1.1 por FlowFast em 2025/09/24 15:17

Mostrar últimos autores
1 == 1. Visão de Negócio (Usuário de Processo) ==
2
3 === O que são sinais no FlowFast ===
4
5 * Sinais são usados **dentro da mesma instância de processo**, não afetando processos externos ou instâncias diferentes.
6 * Eles servem para sincronizar ou ativar condições internas ao fluxo.
7
8 === Elementos relevantes que envolvem sinais ===
9
10 * **Envio de sinal**: ponto no fluxo onde um sinal interno é emitido.
11 * **Aguarda sinal (intermediário ou borda)**: pontos onde o fluxo espera esse sinal específico para continuar ou desviar.
12 * Eventos de borda podem ser de dois tipos: **com interrupção** (a tarefa aberta é finalizada) ou **sem interrupção** (a tarefa permanece aberta).
13 * **Fim com envio de sinal**: para emitir um sinal ao encerrar parte ou toda instância, útil se há eventos aguardando.
14
15 === Exemplos de uso prático (localizados na instância) ===
16
17 * 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.
18 * 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.
19
20 == 2. Visão Técnica (Desenvolvedores) ==
21
22 === Regras de implementação no FlowFast ===
23
24 * Sinais são tratados apenas **na instância corrente**. O sistema não considera sinais externos ou que afetem outras instâncias.
25 * (((
26 Quando um evento intermediário “Aguarda sinal” é definido:
27
28 * Ele cria um ponto de espera na instância.
29 * Se o sinal já tiver sido emitido anteriormente (na instância), esse evento é executado imediatamente (não espera).
30 * Se o sinal for emitido depois que o fluxo chega, ele será capturado, e o fluxo continua.
31 )))
32 * (((
33 Para eventos de borda:
34
35 * **Interrupção**: se o sinal vier enquanto a tarefa está aberta, a tarefa é interrompida/fechada e fluxo segue pela sequencia do evento de borda.
36 * **Sem interrupção**: a tarefa permanece aberta e a sequencia a partir do evento é executada.
37 )))
38 * 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.
39
40 === Pontos de atenção / restrições ===
41
42 * 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.
43 * 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.
44 * Garantir que os modelos/processos especifiquem claramente os nomes de sinais usados para evitar colisões ou confusão interna.