v2.0

Decisão

Como fazer o fluxo escolher caminhos diferentes conforme o dado que o processo tem em mãos.

O que é a etapa de Decisão

Todo processo real tem bifurcação: a nota é aprovada ou rejeitada, o cliente é novo ou já existe, a lista veio cheia ou vazia. A Decisão de Rota é a etapa que faz essa pergunta e manda o fluxo pelo caminho certo.

A etapa de Decisão de Rota avalia uma lista ordenada de condições e manda o fluxo para uma etapa diferente conforme o resultado. Ela não age sobre nenhuma tela nem chama serviço: apenas lê variáveis que o processo já tem e escolhe por onde seguir.

Rotas não são exclusivas da etapa de Decisão A seção Condições de Rotas e Execuções existe em qualquer etapa, seja ela Navegar em Tela, Preencher Dados, Integrar com Conectores ou outra. Ou seja, dá para desviar o fluxo a partir de qualquer ponto, sem criar uma Decisão de Rota. Ainda assim, vale concentrar o roteamento em etapas dedicadas: quem olha o canvas enxerga na hora onde o processo decide, em vez de descobrir regras escondidas dentro de etapas que também fazem outra coisa.

A decisão no fluxo visual

No Agent Builder, a decisão é o ponto onde o fluxo ramifica. A legenda completa de ícones, badges e conexões do canvas está em Agent Builder → Cards, badges e conexões; aqui vão só os pontos específicos de Decisão:

Decisões no fluxo do Agent Builder
Duas decisões no fluxo ("Existe GAP nos cálculos?" e "Valores Calculados?") ramificando para caminhos distintos, incluindo um ramo que encerra o processo (⏺).

Passar o mouse sobre esse badge mostra as rotas configuradas na etapa, sem precisar abri-la. É a forma mais rápida de conferir para onde cada caminho leva:

Resumo das rotas exibido ao passar o mouse sobre o badge
As rotas em duas leituras: em cima, condição e destino em texto corrido; embaixo, a mesma regra na sintaxe usada pelo processo.

Dê nomes de decisão em forma de pergunta ("Existe GAP nos cálculos?", "Valores Calculados?"). O fluxo vira um diagrama legível por qualquer pessoa do negócio.

Como configurar

  1. Crie uma nova etapa e escolha o tipo Decisão de Rota.
  2. Abra a etapa e, em Condições de Rotas e Execuções, marque Definir a próxima Etapa após execução. É o que habilita o campo das condições, e a etapa avisa enquanto isso não estiver feito.
  3. Clique no + da rota. Ele fica sempre em um lugar só, e esse lugar muda conforme o que já existe: sem rota nenhuma, nos dois espaços tracejados ao lado do card, "rota A" e "rota B"; com uma rota, no meio da linha que liga a decisão ao nó de junção; da terceira em diante, no canto do próprio card.
  4. O + pergunta o tipo da primeira etapa daquele caminho, e é essa etapa que nasce. Criar a rota e criar a etapa dentro dela são a mesma ação: não sobra card de enfeite. As rotas recebem rótulos em sequência (A, B, C) e cada uma ganha uma cor própria.
  5. Junto com a rota, a decisão já recebe a regra que leva até ela. A primeira rota vira a saída padrão; as seguintes entram com a condição marcada como definir a condição, esperando você dizer o que decide entre um caminho e outro. Enquanto essa marcação estiver lá, a rota nunca é escolhida, e o ícone de pendências acusa isso.
  6. Na etapa de decisão, informe a condição que escolhe cada ramo. Cada rota tem dois campos:
CampoDescrição
Condição Expressão lógica que usa variáveis do processo entre chaves. Se avaliada como verdadeira, esta rota é seguida. Veja Lógicas de Rota para a sintaxe completa.
Ir para Nome da etapa de destino, ou um dos valores especiais: continue() ou terminate().
Avaliação em ordem As rotas são avaliadas de cima para baixo. A primeira condição verdadeira vence e as demais são ignoradas. Reordene as rotas para controlar a prioridade das ramificações.
Decisão recém-criada mostrando os espaços tracejados da rota A e da rota B
Uma decisão recém-criada. Os dois espaços tracejados são as rotas que ainda não existem: clicar no + de um deles cria o ramo com a primeira etapa dentro.
A condição escolhe o ramo, e só isso A rota que você declara na decisão serve para entrar no ramo certo. Você não precisa declarar o caminho de volta: quando o ramo termina, o fluxo volta sozinho ao ponto de junção. Veja a seção seguinte.

Ramos e convergência automática

Cada rota abre um ramo próprio no fluxo. As etapas que você cria dentro dele pertencem àquele ramo, e o canvas as mantém alinhadas na faixa da rota, com a cor dela.

Para continuar um ramo, insira a etapa nova depois da última etapa dele, usando o botão + da conexão. A etapa nasce dentro do mesmo ramo, sem que você precise declarar nada.

Repare de que lado da junção você está Só entra no ramo a etapa criada antes do nó de junção. O que você cria depois dele está no tronco e vale para todos os caminhos, mesmo que exista uma rota só. É por isso que o nó aparece desde a primeira rota: ele mostra onde o ramo termina antes de você preencher o resto.

A convergência é automática

Quando o ramo acaba, o fluxo volta sozinho ao ponto em que os caminhos se reencontram. Esse ponto é o nó de junção, o losango desenhado no canvas, e ele existe desde a primeira rota. Você não precisa criar uma etapa de Merge nem preencher um "Ir para" de volta em cada rota.

Com uma rota só, a decisão também liga direto no nó de junção por uma linha vazia. Ela representa o caminho que ainda não tem rota, e é onde entra a segunda: clique no + no meio dela.

Rotas A e B convergindo no nó de junção
Rota A e Rota B saem da mesma decisão e voltam a se encontrar sozinhas no nó de junção (o losango), sem nenhuma rota de volta declarada.
Uma rota explícita sempre vence A convergência automática só age quando a etapa não tomou nenhuma rota configurada. Se você preencher o "Ir para" da última etapa de um ramo, é esse destino que vale.

Decisões dentro de decisões

Um ramo pode conter outra decisão, com os ramos dela inteiramente dentro do ramo de fora. As rotas aninhadas herdam o caminho no nome (Rota C.A, por exemplo) e o canvas mantém os ramos internos dentro da faixa do ramo que os contém, dando a cada rota a altura de que ela precisa.

A convergência respeita esse aninhamento: ao terminar, um ramo interno volta ao ponto de junção da decisão dele, e não ao começo do fluxo. Quando a decisão aninhada inteira se fecha, aí sim o ramo externo segue adiante.

Use "Ajustar modelo" depois de mexer nos ramos O botão de ajuste na barra inferior refaz o diagrama do zero, alinhando gateways, ramos e nós de junção. É a forma rápida de reorganizar o canvas depois de criar rotas ou arrastar cards de lugar. Ele descarta os posicionamentos manuais.

Destinos disponíveis

Valor em "Ir para"Comportamento
NomeDaEtapa Salta diretamente para a etapa com esse nome. O nome deve ser exatamente o campo Nome da Etapa definido no cadastro, sensível a maiúsculas e espaços.
continue() Segue para a próxima etapa do fluxo, como se a decisão não existisse.
terminate() Encerra o processo imediatamente com status de conclusão bem-sucedida.

Exemplos

Dois caminhos e uma saída padrão

Etapa de Decisão "Verificar Status NF"
Rota 1:
  Condição: {status_nf} == 'aprovada'
  Ir para:  Processar Aprovação

Rota 2:
  Condição: {status_nf} == 'rejeitada'
  Ir para:  Tratar Rejeição

Rota Padrão (obrigatória):
  Condição: true
  Ir para:  Status Desconhecido

Duas condições ao mesmo tempo

Disparar alerta urgente apenas quando valor alto e status pendente ao mesmo tempo:

Condição composta
Rota 1:
  Condição: Number({valor}) > 50000 && {status} == 'pendente'
  Ir para:  Enviar Alerta Urgente

Rota 2:
  Condição: true
  Ir para:  Processar Normal

Vários valores possíveis

Múltiplas rotas por valor de variável
Rota 1: {tipo_doc} == 'NF-e'   → Processar NF-e
Rota 2: {tipo_doc} == 'CT-e'   → Processar CT-e
Rota 3: {tipo_doc} == 'NFS-e'  → Processar NFS-e
Rota 4: true                    → Documento Não Suportado

Verificar se lista está vazia

Checar se busca retornou resultados antes de processar
Rota 1:
  Condição: {resultados} is empty
  Ir para:  Encerrar Sem Resultados

Rota 2:
  Condição: true
  Ir para:  Processar Resultados

Verificar faixa numérica

Classificar valor em faixas
Rota 1:
  Condição: Number({score}) >= 90
  Ir para:  Aprovação Automática

Rota 2:
  Condição: Number({score}) >= 60
  Ir para:  Análise Manual

Rota 3:
  Condição: true
  Ir para:  Reprovado

Boas práticas