lunes, 23 de febrero de 2009

Fallas, Excepciones y Compensacion II

Actualmente existen tres tipos de mecanismos para gestionar errores en un proceso de negocio: Transacciones, Excepciones, y Compensaciones. Estos tres mecanismos, trabajan juntos para evitar que los procesos fallen.

Este esquema se basa en el principio transaccional basado en el modelo “todo o nada”, ofreciendo flujos o rutas (paths) alternativos cuando se producen excepciones, las cuales pueden desencadenar acciones compensatorias para deshacer las operaciones fallidas.

Transacciones: Una transacción, es una secuencia de operaciones agrupadas en una unidad indivisible, en la cual se ejecutan todas las tareas o ninguna. Si una tarea, se encuentra dentro de una transacción y esta no puede ser ejecutada, todas las tareas anteriores que ya han sido ejecutadas deben ser devueltas a su estado original. En un diagrama del proceso (notación BPMN), se utiliza el sub-proceso para agrupar las actividades dentro de una transacción.

Manejo de Excepciones: Una excepciones de negocio reorienta el flujo o ruta del proceso cuando se detecta una excepción. Por ejemplo, una tarea que debe realizar una operación de debito, pero la cuenta carece de fondos suficientes. Como resultado de ello, una excepción puede ser lanzada, y el flujo del proceso es afectado. En un diagrama del proceso, el manejo de excepciones se realiza adjuntado una excepción a un sub-proceso, conectándola con una actividad que la manejara, para luego retornar a su ruta normal, sino finaliza el proceso antes esta condición.

Compensaciones: Las compensaciones establecen reglas para deshacer tareas si una tarea falla. Por ejemplo, una tarea recibe una transacción y es completada. Posteriormente, sin embargo, una tarea relacionada no se ejecuta. La tarea de compensación asociada a la primera actividad se ejecuta, restituyendo la transacción. La compensación no se ejecuta si la tarea no tiene asignada una excepción.

Este es un ejemplo donde podemos ver la secuencia o ruta del proceso ante diversos escenarios:

Descripción de Secuencia

Sin Excepcion


  1. La Tarea A se ejecuta y completa.
  2. La Tarea B Falla, debido a una excepcion de negocio.
  3. El proceso de negocio falla porque no hay un manejo de excepciones configurado para el subproceso AB.
Con Excepcion


  1. La Tarea A se ejecuta y completa.
  2. La Tarea B se ejecuta y completa.
  3. La Tarea C se ejecuta y completa.
  4. La Tarea D Falla, debido a una excepcion de negocio.
  5. Se ejecuta la Excepcion 1, y luego el proceso de negocio, sigue su ruta (no falla el proceso, porque se considero una excepcion).
Con Compensacion


  1. La Tarea A se ejecuta y completa.
  2. La Tarea B se ejecuta y completa.
  3. La Tarea C se ejecuta y completa.
  4. La Tarea D se ejecuta y completa.
  5. La Tarea E se ejecuta y completa.
  6. La Tarea F se ejecuta y completa.
  7. La Tarea G Falla, debido a una excepcion de negocio.
  8. Se ejecuta la actividad de Compensacion 1.
  9. A pesar que la tarea de compensacion 1 se ejecuta, el proceso de negocio falla. Para evitar este comportamiento, podemos incluir todas estas actividades dentro de un subproceso.
Saludos;

martes, 10 de febrero de 2009

Fallas, Excepciones y Compensacion I

Uno de los elementos más importantes, dentro de la notación BPMN es el manejo de excepciones de negocio, fallas, y operaciones de compensación. Actualmente existen diversos tipos de excepciones que pueden ser modeladas con la notación BPMN.

Existen tres tipos de excepciones:

Fallas Técnicas: Estos son eventos que se generan fuera del contexto de ejecución de un proceso de negocio; el cual puede causar que el proceso no este disponible. Ejemplo de este tipo de fallas: mal funcionamiento del disco, errores de CPU, etc. Por su naturaleza, este tipo de fallas técnicas generan la interrupción del proceso de negocio.

Excepciones Temporales: Estos son eventos temporales que pueden ser resueltos con el tiempo. Por Ejemplo: la red no esta disponible, servicio web no disponible, o base de datos no disponible. En estos casos, el proceso será suspendido después de una serie de intentos fallidos y, a continuación, el proceso puede reanudarse manualmente una vez que el problema ha sido resuelto. En este tipo de eventos, el proceso puede realizar el rollback de cualquier actividad, o intentar una acción para un número especifico de veces. Si los reintentos no tienen éxito, el proceso puede ser suspendido (pero no finaliza).

Excepciones de Negocio: Este tipo de excepciones suelen estar relacionados con datos, por ejemplo: código ciudad no valido, número de cuenta no valido, fondos insuficientes para esta transacción, etc.

En el próximo post, hablaremos de las herramientas que tenemos en la notación para representar este tipo de excepciones.