⚙️ GBR: MCP BPMN/DMN (Motor de Workflows Especializado) | Governança
⚙️ GBR: MCP BPMN/DMN (Motor de Workflows Especializado)
Bem-vindo ao **gbr_mcp_bpm*! Este é o servidor MCP (Model Context Protocol) especializado para o motor de processos de negócios e tabelas de decisão (BPMN 2.0 & DMN*). Ele expõe uma interface declarativa para permitir que o LLM controle, gerencie e audite fluxos de execução de forma estruturada.
🎯 Motivo de Existir
Os Modelos de Linguagem são ótimos em raciocínio, mas precisam de mecanismos rígidos e determinísticos para orquestrar fluxos de negócios e automações complexas que necessitam de auditoria e persistência tolerante a falhas.
O gbr_mcp_bpm resolve isso ao integrar a flexibilidade dos LLMs com a robustez de uma máquina de estados BPMN. Ele permite que o agente faça deploy de regras de negócios e processos definidos formalmente em BPMN 2.0 (XML), inicie instâncias de processos, forneça variáveis dinâmicas de decisão e avance a execução passo a passo — tudo persistido nativamente na infraestrutura *Mnesia* do Erlang.
🛠️ Ferramentas Expostas (MCP Catalog)
Este servidor expõe o seguinte catálogo de ferramentas para a interface MCP:
-
**
deploy_process_definition*: - *Descrição: Analisa e armazena o XML de uma definição de processo BPMN 2.0 no banco de dados Mnesia. - Parâmetros:xml_content(String contendo o XML completo). -
**
start_process_instance*: - *Descrição: Inicia uma nova instância de execução a partir do ID de um processo previamente deployado. - Parâmetros:process_def_id(ID do processo),initial_payload_json(Payload inicial de variáveis em formato JSON string). -
**
execute_process_step*: - *Descrição: Avalia caminhos lógicos da máquina do BPM e avança o token da instância de execução em um passo (transição de nó). - Parâmetros:process_instance_id(ID da instância),variables_json(JSON contendo variáveis a atualizar ou injetar para guiar a lógica da transição). -
**
create_oracle_ticket*: - *Descrição: Registra um ticket durável de oráculo no Mnesia correlacionando a execução com a memória ou instruções específicas do LLM. - Parâmetros:process_instance_id(ID da instância),original_prompt(Prompt do usuário associado). -
**
get_process_status*: - *Descrição: Retorna o nó de execução atual e as variáveis acumuladas da instância de processo. - Parâmetros:process_instance_id(ID da instância).
🏗️ Persistência & FFI Erlang
- *Mnesia local*: A persistência é gerenciada nativamente no Mnesia, permitindo que as execuções de processos sobrevivam a reinicializações das aplicações.
-
**FFI (
gbr_bpm_mcp_ffi.erl)**: O projeto utiliza chamadas nativas em Erlang para obter identificadores únicos (generate_id/0) e medir o tempo do sistema com precisão em milissegundos (get_timestamp_ms/0).
💻 Como Utilizar
Este projeto é executado automaticamente pelo proxy unificado gbr_ai_gleam, mas você pode iniciá-lo individualmente como um servidor MCP stdio independente:
gleam run
🧪 Rodando Testes e Validações
Para rodar a suíte de testes unitários do motor MCP de BPM:
gleam test