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 }.
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 |
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.
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 |
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.