Exception Handler

Pueden ocurrir diversos problemas al interactuar con sistemas externos. Estos problemas pueden derivar de fallas de comunicación o de errores a nivel de aplicación. De cualquier forma, debemos estar preparados para reaccionar automáticamente a los problemas más comunes o identificar y reportar los problemas inesperados. Para manejar todas las posibles excepciones utilizaremos los Exception Handlers (EH).

Los Exception Handlers pueden aplicarse a cualquier tipo de módulo, excepto a los Disparadores (Triggers).

Concepto

Un Exception Handler es un conjunto de Exception Rules (ER – Reglas de Excepción) con una misma acción predeterminada. Los EH se aplican a cada módulo dentro de un flujo. Puedes aplicar múltiples EH en un mismo módulo para cubrir distintos tipos de excepciones.

Exception Rule – ER

La unidad de identificación y tratamiento de excepciones es la Exception Rule (ER – Regla de Excepción).

La ER contiene la definición del tipo de error que se busca manejar. Todos los errores observados en un flujo generan algún tipo de mensaje de error.

La ER permite especificar una expresión regular que se aplica sobre ese mensaje para filtrar un tipo específico de error.

Ejemplo:

Una llamada REST que retorna un error 400 genera el siguiente mensaje:

Podemos crear una regla para filtrar este mensaje usando solamente el status code. La expresión regular sería:

En la misma ER también podemos definir la cantidad de reintentos adicionales que Skyone Studio ejecutará y el intervalo entre esos intentos, además de la notificación que se generará cada vez que la expresión sea encontrada.

Default Action – DA

Las ER permiten especificar la cantidad de reintentos y el intervalo entre ellos. Sin embargo, cuando los intentos adicionales fallan, podemos definir una Default Action (DA – Acción Predeterminada) que se ejecuta al final de los intentos.

Las tres acciones disponibles son:

  • Parar: El flujo se interrumpe completamente.

  • Continuar: Aun con error, el flujo continúa y el error se registra en los logs.

  • Loop: En lugar de avanzar, el proceso vuelve al inicio del flujo.

En cada una de estas acciones también es posible definir notificaciones propias y sus respectivos destinos.

Exception Handler (EH)

Podemos crear múltiples ER dentro de un EH. De esta manera, agrupamos en un mismo EH varias reglas con un mismo tratamiento o Default Action (DA).

Ejemplo:

Podemos crear reglas específicas para manejar los códigos HTTP 404 (Not Found) y 403 (Forbidden), pero si fallan los reintentos, ambas se tratarán con la misma DA.

Módulos

En la configuración de un módulo dentro del flujo, es posible especificar qué EH serán utilizados. Múltiples EH pueden apilarse y serán evaluados en el orden en que fueron seleccionados.

La posibilidad de aplicar múltiples EH en un módulo nos permite cubrir todos los tratamientos de excepciones con un conjunto de EH diseñados para manejar casos específicos.

Procesamiento

El siguiente diagrama ilustra el mecanismo de procesamiento de los EH.

Diagrama de Procesamiento del Exception Handler

Cada llamada de un módulo puede generar una excepción. Cuando esto sucede, Skyone Studio verifica si existe algún EH configurado en el módulo.

  • Si no existe EH → Skyone Studio maneja la excepción de forma tradicional.

Tratamiento tradicional de excepciones

  • Módulos REST: el error se registra en los logs de ejecución y queda disponible para manipulación en los módulos siguientes. El flujo continúa.

  • Otros módulos: el error se registra en los logs y el flujo se interrumpe, indicando fallo en la ejecución.

Tratamiento de excepciones con Exception Handler Si hay uno o más EH configurados, Skyone Studio sigue los siguientes pasos:

  1. Selecciona el primer EH de la lista.

  2. Selecciona la primera ER de la lista dentro del EH.

  3. Evalúa la expresión regular de esa ER contra el mensaje de la excepción.

  4. Si hay match:

    • Skyone Studio verifica si existe notificación y la ejecuta.

    • Luego, revisa si hay reintentos configurados.

    • Si los hay y el contador es positivo, espera el delay configurado, reduce el contador y vuelve a ejecutar la llamada.

  5. Si hay match pero los reintentos llegan a cero, Skyone Studio ejecuta la Default Action (DA), que puede ser:

    • Continuar con el próximo módulo.

    • Interrumpir la ejecución con error.

    • Repetir desde el loop más interno.

  6. Si no hay match en la primera ER, Skyone Studio evalúa la siguiente regla.

  7. Si existe una regla con la bandera ANY, se ejecuta como última opción, garantizando un match.

  8. Si ningún EH genera match, Skyone Studio maneja la excepción con el tratamiento tradicional.


Próximos pasos

  • Configuración del Exception Handler

  • Casos de uso del Exception Handler

Last updated