Concepto: componentes del controlador de errores
Studio proporciona tres
Error Handler
diferentes en Palette
:
Nombre | Función |
|---|---|
send-error
| Le permite procesar el error mediante componentes y pasos estándar. Un patrón común consiste en utilizar send-error para informar del error al evento de integración invocando el componente común PutIntegrationMessage . |
log-error
| Registra el error actual en el registro de resultado. Incluye el mensaje de error y el seguimiento de pila de la excepción de Java. Se utiliza cuando no es necesario exponer errores individualmente en el evento de integración, pero desea registrar el mensaje en el momento del error. Evite registrar mensajes grandes, ya que pueden degradar el rendimiento y truncarse, lo que provocaría la pérdida de datos de diagnóstico. |
custom-error-handler
| Le permite proporcionar un bean de Spring que utilice Java para procesar el error. Se utiliza cuando la gestión de errores requiere un código Java complejo. |
Puede añadir un controlador de errores como elemento secundario de un componente de mediación o como elemento individual en el ensamblaje. Los controladores de errores añadidos a los componentes de mediación son locales. Los controladores de errores del ensamblaje son globales.
Cuando Workday detecta un error en una integración de Studio, detiene el proceso normal y revierte la cadena de componentes procesados en busca de un controlador de errores que invocar. Siempre intenta procesar primero los errores de forma local. Si no hay ningún controlador de errores local disponible, la responsabilidad se pasa al controlador de errores global. Utilice controladores de errores locales cuando desee un control preciso de lo que ocurre cuando se producen errores o necesite informar del contexto detallado de lo que estaba haciendo la integración en el momento del error. Piense en los controladores de errores globales como una opción a prueba de fallos.
Si se han activado todos los controladores de errores y aún no se ha marcado ningún error como controlado, Workday procesa el mensaje, genera un error a partir de la excepción y marca el ensamblaje como finalizado. Describe la integración como Finalizado con errores.
Comportamientos notables por defecto:
- Los controladores de errores locales solo procesan los errores que surgen en su componente de mediación principal. Sin embargo, también pueden procesar errores en componentes posteriores. Para activar este comportamiento, defina la propiedadHandle Downstream Errorsdel componente de mediación que contiene el controlador de errores con el valortrue.
- Workday marca los errores como controlados cuando se invoca un controlador de errores. Sin embargo, si define la propiedadRethrow Errorde un controlador de errores comotrue, Workday no borra el error. Como resultado, lo gestiona el siguiente controlador de errores ascendente o el siguiente controlador de errores global dentro del ámbito. Utilice este patrón para informar localmente de los detalles de un error, pero para gestionar el error global o la finalización en un nivel superior del conjunto.
- Cuando Workday gestiona un error, reinicia el proceso de mensajes desde el gestor de errores invocado y continúa por la ruta de respuesta hacia el elemento en el que se ha generado el error. Sin embargo, puede especificar que el procesamiento se reanude en el elemento en el que se produjo el error. Para activar este comportamiento, defina la propiedadContinue After Errordel componente de mediación que contiene el controlador de errores comorecover. Utilice este comportamiento en situaciones en las que el código invocado por el controlador de errores pueda corregir la condición de error, lo que permite que un reintento de la operación fallida tenga éxito.
Puede ejercer un mayor control sobre los controladores de errores añadiendo expresiones de condición MVEL en su vista
Properties
. Cuando hay expresiones de condición, Workday solo invoca el controlador de errores si todas se evalúan como verdaderas.Puede forzar la generación de errores mediante el
context.setError
o context.SetException
métodos en código MVEL o Java. Al utilizar el setError
, puede configurar un ID de error que puedan detectar las expresiones condicionales en el controlador de errores. Utilice esta técnica cuando esté gestionando un error localmente pero quiera pasar algunos detalles del tipo de error a un controlador de errores anterior para su gestión común.También puede gestionar los errores mediante los componentes de
Route
:
- El componentefailover-strategyintenta utilizar una ruta y, si se produce un error, la ejecuta y marca el error como gestionado.
- Laestrategia personalizadale permite proporcionar un bean Spring. Los beans Spring implementan laRoutingStrategyinterfaz, que tiene unaisHandleErrormétodo Utilice este método para especificar que la estrategia gestiona los errores.