Pular para o conteúdo principal

Decision Engine

O Building Block Decision Engine fornece um motor de regras para tomada de decisões automatizadas na Catalisa Platform, utilizando o padrão DMN (Decision Model and Notation).

Visão Geral

O módulo Decision Engine é tenant-scoped e permite:

  • Criar projetos de regras de negócio
  • Definir decisões usando DMN (padrão OMG)
  • Versionar regras com publicação controlada
  • Executar decisões com trace completo para debugging
  • Armazenar logs de execução para auditoria
  • Organizar decisões com tags

DMN - Decision Model and Notation

O Decision Engine utiliza o padrão DMN 1.3 com o motor Camunda DMN Engine, permitindo:

  • Decision Tables: Tabelas de decisão com múltiplas condições
  • Hit Policies: FIRST, UNIQUE, COLLECT, ANY, etc.
  • FEEL Expressions: Linguagem de expressão para condições complexas
  • Trace de Execução: Visualizar quais regras foram avaliadas/acionadas
Guia Completo

Consulte o Guia DMN para sintaxe FEEL e boas práticas.

Base URL

https://api.catalisa.io/decision-engine

Recursos

RecursoDescrição
ProjetosAgrupamento lógico de decisões
DecisõesDefinição de regras de negócio
VersõesVersionamento de decisões (DMN)
TagsOrganização de decisões
Logs de ExecuçãoHistórico de execuções
Guia DMNSintaxe FEEL e boas práticas
ExemplosCasos práticos de uso

Hierarquia de Recursos

Projeto
└── Decisão
└── Versão (DRAFT → PUBLISHED → ARCHIVED)
└── Conteúdo DMN (XML)

Fluxo de Trabalho

1. Criar Projeto   →   2. Criar Decisão   →   3. Criar Versão   →   4. Publicar   →   5. Executar
POST /projects POST /decisions POST /versions POST /publish POST /execute
(com DMN XML)

Status de Decisão

StatusDescrição
DRAFTEm desenvolvimento
ACTIVEAtiva para execução
ARCHIVEDArquivada

Status de Versão

StatusDescrição
DRAFTRascunho (editável)
PUBLISHEDPublicada (executável)
ARCHIVEDArquivada

Endpoints Principais

MétodoEndpointDescrição
POST/api/v1/projectsCriar projeto
POST/api/v1/decisionsCriar decisão
POST/api/v1/decisions/:id/versionsCriar versão (DMN)
POST/api/v1/versions/:id/publishPublicar versão
POST/api/v1/decisions/:id/executeExecutar decisão

Exemplo Rápido

1. Criar Projeto

{
"name": "Análise de Crédito",
"key": "credit-analysis",
"description": "Regras de aprovação de crédito"
}

2. Criar Decisão

{
"projectId": "project-uuid",
"name": "Score Mínimo",
"key": "minimum-score",
"description": "Verifica score mínimo para aprovação"
}

3. Criar Versão (DMN)

{
"version": "1.0.0",
"content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>..."
}

O campo content deve conter um DMN XML válido. Veja Guia DMN para a estrutura completa.

4. Executar Decisão

Request:

{
"input": {
"score": 720,
"rendaMensal": 8000
}
}

Response:

{
"output": "APROVADO|1.49|60|0.20|Bom perfil",
"trace": [
{
"decisionId": "creditDecision",
"decisionName": "Credit Decision",
"outcome": "APROVADO|1.49|60|0.20|Bom perfil",
"rulesEvaluated": [
{
"ruleId": "rule_denied_score",
"triggered": false,
"conditions": ["score: 720"],
"outcome": null
},
{
"ruleId": "rule_approved_good",
"triggered": true,
"conditions": ["score: 720", "rendaMensal: 8000"],
"outcome": "APROVADO|1.49|60|0.20|Bom perfil"
}
]
}
],
"executionTimeMs": 45,
"versionUsed": "1.0.0"
}
Trace de Execução

O campo trace mostra todas as regras avaliadas e qual foi acionada (triggered: true). Isso facilita o debugging e auditoria das decisões.

Estrutura de Dados

Projeto

{
"data": {
"type": "projects",
"id": "uuid",
"attributes": {
"name": "Análise de Crédito",
"key": "credit-analysis",
"description": "Regras de aprovação"
}
}
}

Decisão

{
"data": {
"type": "decisions",
"id": "uuid",
"attributes": {
"projectId": "project-uuid",
"name": "Score Mínimo",
"key": "minimum-score",
"status": "ACTIVE"
}
}
}

Versão

{
"data": {
"type": "decision-versions",
"id": "uuid",
"attributes": {
"decisionId": "decision-uuid",
"version": "1.0.0",
"status": "PUBLISHED",
"publishedAt": "2024-01-15T11:00:00Z"
}
}
}