domingo, 15 de julio de 2012

Un ejemplo completo de un proceso modelado en BPMN 2.0 con Signavio

Hace poco realice diversos talleres sobre las técnicas que deben ser utilizadas para especificar y modelar procesos de negocio utilizando la notación gráfica BPMN 2.0. En dicho proceso genere una versión simplificada de un proceso para la gestión de quejas que puede ser una referencia sobre algunas practicas.

tratamientoQueja


En el diagrama anexo se puede observar:
  1. Como utilizar los gateway de eventos para representar acuerdos de servicios, es decir tiempos acordados para el desarrollo de una tarea.
  2. Como representar diversos tipos de mensajes utilizando un gateway exclusivo.
  3. Como utilizar eventos intermedios para representar indicadores.
  4. Como representar la gestión de mas de un evento de inicio en un pool.


martes, 8 de mayo de 2012

BPMN 2.0 Utilización de Eventos en Subprocesos

BPMN 2.0 Utilización de Eventos en Subprocesos


En la notacion BPMN 2.0 se desarrollo la capacidad para gestionar eventos dentro de un subprocesos, en ingles "Event-Sub-Process" y "Collapsed Event-SubProcess". En el ejemplo anexo podemos observar un subproceso que ejecuta la actividad 1 y la actividad 2. Este subproceso tiene 4 eventos (Event-Sub-Process) asociados.

Un Event-Sub-Process puede ser colocado dentro de otro subproceso, y es activado cuando un evento es disparado; su principal característica es que puede interrumpir el contexto del subproceso o correr en paralelo, es decir no interrumpir el proceso. De forma similar un Collapsed Event-SubProcess establece el tipo de evento que podra disparar la logica interna del event-subproceso, el cual puede tener asociados un evento de message, timer, escalation, conditional, error, compensation, signal, multiple. Este tipo de evento puede cancelar la ejecución si "is interrupting" esta seteado; por el contrario este se ejecuta en paralelo. 

En el ejemplo, los primeros eventos en el subproceso incluyen un evento de inicio condicional y un evento de error intermedio que ejecutan las actividades A y B. Estos dos subprocesos puede interumpir el subproceso que los contiene; de igual forma 2 Collapsed Event-SubProcess que pueden interrumpir el proceso.

 

jueves, 29 de marzo de 2012

BPMN 2.0 Utilización de Eventos de Error

BPMN 2.0 Utilización de Eventos de Error


 En este post, podemos descubrir las técnicas que podemos aplicar para gestionar errores en los procesos que modelemos en BPMN 2.0.

En el ejemplo, se modela un proceso en donde un paciente se dirige a un Centro Asistencial para realizar un examen de sangre (análisis de muestra de sangre). En el proceso existe un analista que procede a extraer la sangre del paciente mediante una maquina que realiza el análisis de los componentes de la sangre en tiempo real. Durante este proceso no es común que la maquina presente problemas, sin embargo aveces ocurre. En la notacion BPMN podemos utilizar un evento intermedio de error para capturar errores. Otro error que no ocurre con frecuencia es que la maquina no pueda finalizar el examen de sangre.

En BPMN, podemos utilizar eventos de error intermedios para capturar los errores y posteriormente lanzarlos a los triggers que se encuentran en los limites del  subproceso expandido.

Como podemos observar en el proceso puede generarse dos errores, el primero una averia de la maquina que extrae la sangre del paciente y el análisis de la sangre no pudo ser finalizado. En el ejemplo estas dos excepciones son modeladas sobre un subproceso expandido. El subproceso puede lanzar dos errores. Estas errores pueden ser capturados luego en dos eventos de error intermedios ("Trigers") asociados al subproceso. En el diagrama podemos ver la utilización de eventos intermedios y de finalizacion de errores.

Por ultimo, cuando los eventos son capturados, se procede a solicitar la reparación del equipo o a resolver las inconsistencias en el análisis de la muestra de sangre. En el diagrama no incluyo participantes para simplificar su representación.

BPMN 2.0 Utilización de Eventos de Error
BPMN 2.0 Utilización de Eventos de Error

domingo, 4 de marzo de 2012

Utilización de Tareas En Serie en BPMN 2.0

BPMN 2.0 Tareas Secuenciales

Cuando modelamos procesos existen escenarios donde se requiere la creación de varias instancias de una actividad, la cual puede ser ejecutada en paralelo o en serie (una detrás de otra); por ejemplo la compra de varios artículos en un mercado, donde el operador registra cada articulo en la caja. Generalmente cuando tenemos un conjunto de actividades en bucle (loop) que requieren ser repetidas utilizamos una condición que se comprueba antes o después de cada iteración. BPMN 2.0, introdujo las tareas en serie o en paralelo, las cuales simplifican el modelado de este tipo de escenarios.

Como funcionan las actividades en Serie
Dentro de cada instancia de proceso, varias instancias de una actividad pueden ser creadas. El número necesario de instancias puede depender de una serie de factores como el tiempo de ejecución, su estado, la disponibilidad de recursos y la comunicación entre procesos. El numero de instancias se conoce antes que las instancias de la actividad sean creadas Una vez iniciada, las instancias son independientes una de la otra. Es necesario sincronizar las instancias al finalizar, antes que una actividad posterior se deba activar.

Ejemplo
En este proceso, tenemos dos participantes: operador1 y operador2. Cada uno realiza actividades similares, solo con la diferencia que el operador1 realiza un conjunto de actividades de forma secuencial utilizando la nueva notación para tareas secuenciales y el operador2 con el modelo tradicional con gateways. Ambos modelos son similares. El operador1 entrega los items de compra al operador2, este los recibe y los procesa, registrando informacion adicional en cada item; posteriormente el operador2 procesa cada item. Este ultimo es representado con el modelo tradicional (en rojo) utilizando bucles mediante gateways. Las notaciones gris y rojas son similares.

Con esta nueva representación se simplifica el comportamiento de bucle que se muestra en el diagrama con color rojo.
Saludos;

lunes, 6 de febrero de 2012

Un ejemplo de modelado de procesos mediante gateways de tipo evento

post001


Cuando modelamos un proceso, es imprescindible incluir en nuestro análisis la identificación y uso de eventos que puedan producir y consumir los participantes. En el diagrama anexo, podemos observar un proceso común de venta de productos, donde existe tres participantes: cliente, vendedor y proveedor. El cliente realiza la solicitud de compra de un producto a un vendedor, posteriormente; el vendedor solicita a un proveedor su entrega. La interacción entre el vendedor y el proveedor es representada mediante la utilización de un gateway tipo evento y 4 eventos intermedios.
  1. En el primer evento (de arriba hacia abajo), se establece un acuerdo de servicio entre el vendedor y el proveedor para la entrega de un producto solicitado, el cual se representa con un timer intermedio. Este timer, por ejemplo; puede establecerse en 3 días.
  2. El segundo evento intermedio de mensaje es activado cuando el proveedor efectivamente realiza la entrega del producto al vendedor.
  3. El tercer evento intermedio de mensaje es utilizado para permitir un feeback entre el proveedor y vendedor en relación a acuerdos o acciones que sean necesarias para resolver incidencias que pueden presentarse durante el proceso de aprovisionamiento.
  4. Por ultimo, un cuarto evento utilizado para recibir la factura del proveedor.
Cuando utilizamos un gatetway tipo evento, este lanza de forma paralela cada evento, el primero que reaccione determina que ruta o path sera utilizada por el proceso.

Algunas recomendaciones
  1. Incorpore en su análisis la identificación de eventos.
  2. Utilice un  gateway de evento para describir la producción o consumo de eventos. Por ejemplo, el evento timer puede disparar una notificación de incumplimiento de un SLA.
  3. Si es necesario el establecimiento de un loop, utilice un gateway que reciba el mensaje, no lo dirija directamente al gateway de evento.
Saludos a todos;