Código fonte Wiki de Eventos de sinal
Última modificação por FlowFast em 2025/09/24 15:31
Ocultar últimos autores
| author | version | line-number | content |
|---|---|---|---|
| |
1.1 | 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. | ||
| |
1.2 | 12 | * **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. |
| |
1.1 | 13 | * Eventos de borda podem ser de dois tipos: **com interrupção** (a tarefa aberta é finalizada) ou **sem interrupção** (a tarefa permanece aberta). |
| 14 | * **Fim com envio de sinal**: para emitir um sinal ao encerrar parte ou toda instância, útil se há eventos aguardando. | ||
| 15 | |||
| 16 | === Exemplos de uso prático (localizados na instância) === | ||
| 17 | |||
| 18 | * 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. | ||
| 19 | * 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. | ||
| 20 | |||
| 21 | == 2. Visão Técnica (Desenvolvedores) == | ||
| 22 | |||
| 23 | === Regras de implementação no FlowFast === | ||
| 24 | |||
| 25 | * Sinais são tratados apenas **na instância corrente**. O sistema não considera sinais externos ou que afetem outras instâncias. | ||
| 26 | * ((( | ||
| 27 | Quando um evento intermediário “Aguarda sinal” é definido: | ||
| 28 | |||
| 29 | * Ele cria um ponto de espera na instância. | ||
| 30 | * Se o sinal já tiver sido emitido anteriormente (na instância), esse evento é executado imediatamente (não espera). | ||
| 31 | * Se o sinal for emitido depois que o fluxo chega, ele será capturado, e o fluxo continua. | ||
| 32 | ))) | ||
| 33 | * ((( | ||
| 34 | Para eventos de borda: | ||
| 35 | |||
| 36 | * **Interrupção**: se o sinal vier enquanto a tarefa está aberta, a tarefa é interrompida/fechada e fluxo segue pela sequencia do evento de borda. | ||
| 37 | * **Sem interrupção**: a tarefa permanece aberta e a sequencia a partir do evento é executada. | ||
| 38 | ))) | ||
| 39 | * 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. | ||
| 40 | |||
| 41 | === Pontos de atenção / restrições === | ||
| 42 | |||
| 43 | * 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. | ||
| 44 | * 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. | ||
| 45 | * Garantir que os modelos/processos especifiquem claramente os nomes de sinais usados para evitar colisões ou confusão interna. |