Choice

O EIP Choice roteia mensagens com base em condições, similar a uma estrutura "if-else". Ele avalia as condições especificadas e direciona a mensagem para a rota correspondente.

Configurando o EIP Choice no Diagram

Para configurar um Choice em uma integração na aba Diagram, siga estes passos:

  • Clique em +Add Step no canvas.

  • Selecione a aba EIPs.

  • Selecione o EIP Choice. Você pode usar a ferramenta de buscas para localizá-lo.

Ao adicionar um "Choice", duas ramificações serão criadas automaticamente no canvas: When e Otherwise.

Você pode continuar adicionando steps após as ramificações, sem limite para a quantidade de steps subsequentes.

É possível adicionar novas condições "When" e "Otherwise" clicando no botão +, mas cada "Choice" pode ter apenas uma ramificação "Otherwise".

A animação abaixo mostra a adição do EIP Choice ao canvas e a ramificação "when" sendo configurada para verificar se o corpo da mensagem contém a palavra "success":

adding choice

Parâmetros do EIP Choice

Os parâmetros abaixo deverão ser informados na configuração do componente:

Parâmetro Descrição Tipo

When

Define uma condição para o processamento de mensagens, atuando como o bloco "if".

Lista

Otherwise

Define a rota padrão, utilizada quando nenhuma das condições especificadas no "When" for atendida (funciona como o bloco "else").

OtherwiseDefinition

Precondition

Permite avaliar as condições definidas nos ramos ("When" e "Otherwise") durante a inicialização da rota, em vez de avaliá-las dinamicamente em tempo de execução.

Booleano

Excluindo o EIP Choice ou suas ramificações

Existem três cenários de exclusão do EIP Choice e suas ramificações:

  • Exclusão de uma ramificação "When": todos os steps subsequentes a ela serão removidos da integração.

  • Exclusão de uma ramificação "Otherwise": todos os steps subsequentes a ela serão removidos da integração.

  • Exclusão do EIP Choice: tanto as ramificações "When" e "Otherwise" quanto todos os steps subsequentes a elas serão removidos da integração.

deleting choice

Exemplo

Considere a integração abaixo:

eip choice example

Veja a mesma integração no formato de código:

- from:
    id: rest-2204314941
    uri: rest:get:hello
    steps:
      - choice:
          id: choice-3079603680
          when:
            - id: when-4223458332
              simple: ${body} contains 'success'
              steps:
                - log:
                    id: log-4287304427
                    message: 'The call has been successful: ${body}'
            - id: when-1122729813
              simple: ${body} contains 'warning'
              steps:
                - log:
                    id: log-3011575176
                    message: 'The call returned a warning: ${body}'
            - id: when-1140746842
              simple: ${body} contains 'error'
              steps:
                - log:
                    id: log-2721128918
                    message: 'The call found an error: ${body}'
          otherwise:
            id: otherwise-3980042695
            steps:
              - log:
                  id: log-498737456
                  message: 'The call returned an unknown response: ${body}'

Agora, confira o detalhamento:

  • O fluxo começa com uma requisição GET para o endpoint hello. A URI é o ponto de entrada do fluxo, que recebe a resposta da chamada no corpo da mensagem (${body}).

Choice

  • A etapa seguinte é um Choice, que é usado para tomar decisões com base em condições. O Camel avalia as condições e executa os steps correspondentes à condição que for verdadeira.

When

  • Primeira condição (when): verifica se o corpo da resposta (${body}) contém a palavra "success". Se for verdadeiro, executa o seguinte:

    • Log: registra uma mensagem indicando que a chamada foi bem-sucedida, incluindo o corpo da resposta.

when:
  - id: when-4223458332
    simple: ${body} contains 'success'
    steps:
      - log:
          id: log-4287304427
          message: 'The call has been successful: ${body}'
  • Segunda condição (when): verifica se o corpo da resposta contém a palavra "warning". Se for verdadeiro, executa o seguinte:

    • Log: registra uma mensagem indicando que a chamada retornou um aviso, incluindo o corpo da resposta.

- id: when-1122729813
  simple: ${body} contains 'warning'
  steps:
    - log:
        id: log-3011575176
        message: 'The call returned a warning: ${body}'
  • Terceira condição (when): verifica se o corpo da resposta contém a palavra "error". Se for verdadeiro, executa o seguinte:

    • Log: registra uma mensagem indicando que a chamada encontrou um erro, incluindo o corpo da resposta.

- id: when-1140746842
  simple: ${body} contains 'error'
  steps:
    - log:
        id: log-2721128918
        message: 'The call found an error: ${body}'

Otherwise

  • Caso nenhuma das condições anteriores seja atendida, a etapa Otherwise será executada, ou seja, se o corpo da resposta não contiver "success", "warning" ou "error".

    • Log: registra uma mensagem indicando que a chamada retornou uma resposta desconhecida, incluindo o corpo da resposta.

otherwise:
  id: otherwise-3980042695
  steps:
    - log:
        id: log-498737456
        message: 'The call returned an unknown response: ${body}'
Thanks for your feedback!
EDIT

Share your suggestions with us!
Click here and then [+ Submit idea]