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:

  1. Clique em +Add Step no canvas.

  2. Selecione a aba EIPs.

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

  4. 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

example dotry

  • 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
Thanks for your feedback!
EDIT

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