GBR: ADR-002 Motor de Processos de Negócio (gbr_bpm) baseado em Topologia Algébrica e Efeitos Gerenciados | Wiki
Documentação de engenharia e especificações técnicas da Gleam-BR.
GBR: ADR-002 Motor de Processos de Negócio (gbr_bpm) baseado em Topologia Algébrica e Efeitos Gerenciados
- *Status:* Aceito
- *Data:* 2026-05-01
*Contexto:*
Sistemas corporativos de monitoramento e automação (como o projeto "Horus Falcon 2.0") tradicionalmente codificam regras de negócio ("Triggers") de forma imperativa (ex: se CPU > 90 então envie e-mail). Isso gera alto acoplamento, dificuldade de testes isolados e vulnerabilidades a condições de corrida (Race Conditions) quando milhões de eventos são avaliados simultaneamente. Precisávamos de um motor (BPE) capaz de orquestrar tarefas (Serviços Externos, LLMs, Alertas) com previsibilidade matemática e zero efeitos colaterais indesejados.
*Decisão:*
-
*Topologia Algébrica e Redes de Petri:* Adoção de Tipos de Dados Algébricos (ADTs) no pacote
gbr_bpm. Processos de negócio (BPMN) são modelados como Grafos Imutáveis (ProcessDef). O estado de execução é representado por umExecutionToken. -
*Cálculo Lambda (AST):* A avaliação de condições de roteamento (ex: Losangos de Decisão/Gateways) não utiliza avaliação de strings imperativa (
eval()). Foi implementado um interpretador próprio de Árvore Sintática Abstrata (AST) que realiza a redução lógico-matemática injetando as variáveis de telemetria diretamente no contexto. -
*Efeitos Gerenciados (Arquitetura Hexagonal Funcional):* A função de transição de estado da máquina (
machine.step) é matematicamente pura. Ela não executa chamadas de rede ou gravações em disco. Em vez disso, ela retorna o novoExecutionTokenacompanhado de uma lista de Intenções/Efeitos (Effect, ex:TriggerAlert). O Ator OTP externo (casca imperativa) é quem recebe esses Efeitos e "suja as mãos" no mundo real.
*Consequências:*
-
*Positivas:* Previsibilidade absoluta (Zero Race Conditions na avaliação de regras). Possibilidade de testar processos de negócio complexos inteiros apenas verificando as listas de
Effectsresultantes, sem a necessidade de Mocks de rede ou banco de dados. Preparação do terreno para a futura implementação de IAs executando inferência e gerando fluxogramas sem risco de injeção de código arbitrário. - *Negativas/Riscos:* Exige que a modelagem dos processos seja feita em uma linguagem estritamente tipada antes de ser traduzida para os Atores OTP. A equipe precisará desenvolver parsers (ex: XML do Camunda -> AST Gleam) para facilitar a adoção por usuários finais que não programam em Gleam.