Trilha 03 · DMN e regras de negócio
Hit policies
O que acontece quando duas linhas da tabela casam ao mesmo tempo? A hit policy responde. Escolher a errada é a causa mais comum de regra que "às vezes funciona".
O problema
Veja a alçada de desconto: linhas > 15 e > 5. Um desconto de 20% casa com as duas — 20 é maior que 15 e também maior que 5. Qual aprovador vale? A tabela precisa de uma política para isso. Essa política é a hit policyHit policy — Política que define o que fazer quando mais de uma linha casa: UNIQUE (só uma pode), FIRST (vale a primeira), COLLECT (junta todas)., indicada pela letra no canto da tabela.
As três políticas do Autoflow
O padrão DMN define sete políticas. O Autoflow suporta as três que resolvem praticamente todos os casos de processos administrativos, com nomes em português no editor:
“Só uma linha pode casar”
As linhas não podem se sobrepor. Se duas casarem, é erro — e o processo vira incidente.
“Vale a primeira linha”
Lê de cima para baixo e para na primeira que casar. A ordem das linhas importa.
“Junta o resultado de todas”
Devolve as saídas de todas as linhas que casaram, como uma lista.
As políticas ANY, PRIORITY, RULE ORDER, OUTPUT ORDER e as agregações de COLLECT (soma, mínimo, máximo, contagem) não são oferecidas. Em COLLECT, a regra precisa ter exatamente uma saída. Se um cliente pedir “somar os pontos de todas as linhas”, resolva com outra modelagem (por exemplo, uma regra por critério e a soma num campo) ou anote como necessidade futura.
FIRST — “Vale a primeira linha”
É a mais usada para faixas e exceções seguidas de regra geral. Você escreve do caso mais específico para o mais geral, e termina com “senão”.
- Alçadas:
> 15, depois> 5, depois-. - Prazos: exceções primeiro (
"EMBARGOS_DECLARACAO"= 5), regra geral por último.
Vantagem: simples e tolerante a sobreposição. Risco: alguém reordena as linhas e a regra muda de significado sem ninguém perceber. Na revisão com o cliente, leia em voz alta: “primeiro testamos…, se não, …”.
UNIQUE — “Só uma linha pode casar”
Use quando as linhas descrevem casos mutuamente exclusivos e você quer que o sistema denuncie qualquer sobreposição. É a política mais segura para regras críticas, porque um erro de cadastro vira um incidente visível, não uma decisão silenciosamente errada.
Exemplo: prioridade de atendimento por idade (< 60 / >= 60) e ordem judicial. As faixas não se tocam.
Vantagem: a ordem não importa e erros aparecem. Risco: se você esquecer um caso, nenhuma linha casa e o resultado é vazio; se duas linhas se sobrepuserem, o processo para em incidente. Ao publicar regras UNIQUE ou FIRST sem linha “senão”, o Autoflow avisa.
COLLECT — “Junta o resultado de todas”
Use quando a resposta é uma lista: documentos exigidos, áreas que precisam dar parecer, alertas que se aplicam. Cada linha acrescenta um item.
No Autoflow, o resultado vira um texto separado por vírgulas — formato pronto para o campo Itens a pedir da Solicitação de documentos.
Compare na prática
Abaixo, a tabela de documentos por tipo de venda. Ela foi feita para COLLECT. Teste com "PF" e depois troque a hit policy no seletor:
- Em COLLECT:
NOTA_FISCAL,CNH,COMPROVANTE_ENDERECO. Correto. - Em FIRST: só
NOTA_FISCAL— a primeira linha (-) casa sempre e esconde as demais. - Em UNIQUE: erro, porque três linhas casam.
Agora faça o contrário com a alçada:
Troque para UNIQUE e teste 20. Erro: as linhas > 15, > 5 e - casam juntas. Para usar UNIQUE nessa tabela você teria de reescrever com faixas fechadas: > 15, (5..15], <= 5.
A hit policy é uma decisão de negócio, não técnica. Ela traduz perguntas como “existe um caso que se encaixa em duas categorias?” e “a regra mais específica deve vencer?”. Faça essas perguntas ao cliente. As respostas definem a política e evitam a situação clássica: a regra funcionou em todos os testes e falhou no primeiro caso estranho de produção.
Como escolher
| Pergunta | Se sim |
|---|---|
| A resposta é uma lista de itens? | COLLECT |
| Existem exceções que devem vencer a regra geral? | FIRST, exceções em cima |
| São faixas que você consegue escrever sem sobreposição e quer erro se houver? | UNIQUE |
| O cliente vai editar a tabela sozinho depois? | Prefira UNIQUE (erros aparecem) ou FIRST com anotações claras |
Resumo
- A hit policy define o que fazer quando várias linhas casam.
- O Autoflow oferece UNIQUE (“Só uma linha pode casar”), FIRST (“Vale a primeira linha”) e COLLECT (“Junta o resultado de todas”, sem agregação, uma saída).
- FIRST: ordem importa, do específico para o geral. UNIQUE: sem sobreposição, erros viram incidente. COLLECT: listas.
- Sempre teste a mesma tabela com casos de borda depois de trocar a política.