Gleam.br Wiki

⚙️ GBR: MCP BPMN/DMN (Motor de Workflows Especializado) | Governança

Especificação técnica e manual do componente gbr_mcp_bpm.

⚙️ 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:

  1. **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).

  2. **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).

  3. **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).

  4. **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).

  5. **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