AutoflowGuia do implantador
0 / 60
Buscar

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:

U · UNIQUE

“Só uma linha pode casar”

As linhas não podem se sobrepor. Se duas casarem, é erro — e o processo vira incidente.

F · FIRST

“Vale a primeira linha”

Lê de cima para baixo e para na primeira que casar. A ordem das linhas importa.

C · COLLECT

“Junta o resultado de todas”

Devolve as saídas de todas as linhas que casaram, como uma lista.

O que não existe no Autoflow

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:

Tabela de decisãoDocumentos por tipo de venda (COLLECT)
Regra real do pacote Concessionária (docsPorTipoDeVenda). COLLECT junta as saídas de TODAS as linhas que casam. O resultado vira a lista "Itens a pedir" da Solicitação de documentos.
1 · Dados do caso (o que o processo envia para a regra)
CEntrada
Tipo de pessoa
string
Saída
Documento exigido
string
Anotação
1✓ usada
Sempre
2✓ usada
3✓ usada
4
5
2 · Resultado (o que volta para o processo como variável)
docsExigidos = NOTA_FISCAL,CNH,COMPROVANTE_ENDERECO (no Autoflow vira texto separado por vírgula)
Sintaxe nas células: - qualquer valor · > 5 <= 10 comparação · [1..10] intervalo · "PF" texto · "A","B" um dos valores · not("X") negação · true/false.
  • 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:

Tabela de decisãoAlçada de desconto (Concessionária)
Regra real do pacote Concessionária (alcadaDesconto). Quem precisa aprovar um desconto depende do percentual. A saída "aprovador" é um CARGO e pode alimentar o grupo candidato da próxima tarefa.
1 · Dados do caso (o que o processo envia para a regra)
FEntrada
Percentual de desconto
number
Saída
Precisa aprovação?
boolean
Saída
Aprovador (cargo)
string
Anotação
1
Acima de 15%: administrador do grupo
2✓ usada
Acima de 5%: gerente da matriz
3casou (ignorada)
Senão: o próprio consultor
2 · Resultado (o que volta para o processo como variável)
precisaAprovacao = trueaprovador = MATRIX_MANAGER(linha 2)
Sintaxe nas células: - qualquer valor · > 5 <= 10 comparação · [1..10] intervalo · "PF" texto · "A","B" um dos valores · not("X") negação · true/false.

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.

Por que isso importa para o consultor

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.
QuizVerifique seu entendimento0/4 respondidas · 0 certas
1.Uma tabela de prazos tem a linha "-" (regra geral) no TOPO e exceções embaixo, com política FIRST. O que acontece?
2.Qual política usar para "quais pareceres este pedido precisa"?
3.Com UNIQUE, duas linhas casaram no mesmo caso. O que acontece no processo?
4.O cliente quer "somar os pontos de cada critério" numa tabela. O Autoflow faz isso com COLLECT?