3/13/2012

Intalio BPM y Bonita BPM - Procesos Orientados en Eventos

Desde hace algun tiempo he estado inmerso en el enfoque BPM y en los metodos y herramientas disponibles para desarrollar las disciplinas y conceptos que la integran. He tenido la oportunida de participar en proyectos medianos y grandes cooperando en diversas aristas en soluciones BPM basadas en software libre y open source, entre las mas importantes Intalio y Bonita.

En este post, voy a compartir una vision poco desarrollada en proyectos de modelado y automatizacion de procesos, "BPM orientado en Eventos". Generalmente cuando vemos los entrenamientos y demostraciones de productos propietarios o en software libre la mayoría están enfocadas en el desarrollo de aplicaciones orientadas en procesos, donde la solucion tiene la capacidad de generar formas para el ingreso de informacion y controlar el flujo de tareas. Esta perspectiva es la tradicional, sin embargo en organizaciones donde ya existe una arquitectura de aplicaciones entregando diversas funcionalidades se requiere contar con un método que permita capturar los diversos eventos que pueden ser generados por estas aplicaciones evaluando por ejemplo acuerdos de servicios en procesos de larga duracion. Un ejemplo de un escenarios es la activacion de un servicio especifico que requiere de la intervencion de diversas aplicaciones e interacciones humanas.

Intalio + Bonita + Mule ESB
Generalmente como arquitectos o desarrollador no utilizo soluciones con funcionalidades similares, sin embargo en un proyecto ejecutado recientemente realice la integracion de 2 soluciones BPM que a primera vista no parecen complementarse, sin embargo como venremos mas adelante en posible que esto ocurra  ;sustentado en el análisis de sus debilidades y fortalezas entorno al uso de un estandart o practica de TI.

BPM orientado en Eventos
Bajo este paradigma, se reconoce en primera instancia que las aplicaciones pueden generar eventos; la solucion BPM estaría simplemente escuchado eventos generados por aplicaciones y registrandolos por ejemplo en un motor de persistencia NoSQL que permita la construccion de un cuadro de mando para la toma de decisiones.

En intalio este comportamiento puede ser implementado mediante el uso de correlaciones que esta soportando por el lenguaje BPEL desde hace años, contando con un nivel de madures aceptable. Una correlacion es un método que permite pasar datos a una instancia especifica de un proceso mediante un identificador único para la instancia. En este ultimo existen dos tipos de conrrelaciones implicitas y explicitas. En  este ejemplo podemos observar dos modelos sencillos de implementacion bases para el uso de correlaciones y el control de acuerdos de servicios.

En este ejemplo se puede observar un proceso que puede recibir y producir eventos. Inicialmente el proceso (instancia) espera por un registro, posteriormente se establece un acuerdo de servicio (SLA) o la recepción de una decisión.
En este ejemplo, el uso de correlaciones con la nuevas características de Intalio.

En Bonita actualmente no existe un control directo de este comportamento, sin embargo es posible modelarlo mediante actividades humanas que son ejecutadas de forma automatica, o la utilizacion de un modelo de persistencia donde se almacenen las diversas instancias de procesos . Uno de las fortalezas de Bonita en la existencia de una API basada en servicios REST que proporciona mayor usabilidad y control sobre las instancias. Aquí un ejemplo de un proceso modelado en Bonita BPM basado en la gestión de eventos.


Generalmente podríamos decir que ambos entornos son excluyentes; sin embargo en un proyecto he utilizado Intalio como solución para la orquestacion de servicios web descritos mediante BPEL y soportando en Apache ODE; y Bonita BPM como solución para el control de eventos. Ambas soluciones pueden ser integradas en un enfoque que permita aprovechar las áreas con mayores fortalezas en cada una. En Intalio el uso del lenguaje BPEL y los estandares ws-* y en Bonita la facilidad de utilización de servicios  REST para el control de las instancias.

Saludos;