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":
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.
Exemplo
Considere a integração abaixo:
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 endpointhello
. 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}'
Share your suggestions with us!
Click here and then [+ Submit idea]