Do Try, Do Catch y Do Finally
Si alguna configuración del EIP no está disponible en el formulario, puede ajustarla directamente en el archivo main.yaml . Para ello, acceda a la pestaña Source Code y edite el código de la integración.
|
El EIP doTry permite crear flujos de integración que envuelven un proceso en un bloque "Try". Crea ramificaciones doCatch y doFinally para manejar excepciones específicas y garantizar que ciertas acciones se ejecuten al final, independientemente de los errores. Con esto, las fallas pueden ser manejadas de forma controlada, asegurando que la ejecución del flujo continúe sin interrupciones innecesarias.
Configuración del EIP doTry en el Diagrama
Para configurar un doTry en una integración en la pestaña Diagrama, siga estos pasos:
-
Haga clic en +Add Step en el canvas.
-
Seleccione la pestaña EIPs.
-
Seleccione el EIP doTry. Puede usar la herramienta de búsqueda para localizarlo.
-
Al agregar el EIP al canvas, se crearán automáticamente tres ramificaciones:
-
Step vacío: haciendo clic en Add Step, usted agrega el EIP o componente que continuará el flujo. Solo se permite una ramificación de este tipo en el bloque "Try".
-
doCatch: captura y maneja excepciones específicas que puedan ocurrir dentro del bloque "Try". Si hay varios bloques "doCatch", se ejecutará la excepción que se capture primero.
-
Puede ingresar una o más excepciones en el campo Exception.
-
-
doFinally: este bloque siempre se ejecuta, independientemente de si ocurrió una excepción o no (incluso si no hay un bloque doCatch). La ramificación "doFinally" siempre será la última a la derecha. Solo se permite una ramificación "doFinally" para cada EIP doTry.
-
Puede agregar otras ramificaciones del tipo "doCatch", haciendo clic en "+" y luego en Add Handling Step. |
Eliminación del EIP doTry y sus ramas
Existen tres escenarios para eliminar el EIP doTry y sus ramas:
-
Al eliminar un bloque "doCatch", todos los steps de esa rama serán eliminados.
-
Al eliminar un bloque "doFinally", todos los steps de esa rama serán eliminados.
-
Al eliminar un EIP doTry, todos los bloques y steps subsecuentes serán eliminados.
Ejemplo
-
El flujo comienza con un temporizador, que se activa cada 60 segundos para consultar pedidos de un ERP.
-
El flujo intenta acceder al ERP para obtener los pedidos y procesarlos con el doTry. El pedido se envía directamente al sistema financiero y el status se actualiza en el ERP.
-
Si ocurren errores de conexión, como ConnectException o SocketTimeoutException, estos errores serán capturados con el doCatch, registrados y se enviará una notificación al equipo de TI.
-
Independientemente de si el flujo fue exitoso o falló, el proceso de integración finalizará con el registro de una auditoría y la generación de un log con el doFinally.
Consulte el ejemplo en 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: "Pedidos recibidos: ${body}"
- setBody:
simple: "Pedidos procesados: ${body}"
- to: direct:sendToFinance
- to: direct:updateERPStatus
doCatch:
- id: doCatch
exception:
- java.net.ConnectException
- java.net.SocketTimeoutException
steps:
- log:
message: "Error al acceder al ERP: ${exception.message}"
loggingLevel: ERROR
- to: direct:notifyError
doFinally:
id: doFinally
steps:
- log:
message: "Finalizando el proceso de integración - auditoría"
- to: direct:registerAudit
Share your suggestions with us!
Click here and then [+ Submit idea]