Manejo de errores en procesos

Al modelar el manejo de errores como parte de los procesos, se pueden capturar errores utilizando sucesos de errores intermedios o subprocesos de sucesos y se pueden generar errores utilizando sucesos de finalización.

Tabla 1. Uso de sucesos de error en los procesos
Suceso Descripción
suceso de error intermedio icono en el límite de una actividad (suceso de límite de error)
  • Detecta errores específicos o todos los errores
  • Ofrece la lógica del manejo de errores que surgen de la actividad a la que está adjunta
subprocesos de suceso de error que comienzan con un error de suceso de inicio icono
  • Detecta errores específicos o todos los errores
  • Proporciona lógica del tratamiento de los errores que surgen de actividades del proceso, subproceso o subprocesos de sucesos que contienen directamente el subproceso de suceso de error
suceso de finalizaciónicono Generar un error

Captura de errores utilizando sucesos de error intermedios

En los procesos se puede adjuntar un suceso intermedio de error a una actividad y conectar ese suceso con un flujo de manejo de errores o actividad. El suceso de error adjunto se conoce como suceso de límite de error.

Para determinar si usar el suceso de error intermedio, considere los siguientes puntos:

  • Si se produce un error mientras se ejecuta un proceso con un suceso de error adjunto al límite, el proceso pasa a lo largo de la línea de secuencia que está adjunta al error de suceso. Los errores se manejan en el flujo y luego siguen con el proceso normal.
  • Los sucesos de error intermedios deben adjuntarse a una actividad.
  • Puede tener varios errores de suceso por una actividad, pero solamente uno detecta el error.
  • Considere la posibilidad de especificar los datos de error para detectar errores específicos, filtrando el código de error por los tipos de errores que se capturan, y correlacionando una variable luego de capturar el error. Cuando se detectan los errores, o si sólo se especifica un código de error, los datos de error se capturan en un XMLElement en la variable tw.system.step.error.
  • Para manejar errores de validación en un servicio de guardar para objetos de negocio compartidos, capture el error BPMBOSaveFailedError que aparece en la lista de errores específicos. Este error sólo está disponible en los nodos que guardan el contexto de ejecución, ya sea automáticamente (por ejemplo, coaches) o explícitamente habilitando la opción Guardar contexto de ejecución. Si desea más información, consulte Servicios de guardar para objetos de negocio compartidos.

Captura de errores utilizando subprocesos de sucesos de error

Un subproceso de suceso es un tipo especializado de subproceso que no es parte del flujo de secuencia normal de su proceso padre. Un subproceso de suceso de error es un subproceso de suceso que contiene un suceso de inicio de error. El subproceso de suceso no está conectado por un flujo de secuencia y se ejecuta solamente si el suceso de inicio en el subproceso de suceso es activado. Puede utilizar un subproceso de error de suceso para manejar errores en el proceso.

Para determinar si usar el subproceso de suceso de error, considere los siguiente puntos:
  • Defina un proceso legible localizando el suceso de error en el subproceso de suceso en lugar de definirlo en el proceso.
  • Para reutilizar el flujo de manejo de errores para varias tareas en su proceso, utilice subprocesos de suceso. Para reutilizar un flujo de manejo de errores utilizando sucesos adjuntos, debe adjuntar un suceso intermedio para cada una de las tareas y luego conectar esos sucesos al flujo de manejo de errores.
  • Defina objetos de datos a los que pueda acceder solamente desde dentro del subproceso de sucesos. Puede definir solamente aquellos objetos de datos que pertenezcan a un subproceso. El proceso padre no está lleno de variables innecesarias.

Si desea más información sobre subprocesos de suceso, consulte Modelado de subprocesos de suceso.

Ejemplo de manejo de excepciones a nivel de proceso

IBM® Business Process Manager proporciona una variable de sistema de sólo lectura tw.system.step.error para acceder a la información almacenada sobre una excepción que se ha producido en un proceso.

La variable está en el ámbito de un paso y no en un proceso. No se puede recuperar en el siguiente paso, sino que hay que acceder a ella en la sección de asignaciones posteriores del suceso de excepción intermedio de límite.

En la siguiente imagen se muestra un ejemplo de cómo modelar una excepción y manejarla:

Esta imagen muestra cómo modelar una excepción en un diagrama de proceso.

Para recuperar los datos de excepción, realice los pasos siguientes:
  1. Declare una variable privada de tipo XMLElement; por ejemplo, tw.local.error. Asígnele un valor; por ejemplo, un nuevo tw.object.XMLElement("abc").
  2. Cree una asignación posterior para el suceso de excepción intermedio adjunto y asigne la variable del sistema a la variable creada en el paso 1; por ejemplo, tw.local.error = tw.system.step.error.

    Puede utilizar el valor en la variable local en los siguientes pasos del proceso.

Emisión de errores

Se puede utilizar un suceso de finalización en un proceso para especificar un código de error y correlacionar con un tipo de error en los errores generados por el flujo de un proceso o un servicio.

Al trabajar con errores de sucesos o con subprocesos de sucesos, piense si los errores se pueden manejar inmediatamente y el proceso normal puede continuar, o si otro error puede generarse en otro nivel. Luego, implemente el manejo de errores desde abajo hacia arriba. En otros casos, es posible que resulte más eficaz y legible si los subprocesos se pueden reutilizar. Cree cada proceso y servicio enlazado de forma que se capturen y se corrijan errores. Si no es posible una corrección en el nivel más bajo de la implementación, puede permitir que el error ascienda un nivel, no incluyendo un error de suceso o un error de suceso para regenerar el error al servicio de llamada o proceso, como se muestra en la siguiente sección.

Por ejemplo, para asegurarse de que se capturen los errores que pueden ocurrir durante el tiempo de ejecución del proceso, se puede crear un proceso de alto nivel que incluya una actividad para llamar al proceso principal como un proceso enlazado y luego una actividad adicional con un servicio subyacente para implementar el tratamiento de errores tal y como se muestra en la siguiente imagen:

Esta captura de pantalla muestra un diagrama del proceso descrito en el párrafo anterior.

Este tipo de diseño, asegura que los errores generados desde los servicios y procesos fundamentales, son propagados y manejados apropiadamente.