Do Try, Do Catch e Do Finally
Caso alguma configuração do EIP não esteja disponível no formulário, você pode ajustá-la diretamente no arquivo main.yaml . Para isso, acesse a aba Source Code e edite o código da integração.
|
O EIP doTry permite criar fluxos de integração envolvendo um processo em um bloco "Try". Ele cria ramificações doCatch e doFinally para tratar exceções específicas e garantir que certas ações sejam executadas no final, independentemente de erros. Com isso, falhas podem ser tratadas de forma controlada, garantindo que a execução do fluxo continue sem interrupções desnecessárias.
Configurando o EIP doTry no Diagram
Para configurar um doTry em uma integração na aba Diagram, siga estes passos:
-
Clique em +Add Step no canvas.
-
Selecione a aba EIPs.
-
Selecione o EIP doTry. Você pode usar a ferramenta de buscas para localizá-lo.
-
Ao adicionar o EIP ao canvas, três ramificações serão criadas automaticamente:
-
Step vazio: clicando em Add Step, você adiciona o EIP ou componente que dará continuidade ao fluxo. Apenas uma ramificação deste tipo é permitida no bloco "Try".
-
doCatch: captura e trata exceções específicas que possam acontecer dentro do bloco "Try". Se houver vários blocos "doCatch", ele executa a exceção que for capturada primeiro.
-
Você pode inserir uma ou mais exceções no campo Exception.
-
-
doFinally: este bloco é sempre executado, independentemente de ter acontecido exceção ou não (até mesmo se não houver bloco doCatch). A ramificação "doFinally" será sempre a última à direita. Apenas uma ramificação "doFinally" é permitida para cada EIP doTry.
-
Você pode adicionar outras ramificações do tipo "doCatch", clicando em "+" e depois em Add Handling Step. |
Exclusão do EIP doTry e suas ramificações
Há três cenários de exclusões do EIP doTry e suas ramificações:
-
Ao excluir um bloco "doCatch", todos os steps dessa ramificação serão removidos.
-
Ao excluir um bloco "doFinally", todos os steps dessa ramificação serão removidos.
-
Ao excluir um EIP doTry, todos os blocos e steps subsequentes serão removidos.
Exemplo
-
O fluxo começa com um timer, que é disparado a cada 60 segundos para consultar pedidos de um ERP.
-
O fluxo tenta acessar o ERP para obter os pedidos e processá-los com o doTry. O pedido é então enviado diretamente para o sistema financeiro e o status é atualizado no ERP.
-
Se houver erros de conexão, como ConnectException ou SocketTimeoutException, esses erros serão capturados com o doCatch, logados e uma notificação será enviada para a equipe de TI.
-
Independentemente de o fluxo ter sido bem-sucedido ou ter falhado, o processo de integração será finalizado com o registro de uma auditoria e a geração de um log com o doFinally.
Confira o exemplo em formato de código:
- from:
uri: timer:ConsultOrder
parameters:
period: 60000
steps:
- doTry:
id: doTry
steps:
- to: "http://erp.example.com/api/orders"
- log:
message: "Orders received: ${body}"
- setBody:
simple: "Processed orders: ${body}"
- to: direct:sendToFinance
- to: direct:updateERPStatus
doCatch:
- id: doCatch
exception:
- java.net.ConnectException
- java.net.SocketTimeoutException
steps:
- log:
message: "Failed to access ERP: ${exception.message}"
loggingLevel: ERROR
- to: direct:notifyError
doFinally:
id: doFinally
steps:
- log:
message: "Finalizing integration process - auditing"
- to: direct:registerAudit
Share your suggestions with us!
Click here and then [+ Submit idea]