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
| Recurso | Descrição |
|---|---|
| Projetos | Agrupamento lógico de decisões |
| Decisões | Definição de regras de negócio |
| Versões | Versionamento de decisões (DMN) |
| Tags | Organização de decisões |
| Logs de Execução | Histórico de execuções |
| Guia DMN | Sintaxe FEEL e boas práticas |
| Exemplos | Casos 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
| Status | Descrição |
|---|---|
DRAFT | Em desenvolvimento |
ACTIVE | Ativa para execução |
ARCHIVED | Arquivada |
Status de Versão
| Status | Descrição |
|---|---|
DRAFT | Rascunho (editável) |
PUBLISHED | Publicada (executável) |
ARCHIVED | Arquivada |
Endpoints Principais
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /api/v1/projects | Criar projeto |
| POST | /api/v1/decisions | Criar decisão |
| POST | /api/v1/decisions/:id/versions | Criar versão (DMN) |
| POST | /api/v1/versions/:id/publish | Publicar versão |
| POST | /api/v1/decisions/:id/execute | Executar 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"
}
}
}