AutoflowGuia do implantador
0 / 60
Buscar

Trilha 03 · DMN e regras de negócio

Tabela de decisão interativa

Aprenda lendo e editando tabelas reais. Ao final você saberá montar uma regra no Autoflow do zero — entradas, saídas, linhas, teste e publicação — e ligá-la ao fluxo.

Anatomia de uma tabela

Coluna azul

Entradas

O que a regra lê. Cada entrada tem um nome (a variável do processo) e um tipo. Nas células vão testes: “maior que 5”, “igual a PF”.

Coluna verde

Saídas

O que a regra devolve. Nas células vão valores: 15, “GROUP_ADMIN”, true.

Canto superior

Hit policy

A letra (U, F, C) diz o que fazer se mais de uma linha casar. Lição seguinte.

Uma linha casa quando todos os testes de entrada dela passam. As células de uma mesma linha são ligadas por “E”: a linha >= 60 / false significa “idade maior ou igual a 60 e sem determinação judicial”.

Laboratório

Use a tabela abaixo para praticar. Ela tem quatro exemplos — três deles reais, dos pacotes de segmento do Autoflow. Faça os exercícios sugeridos depois do componente.

Tabela de decisãoPrioridade de atendimento (órgão público)
Exemplo:
Exemplo de setor público: a prioridade do requerimento depende da idade do requerente e de ser caso judicial. Em UNIQUE, as linhas não podem se sobrepor — teste idade 70 com judicial = true e veja o conflito se você editar uma linha.
1 · Dados do caso (o que o processo envia para a regra)
UEntrada
Idade do requerente
number
Entrada
Determinação judicial?
boolean
Saída
Prioridade
string
Saída
Prazo (dias)
number
Anotação
1
Ordem judicial sempre primeiro
2✓ usada
Estatuto da Pessoa Idosa
3
2 · Resultado (o que volta para o processo como variável)
prioridade = PRIORITARIAprazoDias = 10(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.

Exercícios

  1. Prioridade de atendimento. Teste idade 59 e 60 com judicial false. Por que >= e não > faz diferença aqui? (Casos de borda são onde regras mal escritas falham.)
  2. Mesma tabela. Mude a primeira linha de - para >= 60 na coluna idade e teste idade 70 com judicial true. O que deixou de funcionar? (A ordem judicial deixou de valer para quem tem menos de 60.)
  3. Prazo por ato. Teste "AGRAVO". Qual linha respondeu? Agora apague a última linha e teste de novo. O que voltou?
  4. Documentos por tipo de venda. Teste "PF" e "PJ". Repare que COLLECT devolve vários valores. Troque a hit policy para FIRST e veja o que se perde.
  5. Alçada de desconto. Teste 15. Quem aprova? E 15,01? Discuta com um colega se o cliente quis dizer “acima de 15” ou “a partir de 15”.
Por que tanto cuidado com bordas

Um erro de > versus >= numa alçada pode fazer um desconto de exatamente 15% passar sem aprovação de diretoria. Em órgão público, pode tirar um idoso de 60 anos exatos da fila prioritária. Sempre pergunte ao cliente sobre o valor exato do limite e anote a resposta.

A sintaxe das células (FEEL simplificado)

As células de entrada usam testes da linguagem FEELFEEL — Friendly Enough Expression Language — linguagem das células DMN: > 10, [1..5], "PF", not("X").. Você vai usar quase sempre estes:

Escreva Significa Exemplo
- qualquer valor linha “senão”
> 5000 maior que valor do pedido
<= 10 menor ou igual dias de atraso
[1..10] entre 1 e 10, inclusive faixa de pontuação
"PF" texto exatamente igual tipo de pessoa
"A","B" um dos valores tipos de ato com o mesmo prazo
not("X") diferente de tudo menos cancelamento
true / false sim / não tem procurador?

A próxima lição sobre FEEL aprofunda intervalos abertos, datas e erros comuns.

Tipos de dados no Autoflow

No editor de regras do Autoflow, cada entrada e saída tem um tipo. Escolher o tipo certo evita erros e libera recursos especiais.

Tipo na UI Entrada Saída Para que serve
Texto sim sim categorias, códigos: "PF", "APELACAO"
Número sim sim valores, dias, percentuais
Data sim sim datas de referência
Cargo — sim devolve uma chave de cargo, conferida na publicação; pode virar o responsável de uma tarefa
Unidade sim — decidir pela matriz/filial do processo
Documento — sim só em “Junta o resultado de todas”: lista de documentos para a Solicitação de documentos

Também existe o tipo sim/não (booleano) para entradas e saídas, como em precisaAprovacao.

Saída do tipo Cargo: responsável dinâmico

É um dos recursos mais poderosos. A regra alcadaDesconto devolve aprovador com tipo Cargo. No fluxo, a tarefa “Aprovar desconto” recebe como grupo candidato a expressão ${aprovador}. Resultado: se o desconto for 12%, a tarefa aparece na fila do Gerente de matriz; se for 20%, na do Administrador do grupo. Mudou a política de alçadas? Publique nova versão da regra. O fluxo não muda.

Atenção

O editor de fluxos só aceita ${variavel} como grupo candidato se essa variável for saída do tipo Cargo de uma regra anterior (validação rule.positionVariable). E se a regra devolver vazio (nenhuma linha casou), a tarefa fica sem candidato — ninguém a vê. Por isso a linha “senão” é obrigatória na prática.

Saída do tipo Documento: lista de itens a pedir

Com a política “Junta o resultado de todas”, a regra docsPorTipoDeVenda devolve docsExigidos como uma lista separada por vírgulas: NOTA_FISCAL,CNH,COMPROVANTE_ENDERECO. No bloco Solicitação de documentos, o campo Itens a pedir recebe ${docsExigidos}, e o sistema pede só aqueles documentos. Pessoa física e jurídica passam pelo mesmo bloco, cada uma com sua lista.

Passo a passo: criar uma regra no Autoflow

  1. Abra Administração › Modelagem › Regras e crie uma nova regra. Dê uma chave estável (ela é usada pelo fluxo) e um nome legível.
  2. Declare as entradas em “Entradas (o que a regra lê)”. Use exatamente a mesma chave que o campo do formulário que alimenta aquele dado.
  3. Declare as saídas em “Saídas (o que a regra grava)”. Cada saída vira uma variável simples do processo com aquele nome.
  4. Escolha a política em “Quando mais de uma linha casa”.
  5. Preencha as linhas, terminando com a linha “senão”. Use a anotação para registrar o motivo ou a base legal.
  6. Clique em Testar. O Autoflow faz uma publicação temporária no motor real, avalia com os valores que você informou, mostra as saídas e destaca as linhas que casaram, e depois remove a publicação temporária. É o mesmo motor da produção: se passou no teste, vai funcionar.
  7. Salve rascunho enquanto ajusta; Publique quando estiver validada com o dono da regra.
  8. No fluxo, coloque o bloco Regra de negócio, escolha a regra e use as saídas nos gateways, no responsável das tarefas ou em “Itens a pedir”.
O que o editor de fluxos gera por baixo

Ao escolher a regra no bloco, o editor gera a referência à decisão com vínculo “latest”, o mapeamento do resultado (único ou coleção) e um parâmetro de saída para cada saída da regra. Você não precisa escrever XML; o validador do editor também recusa publicar se a regra não existir (rule.unknown) ou não estiver escolhida (rule.missing).

Versões e assinatura

Uma regra também tem versões. Duas regras importantes para planejar mudanças:

  • Vigência “latest”: a versão publicada vale na próxima avaliação de todos os processos, inclusive os que já estão rodando. Decisões já tomadas ficam gravadas como foram.
  • Assinatura protegida: com a regra em uso por algum fluxo, uma nova versão não pode remover, renomear nem trocar o tipo de uma saída (erro rule_signature_incompatible). Isso evita quebrar processos que dependem daquela variável. Precisa mudar a saída? Crie uma regra nova e troque o bloco no fluxo.

Resumo

  • Linhas casam quando todos os testes de entrada passam (E lógico).
  • Células de entrada são testes FEEL; células de saída são valores.
  • No Autoflow há tipos especiais: Cargo (responsável dinâmico) e Documento (itens a pedir).
  • Sempre feche com uma linha “senão” e teste os casos de borda.
  • Testar usa o motor real; a versão publicada vale na próxima avaliação de todos os processos.
QuizVerifique seu entendimento0/4 respondidas · 0 certas
1.Uma linha tem as células "> 5000" e ""PJ"". Quando ela casa?
2.Você quer que a tarefa "Aprovar desconto" vá para cargos diferentes conforme o percentual. Qual o caminho certo no Autoflow?
3.A regra já é usada por um fluxo e você quer renomear a saída "prazoDias" para "prazo". O que acontece?
4.O botão Testar do editor de regras…
AnteriorPor que separar regras