AutoflowGuia do implantador
0 / 60
Buscar

Trilha 03 · DMN e regras de negócio

Expressões FEEL

FEEL é a "linguagem das células" do DMN. Você não precisa ser programador — com uma dúzia de padrões escreve qualquer regra de processo administrativo. E aprende a diferença para as expressões JUEL dos gateways.

Duas linguagens, dois lugares

No Autoflow você vai escrever expressões em dois lugares diferentes, com sintaxes diferentes. Confundi-las é um erro clássico.

Onde Linguagem Exemplo
Células de entrada da tabela de decisão FEELFEEL — Friendly Enough Expression Language — linguagem das células DMN: > 10, [1..5], "PF", not("X"). (teste unário) > 5000
Condição no fluxo que sai de um gateway JUELJUEL — Linguagem de expressão usada nas condições do Camunda: ${valor > 5000}, ${tipo == 'PJ'}. ${valor > 5000}

Na tabela, a coluna já sabe qual variável está testando (está no cabeçalho), então você escreve só o teste: > 5000. No gateway, não há cabeçalho: você escreve a comparação inteira, entre ${ e }.

Por que isso importa

O FEEL foi desenhado para ser lido por gente de negócio (“Friendly Enough Expression Language”). Uma célula [18..65] é entendida por um gestor sem explicação. Essa legibilidade é exatamente o motivo de usar DMN.

Testes unários: o que vai nas células de entrada

Comparações numéricas

Célula Lê-se Casa com
> 5000 maior que 5000 5000,01 · 10000
>= 60 maior ou igual a 60 60 · 61
< 18 menor que 18 17
<= 30 até 30 30 · 12
30 igual a 30 só 30

Intervalos

Célula Significa
[1..10] de 1 a 10, incluindo os dois
(5..15] maior que 5 e até 15
[0..18) de 0 até antes de 18

Colchete [ ] inclui o limite; parêntese ( ) exclui. Intervalos são ótimos para tabelas UNIQUE: < 5, [5..15], > 15 cobrem todos os números sem sobreposição.

Texto

Célula Significa
"PF" exatamente PF (maiúsculas importam)
"CONTESTACAO","REPLICA","APELACAO" qualquer um desses
not("CANCELADO") qualquer coisa menos CANCELADO
Compare o valor, não o rótulo

Num formulário com uma lista “Pessoa física=PF”, o que fica gravado na variável é o valor PF, não o rótulo “Pessoa física”. A célula precisa ser "PF". No editor de formulários do Autoflow, as opções de Lista e Opções são escritas como rótulo=valor. Confira sempre o lado direito.

Sim / não

true ou false. Num formulário, a Caixa de seleção grava um booleano.

Qualquer valor

- (traço). Use em entradas que não importam para aquela linha e na linha “senão”.

Pratique

Escreva testes na tabela abaixo. Sugestões: troque >= 60 por [60..200]; acrescente uma linha [0..12) com prioridade "CRIANCA"; escreva um texto sem aspas e veja o erro.

Tabela de decisãoPrioridade de atendimento (órgão público)
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.

Células de saída

Nas saídas vão valores, não testes:

  • texto entre aspas: "MATRIX_MANAGER", "URGENTE";
  • número: 15, 0.2;
  • booleano: true;
  • para a saída do tipo Cargo, a chave do cargo existente no tenant (o Autoflow confere na publicação).

Expressões JUEL nos gateways (revisão)

Depois que a regra grava as variáveis, os gateways as testam com JUEL. Os padrões que você mais vai usar no Autoflow:

Situação Condição no fluxo
Texto ${tipoVenda == 'VENDA_DIRETA'} (aspas simples)
Número ${valor > 50000} (sem aspas)
Booleano ${aprovado == true} ou ${precisaAprovacao}
Saída de regra ${risco == 'ALTO'}
Resultado da Solicitação de documentos ${documentGateOutcome == 'CANCELLED'}
Resultado de integração ${integrationOutcome == 'NEEDS_CORRECTION'}
Duas condições ${valor > 5000 && tipo == 'OBRA'}

E nunca esqueça: um dos fluxos de saída do gateway exclusivo deve ser o fluxo padrão (sem condição), para o processo não travar quando nenhuma condição for verdadeira.

Erros comuns e como diagnosticar

Sintoma Causa provável
Nenhuma linha casa nunca Nome da entrada diferente da chave do campo do formulário; ou rótulo em vez de valor
Casa sempre a mesma linha FIRST com a linha “-” no topo
Incidente na tarefa de regra UNIQUE com sobreposição, ou entrada com tipo errado (texto onde se espera número)
Gateway segue sempre o padrão Condição JUEL compara com o rótulo, ou com aspas em número ('5000')
Regra mudou mas o processo não percebeu O processo já tinha passado pela tarefa de regra; a decisão anterior fica gravada
Dica de consultor

Na tela do processo, a Linha do tempo mostra “Regra X vN · entradas → saídas (linha N)”. É o primeiro lugar para olhar quando o cliente disser “o sistema decidiu errado”: você vê exatamente quais valores entraram.

Resumo

  • Células de entrada usam testes FEEL (> 5, [1..10], "PF", not("X"), -).
  • Células de saída recebem valores.
  • Condições de gateway usam JUEL com ${ } e a comparação completa.
  • Compare sempre o valor da opção, nunca o rótulo.
  • Diagnóstico começa pela linha do tempo do processo.
QuizVerifique seu entendimento0/3 respondidas · 0 certas
1.Qual célula casa com 5 mas NÃO com 15?
2.Num gateway, qual condição testa corretamente o tipo de pessoa?
3.A lista do formulário tem "Pessoa jurídica=PJ". A célula da regra está como "Pessoa jurídica". O que acontece?