Skip to content

Tratamento de Desvios e Múltiplos Destinos

A página de Tratamento de Desvios e Múltiplos Destinos detalha como o serviço interno de roteamento da Engine (ServicoRoteador) processa as saídas de uma etapa, garantindo a execução determinística do fluxo ou interrompendo a sessão com segurança em casos de ambiguidade.

Por premissa de arquitetura, um fluxo na Engine é estritamente sequencial: para cada etapa concluída, deve existir exatamente uma e apenas uma transição válida.


O Ciclo de Avaliação do Roteador (ServicoRoteador)

Section titled “O Ciclo de Avaliação do Roteador (ServicoRoteador)”

Quando o runner encerra o seu processamento sem erros, a Engine delega ao algoritmo de roteamento a identificação do próximo nó a ser chamado:

Ciclo de avaliação do roteador
┌─────────────────────────────────────────┐
│ ETAPA CONCLUÍDA COM SUCESSO │
└────────────────────┬────────────────────┘
┌─────────────────────────────────────────┐
│ Busca Conectores de Saída Mapeados │
└────────────────────┬────────────────────┘
┌───────────────────────────────────────┼───────────────────────────────────────┐
▼ ▼ ▼
┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐
│ NENHUM CONECTOR DE │ │ APENAS 1 CONECTOR │ │ MÚLTIPLOS CONECTORES │
│ SAÍDA │ │ MAPEADO │ │ (COM CONDICIONAIS) │
└───────────┬───────────┘ └───────────┬───────────┘ └───────────┬───────────┘
│ │ │
▼ ▼ ▼
┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐
│ ENCERRAMENTO COM │ │ Avança diretamente │ │ Avalia todas as regras│
│ SUCESSO │ │ para o próximo nó │ │ dos conectores │
│ (Fim do Pipeline) │ └───────────────────────┘ └───────────┬───────────┘
└───────────────────────┘ │
┌───────────────────────┐
│ Contabiliza TRUEs │
└───────────┬───────────┘
┌───────────────────────────────────────┴───────────────────────────────────────┐
▼ ▼
┌───────────────────────────────┐ ┌───────────────────────────────┐
│ EXATAMENTE 1 = TRUE │ │ DIFERENTE DE 1 = TRUE │
└───────────────┬───────────────┘ └───────────────┬───────────────┘
│ │
▼ ▼
┌───────────────────────────────┐ ┌───────────────────────────────┐
│ Transição Confirmada │ │ Lança InterrupcaoException │
│ (Executa nó destino) │ │ (Sem Rota / Rota Ambígua) │
└───────────────────────────────┘ └───────────────────────────────┘

1. Encerramento Normal do Fluxo (Etapa sem Destino)

Section titled “1. Encerramento Normal do Fluxo (Etapa sem Destino)”
  • Condição: A etapa é executada com sucesso e não possui nenhum conector de saída cadastrado para avaliação.
  • Resultado: Se nenhuma exceção foi lançada ao longo do pipeline, a Engine entende que o fluxo atingiu seu objetivo final. A sessão é encerrada com status de Sucesso.
  • Convenção (DADOS_SAIDA): É padrão na modelagem que o encerramento ocorra em uma etapa do Runner de Dados de Saída (DADOS_SAIDA), pois este nó é responsável por estruturar o payload e o código de status HTTP que serão devolvidos ao cliente da requisição.
  • Condição: A etapa possui um único conector mapeado ou, dentre múltiplos conectores condicionais avaliados, exatamente um resulta em true.
  • Resultado: A Engine efetiva a transição e executa o nó destino.

3. Falhas de Roteamento em Etapas Condicionais

Section titled “3. Falhas de Roteamento em Etapas Condicionais”

Quando uma etapa possui conectores condicionais configurados, a resposta do roteador é estrita:

Sem Rota Válida (*Sem Rota*)

Se todas as regras de transição resultarem em false, a Engine interrompe a sessão e lança uma exceção informando a ausência de rota válida.

Rota Ambígua (*Múltiplos Destinos*)

Se duas ou mais regras forem avaliadas como true simultaneamente, a Engine aborta o processamento para evitar execuções concorrentes não determinísticas.


  1. Mutua Exclusividade nas Regras

    Ao criar múltiplos conectores condicionais a partir do mesmo nó, certifique-se de que os critérios de comparação sejam mutuamente exclusivos (ex: se um conector checa status == 'APROVADO', o outro deve checar status == 'REJEITADO').

  2. Uso de Operadores Complementares

    Utilize operadores que se complementam perfeitamente no formulário de condicional, como Nulo em uma rota e Não Nulo na outra, garantindo que sempre haja exatamente um resultado verdadeiro.

  3. Validação no Editor Visual

    Durante a fase de rascunho, valide se a lógica de desvio contempla todas as variações possíveis de dados de entrada para evitar exceções de falta de rota em produção.

  • Sessão Concluída com Sucesso: Fluxo percorreu os nós até atingir uma etapa terminal (sem saídas) e sem registros de exceção.
  • Sessão Interrompida por Erro: Lançamento de exceção técnica, erro de integração em runner ou falha de condicional na escolha de rota.