Documento Completo BPM
Documento Completo BPM
Documento Completo BPM
BPM (Business Process Management) ha cobrado importancia dentro del área de tecnología informática, la cual
en los últimos años ha evolucionado desde el concepto de producto hacia el paradigma de servicios y soluciones. Por
otra parte, el avance tecnológico tanto en términos de comunicación como en poder de cómputo, han hecho que
Cloud Computing sea una opción potencial para la reducción de costos y mejoras en el procesamiento. La
combinación de las tecnologías asociadas a Cloud Computing y BPM modifica aspectos tanto de diseño como de
ejecución de los procesos de negocios. Los ambientes distribuidos en el contexto de los procesos favorecen el
rendimiento y proponen incorporar el concepto de descomposición de procesos, permitiendo que los mismos se
ejecuten tanto en un entorno cloud como en uno embebido. Si bien la descomposición de procesos es un tema
abordado en los últimos años, el monitoreo de dichos procesos no ha sido demasiado explorado aún.
Este trabajo propone una implementación de una arquitectura para un sistema de monitoreo de procesos
distribuidos utilizando Bonita Open Solution como motor de procesos, su API y el uso de conectores personalizados.
Marzo de 2015
Agradecimientos
Quisiera agradecer a todas esas personas que en estos años hicieron posible que yo
me encuentre alcanzando este deseo, en especial:
A Patricia Bazán y a José Martínez Garro por la oportunidad que me dieron y el apoyo
constante en la realización de este trabajo, y por los consejos y enseñanzas que me
dejaron a lo largo de todo el camino.
A mis padres Cecilia y Jorge, que con su amor incondicional me apoyaron a lo largo
de toda la carrera y por ser los mejores profesores que tuve y tendré en mi vida.
A mi hermana Silvina y a Juan Manuel que fueron los que me prestaban su tiempo en
momentos difíciles.
A mis amigos “Magios” por el constante aliento que me brindaban en cada reunión y
porque son una parte importante de mi vida.
A los muchachos de Aknotec por ser unos compañeros ejemplares y unas personas
excepcionales.
REFERENCIAS 98
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 1 - Introducción
Capítulo 1 - Introducción
1.1. Motivación
En los últimos años las empresas y organizaciones han apostado fuertemente a la eficiencia de
los procesos de sus negocios. La utilización de BPMS para identificar y diseñar, ejecutar, monitorear
y optimizar los procesos de negocios ha sido de gran ayuda para poder disminuir los costos,
aumentar la productividad, mejorar los servicios a los clientes, crear un marco de organización y
coordinación de actividades para el personal de la empresa u organización.
Otra de las tecnologías que actualmente está teniendo un interés masivo en las empresas y
organizaciones es Cloud Computing. Con este nuevo paradigma, las empresas buscan proporcionar
servicios de computación bajo demanda con una alta fiabilidad, escalabilidad y disponibilidad en un
entorno distribuido. Implementar Cloud Computing significa un cambio de paradigma de los
negocios y la infraestructura IT, donde el poder de cómputo, almacenamiento de datos y servicios se
subcontratan a terceros y se ponen a disposición de las empresas y clientes, lo que ocasiona que los
riesgos económicos y técnicos disminuyan.
Indefectiblemente, hace unos años, estas dos potentes herramientas en el área de IT, hicieron
que se comience con el estudio e implementación de BPMS en la “nube”. Esta combinación de
técnicas de clouding y BPM ofrece un enfoque flexible y ágil, junto con las ventajas de ambos
paradigmas. La gran capacidad computacional de los sistemas en el cloud y el “pago por uso” en
lugar de enfrentar grandes inversiones en software y hardware, son dos grandes ventajas de la
combinación de estas técnicas. Sin embargo, al utilizar un BPMS en la nube, se pierde el control
sobre los datos sensibles del negocio, lo que conlleva a tomar un riesgo muy grande para las
empresas de hoy en día.
Para poder utilizar BPM en el Cloud, y a la vez no tomar demasiados riesgos con la
sensibilidad de la información, hace un tiempo se comenzó a estudiar la descomposición de procesos
de negocios, donde parte de las actividades se hacen en un sistema BPMS local y otras actividades se
ejecutan en el BPMS del cloud. Para la realización de este sistema híbrido, se estableció un modelo
de distribución de procesos, actividades y datos, denominado PAD (Proceso-Actividad-Datos), en
5
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 1 - Introducción
donde se presentan varias formas de descomposición de procesos de acuerdo a las necesidades del
negocio.
Actualmente podemos encontrar BPMS que se encuentren en servidores locales o en servidores
localizados en el cloud brindando Software como Servicio (SaaS). La descomposición de procesos
de negocios antes mencionada, permite que un proceso se ejecute en ambos ambientes, dependiendo
de la lógica y modelo adoptado por el desarrollador del proceso al momento de la descomposición.
Sin embargo, una vez que se realiza la descomposición del proceso, el monitoreo y seguimiento del
proceso de negocio original en este sistema híbrido se dificulta, haciendo que se deba recolectar toda
la información de cada uno de los servidores en donde se encuentran las partes del proceso.
Si bien el estudio de la descomposición de procesos de negocios se encuentra en una etapa
bastante avanzada y podemos encontrar mucha información relacionada, el estudio de la integración
de estos procesos descompuestos para el monitoreo y seguimiento de los procesos de negocio
distribuidos es un campo en el cual se puede realizar un estudio de investigación y proponer un
marco de trabajo que sirva como base para la optimización de procesos de negocio distribuidos.
En resumen, la motivación de este trabajo se basa en favorecer el seguimiento de procesos
descompuestos en un sistema distribuido y cubrir de este modo la etapa de monitoreo y optimización
del ciclo de vida de los procesos de negocios.
6
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 1 - Introducción
Solution para que se comporten como si se tratase de un solo proceso, y a la vez, brindar una
herramienta de monitoreo distribuido basado en servicios web para el proceso de negocio unificado.
Junto con el estudio de los procesos de negocio distribuidos, se presentará el desarrollo de un
sistema de monitoreo en un ambiente híbrido entre motores de procesos de Bonita Open Solution,
debido a que es un sistema de gestión de procesos de negocio que dispone de una interfaz de
programación (API) que se basa en una arquitectura REST, en donde el intercambio de mensajes
entre cliente y servidor se realiza a través de HTTP, y a la vez es un software libre y open source.
El sistema de monitoreo se basará en las siguientes etapas:
- Implementación de un conector en Bonita OS para la ejecución de un proceso de
negocio descompuesto entre distintos servidores distribuidos.
- Investigación de la API REST de Bonita Open Solution para la instanciación de
procesos remotos y el acceso a las propiedades de procesos ya instanciados y
desplegados en el motor remoto.
- Confección de una base de datos local para la persistencia de la información
relacionada a los procesos de negocios instanciados de forma local junto a la relación
que tiene con los procesos de negocio remotos.
- Aplicación Web de monitoreo y seguimiento de procesos de negocios distribuidos.
Utilización de Web Services y API REST para la integración de los procesos
descompuestos y distribuidos, y la visualización unificada del proceso global para el
correcto seguimiento del proceso de negocio.
Con la culminación del trabajo se esperará disponer de una aplicación que sea capaz de
monitorear procesos distribuidos en varios motores de Bonita OS, para poder integrar el monitoreo y
optimización en la descomposición de procesos de negocio.
A la vez, presenta un marco teórico y un puntapié inicial para la futura investigación de
procesos distribuidos entre distintos BPMS utilizando otras tecnologías como soporte para los
distintos motores de procesos de negocios.
7
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 1 - Introducción
8
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
En este capítulo se presentará una introducción a Business Process Management (BPM), Cloud
Computing (o Computación en la Nube), la relación entre estas dos tecnologías y cómo surge BPaaS
(Business Process as a Service) a partir de la unión de estas dos. De esta manera se intenta dar un
marco teórico como puntapié inicial en la investigación de los procesos de negocio distribuidos.
9
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
BPMS puede ejecutar cualquiera de estas herramientas a través de las interfaces que otorgan las
mismas.
Además, el BPMS es capaz de monitorear cada una de las instancias de un proceso de negocio
y dar una visión de aquellas actividades que han sido realizadas, el tiempo que tomó realizarlas y si
han terminado en éxito o fracaso.
Para ilustrarlo con un ejemplo, puede ver en la Figura 2.1 [1] el simple caso de una orden de
compra, en la cual, al recibirse la orden de compra, se envía la factura, se recibe el pago, se envían
los productos y se archiva la orden de compra.
El diagrama que se muestra en la Figura 2.1 es el modelo del proceso de negocio. Un modelo
de proceso de negocio consiste en un conjunto de modelos y ejecución de actividades entre ellos,
éstos son los principales objetos para implementar los procesos de negocio. Cada orden de compra
que se procesa de acuerdo a este modelo recibe el nombre de instancia de proceso de negocio. Por lo
tanto, una instancia de proceso de negocio representa un caso concreto en el negocio operacional de
la organización, que está formado por instancias de actividades.
Las instancias de los procesos de negocio son ejecutadas, controladas y monitoreadas por los
BPMS como componente de software centralizado, lo que se conoce comúnmente como
orquestación de procesos.
De la misma manera que las actividades de un proceso de negocio interactúan entre sí, los
procesos de negocio también son capaces de interactuar con otros. Esta interacción de los procesos
de negocio se denomina coreografía de procesos. Esta interacción se realiza a través del envío y
recepción de mensajes entre los procesos, tal como se puede observar en la Figura 2.2 [1] entre un
proceso Comprador y un proceso Distribuidor. Para que la interacción entre ambos procesos de
negocio sea correcta, antes de comenzar a interactuar entre ellos se debe acordar entre ambos
procesos la coreografía que se va a utilizar.
Para reforzar las definiciones de orquestación y coreografía, podemos citar a M.Juric en [2],
quién nos dice que la orquestación sigue la noción de un proceso central, el cual toma control sobre
los servicios de los procesos involucrados y coordina la ejecución de las diferentes operaciones de
los servicios en el proceso. Los servicios involucrados no conocen y no necesitan saber que están en
un proceso de negocio, solo el coordinador central es quien sabe esto. Esta orquestación centralizada
es lo que se conoce como un proceso de negocio ejecutable. Por otra parte, la coreografía no utiliza
un control centralizado del proceso, en lugar de esto, cada servicio de negocio sabe exactamente
10
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
cuándo ejecutar sus operaciones y con quién va a interactuar. Se basa principalmente en un esfuerzo
colaborativo enfocado en el intercambio de mensajes entre procesos de negocio, es por esto que los
participantes en una coreografía necesitan especificar las operaciones permitidas entre ellos.
El ciclo de vida de los procesos de negocios consiste en fases que están organizadas en una
estructura cíclica, y que a pesar de estar relacionadas unas con otras, no imponen un orden temporal
estricto en las que se tienen que ejecutar. De esta manera, el diseño y desarrollo de los procesos de
negocio puede realizarse de una manera incremental y evolutiva, en donde es posible la concurrencia
de actividades entre múltiples fases.
En la Figura 2.3 [1] podemos ver el ciclo de vida de los procesos de negocio y las fases que lo
componen.
11
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
12
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
de cada instancia en archivos log. Estos datos son utilizados en la siguiente fase del ciclo de vida
para realizar la evaluación de los procesos.
La fase de Evaluación utiliza los datos de la ejecución de los procesos para evaluar y mejorar
los modelos de los procesos y su implementación. Al mismo tiempo, en esta fase se utiliza un
módulo especial de los BPMS llamado Business Activity Monitoring (BAM) que monitorea los
procesos de negocio en tiempo real y determina las actividades que no tienen una eficiencia
aceptable, que junto a los archivos de logs contribuye a la mejora continua de los procesos de
negocio.
Por último, en el centro del ciclo de vida de Administración y Stakeholders (las partes
interesadas), se encuentran los encargados de llevar a cabo las diferentes fases de los procesos de
negocio a lo largo del ciclo de vida. Desde el inicio del proceso de negocio hasta el final del mismo,
se pueden clasificar algunos roles de los stakeholders como los siguientes: dueño del proceso,
ingeniero del negocio, diseñador del proceso, participante del proceso, actor o empleado, responsable
del proceso, arquitecto del sistema, desarrollador.
El objetivo primario de BPMN es proveer una notación que sea legible y entendible para todos
los usuarios de negocios, desde los analistas que realizan el diseño inicial de los procesos y los
responsables de desarrollar la tecnología que ejecutará estos procesos, hasta los gerentes de negocios
encargados de administrar y realizar el monitoreo de los procesos. Además, con el uso de BPMN, los
usuarios y proveedores de servicios pueden comunicar los procesos de negocio de una forma
estándar.
BPMN ha sido desarrollado para proveer a los usuarios de una notación estándar de forma
análoga a como UML estandarizó el mundo de la ingeniería del software. Sin embargo, BPMN y
UML usan enfoques muy diferentes para modelar procesos de negocio.
BPMN define un diagrama de procesos de negocio (BPD) basado en una técnica adaptada de
diagramas de flujo para la creación de modelos gráficos de operaciones de procesos de negocio. Un
modelo de procesos de negocio, es una red de objetos gráficos que representan las actividades (por
ejemplo tareas) y los controles de flujo que definen su orden de ejecución.
Dentro de la notación de BPM se provee un conjunto de cuatro categorías de notación que
permite al lector del diagrama de procesos de negocio reconocer fácilmente los elementos básicos y
comprender el diagrama. Estas cuatro categorías básicas de elementos, que podemos ver en la Tabla
2.1 [3], son:
- Flow Objects (objetos que representan el flujo)
- Connecting Objects (objectos conectores)
- Swimlanes (andariveles)
- Artifacts (artefactos)
13
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
Con BPMN, el control y los mensajes de flujo entre procesos son primeramente modelados.
Para modelar un flujo sólo se modelan los eventos que ocurren. Las decisiones entre flujos se
modelan con gateways. Si bien el modelado está centrado en flujos y eventos, principalmente se
centra en los eventos, que son los elementos disparadores de determinadas situaciones.
Un proceso en el flujo puede contener subprocesos que cuando son atómicos se denominan
tareas. Los eventos se dividen en iniciales, intermedios y finales según se desencadene al inicio,
durante o al finalizar el flujo del proceso.
14
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
Además, se puede especificar “quién hace qué”, ubicando los procesos en pools que denotan
quién hace la tarea pudiendo particionar el pool en lanes o senderos. Típicamente un pool representa
a toda la organización mientras que el lane representa un departamento dentro de la misma. [3]
De esta manera, podemos ver que la notación BPM ha sido diseñada para permitir construir
diagramas fáciles de leer y de entender, sin importar la complejidad del diagrama, y que además
puedan ser leídos por cualquier lenguaje de ejecución de procesos de negocio. [4]
Para mostrar un ejemplo de un diagrama, en la Figura 2.4, extraída de [3], podemos ver un
proceso de negocio graficado que representa el proceso de recepción del pago de un cliente. El
proceso se inicia con la actividad de Identificar la forma de pago. Se prevén dos posibles formas de
pago: en efectivo o con tarjeta de crédito. En cada caso se aplica la actividad de aceptar el pago
según la forma del mismo y se pasa a la actividad de empaque de la mercadería, finalizando así el
proceso.
15
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
promueve la disponibilidad y está compuesto por cinco características esenciales, tres modelos de
servicio y cuatro modelos de despliegue (Figura 2.5).
Dentro de las cinco características esenciales de Cloud Computing según el NIST [6][7][8]
tenemos:
1. Bajo demanda y Autoservicio: El usuario dispone automáticamente de las distintas
necesidades de recursos que el proveedor de servicios de cloud brinda sin necesidad que éste
último tenga que realizar intervenciones manuales. El usuario del cloud puede configurar a su
criterio las capacidades de cómputo tales como tiempo de servidor, almacenamiento, memoria
RAM, cantidad de procesadores, velocidad de red, etc.
Esta característica aporta un gran beneficio al usuario dado que reduce en gran medida las
complicaciones y costos que normalmente conllevan la adquisición de recursos propios IT,
siendo así uno de sus grandes beneficios.
2. Amplio acceso a la red: El Cloud Computing permite el acceso a los datos desde cualquier
lugar. Solo se necesita un navegador web y conexión a Internet para disfrutar de los servicios
en la nube, no hace falta tener un sistema operativo determinado o instalar un software
específico en cada cliente. La combinación de dispositivos móviles (tablets y smartphones) y
fijos crea nuevas oportunidades en el desarrollo de la actividad empresarial, permitiendo plena
operatividad.
Esta característica es especialmente importante en organizaciones distribuidas
geográficamente, permitiendo el acceso a los recursos con independencia de aspectos como la
ubicación y la jornada laboral. Es importante puntualizar que esta característica establece una
limitación, ya que no es posible utilizar las aplicaciones en la nube si no hay conexión a
Internet.
16
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
3. Pooling de recursos: Esta característica permite a los distintos proveedores compartir sus
recursos tanto físicos como virtuales entre los distintos usuarios, disminuyendo costes,
maximizando la disponibilidad y de acuerdo a los requerimientos de los usuarios. Para poder
habilitar este modelo multi-tenant de forma óptima, es necesario que los recursos disponibles
(capacidad de computación, almacenamiento, velocidad de red, etc.) se asignen y balanceen de
forma automática en base a las distintas peticiones de los usuarios.
Los usuarios pueden ignorar el origen y la ubicación de los recursos a los que acceden, aunque
sí es posible que sean conscientes de su situación a determinado nivel, como el país donde se
localiza el CPD (centro de procesamiento de datos).
4. Escalabilidad y rapidez: La sencillez con la que se pueden añadir o eliminar recursos supone
una ventaja frente al modelo tradicional. En Cloud Computing es posible añadir o eliminar
recursos en cuestión de minutos, aumentando o disminuyendo el almacenamiento o el número
de procesadores sin que la aplicación se vea afectada.
En el ámbito software, la flexibilidad es muy alta, pudiendo incorporar nuevas funcionalidades
a todos los usuarios de forma más rápida que sobre sistemas tradicionales.
5. Servicio medido: Los sistemas en la nube controlan automáticamente y optimizan el uso de
recursos mediante una capacidad de medición a algún nivel de abstracción adecuado al tipo de
servicio; por ejemplo, almacenamiento, procesamiento, ancho de banda y cuentas de usuario
activas. El uso de estos recursos puede ser monitoreado, controlado y reportado,
proporcionando transparencia tanto para el proveedor como para el consumidor por el servicio
utilizado. Esto posibilita diferentes modalidades de pago como:
- Pago por disponibilidad del servicio: se acuerda un precio por el tiempo en el que los
recursos contratados están habilitados al usuario.
- Pago por uso: se basa específicamente en los servicios consumidos por el usuario
(almacenamiento realizado, transacciones comerciales realizadas, etc.), de forma
análoga a como se paga el servicio de electricidad, gas o agua potable.
- Pago por paquetes escalables: el pago se realiza por reservas de slots fijos que se
pueden incrementar en unidades acotadas.
Las arquitecturas de Cloud pueden ser analizadas de dos perspectivas diferentes, una es de un
punto de vista organizacional y otra es de una visión tecnológica. En esta parte, veremos el punto de
vista organizacional (o modelo de implementación) en donde la distinción se basa en cómo los
usuarios y/o proveedores están separados. Mientras que en la Sección 2.2.3: Modelos de Servicio,
veremos la parte técnica de la arquitectura de Cloud, que está más orientada a las características del
funcionamiento de la nube [9].
17
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
18
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
Sin embargo, existen tres tipos de servicios que han sido aceptados universalmente (conocido
como modelo SPI) y que se pueden ver en la Figura 2.7, estos son:
1. Software como Servicio (Software as a Service - SaaS): en este modelo, el proveedor pone
a disposición una aplicación completa como servicio para el usuario final. Este servicio se
ejecuta como una instancia única de software que corre en la infraestructura que el proveedor
gestiona. Los clientes acceden a estas aplicaciones a través de interfaces de cliente livianas
como navegadores web, dispositivos móviles o interfaces de programas. Entre los servicios
más comunes que podemos encontrar están: Google Maps, Google Docs, Microsoft Windows
Live, Twitter, Facebook, entre otras.
2. Plataforma como Servicio (Platform as a Service - PaaS): este servicio cuenta con un
ambiente de programación y un ambiente de ejecución que está dirigido más que nada a
desarrolladores en lugar de usuarios finales. Entre algunos de los servicios más conocidos
podemos encontrar la App Engine de Google, Azure de Microsoft, o Facebook Platform de
Facebook, donde cada uno de estos servicios tienen un lenguaje de programación y
herramientas que brinda el proveedor. El cliente no controla ni gestiona la infraestructura, sólo
es responsable de instalar y desplegar las aplicaciones que desarrolla.
3. Infraestructura como Servicio (Infraestructure as a Service - IaaS): el proveedor del
servicio le brinda a los clientes procesamiento, almacenamiento, dispositivos de red y otros
recursos fundamentales, en la mayoría de los casos a través de la tecnología de virtualización,
en donde cliente es el responsable de instalar el sistema operativo y aplicaciones que le sean
necesarias, y gestionar el almacenamiento y la interacción del usuario con el sistema.
19
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
Como se mencionó anteriormente, los modelos de servicio que ofrece la nube siguen el
esquema XaaS (“Cualquier cosa como Servicio”) como regla general, sin embargo, cualquier modelo
de servicio que una organización desee establecer gira en torno al modelo SPI (SaaS, PaaS, e IaaS),
esto significa que las organizaciones utilizan algún servicio del modelo SPI como base para ofrecer
los servicios propios. Entre algunos ejemplos de modelos de servicios que generan las
organizaciones podemos encontrar: StaaS (Storage as a Service), se brinda espacio de
almacenamiento como servicio; IdaaS (Identity as a Service), pensado como un inicio de sesión
único para la nube; SaaS (Security as a Service), modelo de tercerización para la gestión de la
seguridad; entre muchos más.
Para BPM también existe un modelo de servicio en cloud computing llamado BPaaS, o
Business Process as a Service, que consiste en un modelo de servicio donde las aplicaciones que se
ofrecen en cloud son del tipo procesos de negocio o workflows. Este modelo se utiliza como uno de
los temas centrales de este trabajo, y se presenta en la siguiente sección.
Es común ver a BPaaS como un modelo especial situado por sobre la capa del modelo SaaS
(Figura 2.8), en el que los proveedores de la nube proporcionan métodos para el modelado,
utilización, personalización, y ejecución distribuida de procesos de negocios [12].
20
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
Dado que BPM es una disciplina que ayuda continuamente a las organizaciones a optimizar los
procesos operacionales que tienen un gran impacto en los objetivos de negocio, las organizaciones
utilizan cada vez más los BPMS para modelar y ejecutar los procesos de negocios, administrar tareas
humanas y de los sistemas, monitorear y auditar el rendimiento de los procesos de negocio y
mejorarlos continuamente. Por esto, la integración de un BPMS en un modelo SaaS provee un
ambiente flexible y a bajo costo, no solo para aquellas pequeñas y medianas organizaciones que
desean tener una infraestructura de IT que pueda incrementar el nivel de servicio que se les brinda a
sus clientes, sino también para organizaciones de gran magnitud que se ven envueltas en grandes
costos de instalación, despliegue, mantenimiento y actualización de su infraestructura IT.
Básicamente, este modelo de servicio necesita de dos componentes principales para el
desarrollo y ejecución de sus procesos, que son utilizados para lograr las funcionalidades de un
workflow tal como se ejecutaría en un sistema embebido:
- BPMS (Business Process Management System): herramientas para diseñar, ejecutar,
monitorear y optimizar los procesos de negocios.
- BAM (Business Activity Monitoring): herramienta para monitorización de ejecución de
procesos de negocio en tiempo real.
21
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 2 - BPM y Cloud Computing. BPaaS.
Una de las soluciones a estas desventajas que se han nombrado anteriormente, y que se
ampliará en el Capítulo 3, es crear un sistema híbrido, formado por un motor de procesos de negocio
en el cloud y otro local, en el cuál los procesos se descomponen en dos tipos de actividades:
1. Aquellas actividades que requieren mayor poder de procesamiento y no manejan información
sensible.
2. Aquellas actividades que manejan información sensible, o gran volumen de información.
Al descomponer los procesos de negocio en estos dos tipos de actividades podemos situar las
actividades del punto 1 en la nube, y las del punto 2 en un BPMS local. [11] [13]
Para realizar esta descomposición se tienen que tener en cuenta varios aspectos de la estructura
y funcionalidad de los procesos de negocio, y se tratarán a continuación en el próximo capítulo.
22
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
En este capítulo se dará una introducción al uso de BPMS en la nube, para luego dar un marco
teórico en la combinación de un esquema embebido y un esquema en el cloud a partir de un modelo
PAD (Proceso – Actividad – Datos). A continuación de la combinación de ambos esquemas se
explicará cómo es posible realizar la descomposición de procesos en dos o más subprocesos
utilizando un quinto patrón derivado del modelo PAD y cómo determinar la distribución óptima de
las actividades que aprovecharían las ventajas de un sistema embebido y un sistema en el cloud. Por
último, se introduce al lector en el monitoreo de procesos de negocios, la importancia que tiene
dentro de un BPMS y los desafíos que requieren realizar la tarea una vez que se llevó a cabo la
descomposición de procesos (tema que se tratará con más profundidad en el Capítulo 5).
23
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
24
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
- Control de Flujo: Los procesos de negocio consisten de dos tipos de flujos: de control
y de datos. Los flujos de control regulan las actividades que se ejecutan y cuál es la
siguiente actividad en ejecutarse, mientras que los flujos de datos determinan cómo los
datos se envían de una actividad a la otra dentro del proceso, y cómo se realiza el
mapeo de estos datos. Los motores de BPM deben lidiar con el control de ambos flujos.
Un flujo de datos puede contener datos sensibles, por lo tanto, cuando se despliega un
motor de BPM en el cloud, se debe proteger el contenido de los mismos.
Un ejemplo de arquitectura propuesta sería aquella en que el motor del lado del cloud solo lidia
con flujos de datos usando identificadores de referencia en vez de datos reales. Cuando una
actividad necesita datos sensibles, la transferencia de los datos a la actividad se maneja bajo
supervisión del usuario dentro de un túnel de encriptación. Los datos sensibles se almacenan en el
lado del usuario final, y los datos no sensibles se almacenan en el cloud. Este esquema permite
que los datos sensibles no viajen indiscriminadamente a través de la web.
- Distribución óptima: los costos de un sistema de cloud han sido propósito de estudio
en diversos artículos tales como [18] y [19], en los cuales se investiga a los proveedores
de cloud como Amazon, Google, eBay, entre otros, y se plantea como encontrar el
balance de costo y rendimiento utilizando una aplicación que se basa en cloud
computing para la realización de las tareas que requieren mayor poder de
procesamiento.
En el caso de los procesos de negocio existen distintas fórmulas para calcular la distribución
óptima de las actividades, y determinar si las mismas deben ubicarse en la nube o en un sistema
embebido. El cálculo toma en cuenta los costos de tiempo, los costos monetarios y los costos por
el riesgo de privacidad. En la Sección 3.4, luego de realizar la introducción de la descomposición
25
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
de los procesos, se presentaran algunos casos de los tipos de distribución óptima de las
actividades en un sistema embebido y un sistema cloud.
26
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
Figura 3.3. Datos enviados entre actividades coordinadas por motores de procesos [11]
Para poder correr un mismo proceso de negocio en dos motores de proceso separados, el
mismo debe ser dividido en dos procesos individuales. Puede llegar a ser conveniente para los
usuarios del BPMS tomar una lista de distribución del proceso de negocio y sus actividades, la cual
puede ser automáticamente transformada en dos procesos de negocio, uno en el cloud y otro en el
sistema embebido. [10][11][13]
Una aproximación posible para manejar la descomposición del proceso es identificar la
estructura y la semántica del mismo (Figura 3.4). Esto significa que se deben identificar aquellas
actividades del proceso de negocio en donde la ejecución de las mismas dan la pauta de atomicidad,
y que su ejecución, ya sea en el sistema embebido o en el cloud, no modificaría el comportamiento
del proceso de negocio original. Una estrategia para detectar aquellas actividades atómicas es tratar
de observar las dependencias de control y de datos que tienen con otras actividades y con el motor de
procesos en el cuál se ejecutan. Por ejemplo, si existe una actividad que utiliza información
confidencial que obtiene del sistema embebido, lo más probable es que no sea recomendable ejecutar
la actividad en el motor de procesos situado en el cloud, ya que correríamos peligro de exponer tales
datos. Al identificar las dependencias de control y de datos, se pueden investigar las consecuencias
de mover ciertas actividades del sistema embebido al cloud y viceversa.
27
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
28
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
lugares, se presentan los casos básicos de ejemplo para lograr una mejor compresión de la
distribución.
30
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 3 - Descomposición de procesos
y monitoreo distribuido
BAM provee acceso a información de los procesos en tiempo de ejecución, permite un análisis
en tiempo real de los procesos de negocio, muestra los cuellos de botella en las tareas, mide el
tiempo de cada tarea y provee herramientas para visualizar toda esa información [15]. Además, se
utiliza para asegurar que los procesos de negocio funcionan como es esperado, simplificar la
información compleja relacionada a los procesos y mostrarla oportunamente.
Como se ha dicho anteriormente, muchos BPMS contienen módulos BAM para realizar el
monitoreo de los procesos de negocio que se están ejecutando en el motor de procesos. Por ejemplo,
en la Figura 3.6, podemos ver la arquitectura de Bonita Open Solution [17], un BPMS libre y open
source (que veremos en detalle en el Capítulo 4), en la cual observamos los distintos módulos que
componen a la suite, entre ellos el módulo BAM de monitoreo. Sin embargo, estos módulos de
monitoreo funcionan solo dentro del BPMS donde se están ejecutando los procesos. Por esto, en el
caso de la descomposición de procesos, el mayor de los problemas de poseer un esquema de
procesos particionados, es la recuperación y monitoreo de las distintas instancias distribuidas (ya sea
en un sistema embebido o dentro del cloud), y a su vez lograr dar un esquema integrador de las
mismas bajo la óptica del “proceso original” al cual pertenecen.
En la presente tesina se propone resolver este problema de monitoreo y presenta en el Capítulo
5 una solución que luego será respaldada por una aplicación de ejecución y monitoreo de los
procesos de negocio distribuidos.
31
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
En este capítulo se dará una introducción al BPMS Bonita Open Solution [21], una suite para la
gestión de los procesos de negocio, profundizando en los componentes, APIs, y conectores que la
componen. Dado que se caracteriza por ser un BPMS libre y open source basado en el lenguaje de
programación Java [20], veremos cómo es posible utilizar a estos componentes para extender la
funcionalidad de la misma y poder ejecutar procesos de negocio distribuidos.
32
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
realizar diferentes ajustes a sus proyectos desde una perspectiva general, pudiendo modificar la
apariencia de los procesos de negocio, y hasta incluso simular la ejecución de los mismos para poder
obtener los costos de cantidad y costo por uso o por tiempo consumido.
Figura 4.1. Diferencias entre la versión libre y los Subscription Pack de BonitaOS [23]
Una importante ventaja de la aplicación es que soporta varios formatos de archivos (proc, bar,
BPMN, XPDL y jBPM) para la importación de procesos de negocio, pudiendo importar procesos de
negocio incluso de aplicaciones BPMS similares a BonitaOS que utilicen la notación BPMN 2.0,
como puede ser Bizagi [22]. Además permite realizar la exportación de los diseños de los procesos y
guardarlos en diferentes formatos para poder traspasarlo de un sistema a otro o guardarlos como
copias de seguridad, siendo cada proceso independiente a la plataforma, así como también exportar
los procesos a formatos de archivo de documentos o imágenes tales como pdf, jpeg, png, bmp, gif y
svg, para poder visualizar los procesos sin necesidad del uso de la suite.
Un BPMS como Bonita, además de ofrecer las ventajas propias de su orientación a procesos,
presenta otras ventajas en cuanto al desarrollo de aplicaciones basadas en procesos. El hecho de
poder modificar el modelo en BPMN y automáticamente modificar toda la aplicación con los nuevos
cambios, de forma que cualquier cambio en la lógica de negocio no suponga modificar toda la
aplicación, es una cualidad muy beneficiosa, ya que esto reduce enormemente los tiempos de
desarrollo y testeo para el mantenimiento y adaptación de las aplicaciones. Con esta capacidad de los
BPMS abandonamos la visión monolítica de las aplicaciones basadas en plataformas y abrimos el
camino para trabajar en la mejora continua de los procesos. Además, es posible gestionar versiones
de los procesos, pudiendo reutilizar procesos ya existentes para la generación de nuevos procesos
adaptados o mejorados. [21][23]
33
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
Es una interfaz grafica cuya función es diseñar los procesos BPM usando la notación BPMN
sobre un área de diseño de forma muy intuitiva basada en arrastrar los elementos y en su
configuración específica mediante una o varias pestañas habilitadas para ello. Desde esta interfaz
gráfica es posible crear nuevos procesos, abrir procesos existentes o importarlos. Dispone de varias
barras de herramientas para la creación, ejecución y configuración de los procesos diseñados, paletas
de diseño para la construcción de los procesos de negocio, un área de trabajo en donde se diseñan los
procesos y paneles de vista y detalles.
Es un módulo que se encuentra dentro de Bonita Studio. Es el módulo en el que se definen los
formularios que habrán de ser rellenados por los usuarios. Como muchos de los pasos que se
producen en un proceso BPM requieren de la entrada de datos por parte del usuario implicado, es
necesario contar con este componente para el ingreso de la información que requiere cada una de las
actividades dentro del proceso. Una característica que se puede encontrar dentro de la construcción
de los formularios es la posibilidad de declarar validadores para el formulario entero o para un
conjunto de campos del mismo, para que de esta manera se controlen los datos que se ingresan.
34
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
está conectado directamente a este otro módulo para funcionar. Este motor es genérico y extensible
por lo que siempre seremos capaces de añadir con mayor o menor dificultad nuevos estándares o
bien servicios que puedan aparecer en el mundo de BPM con posterioridad.
El módulo Bonita Execution Engine (BEE) es uno de los tres principales módulos de Bonita
OS. Es un módulo no intrusivo, ya que solo requiere una Java Virtual Machine (JVM) para
ejecutarlo. Es la base de procesamiento, la cual se ejecuta en tiempo real en background y conecta a
Bonita Studio, los formularios creados en el Form Builder, al módulo Bonita User Experience y las
aplicaciones externas que utiliza la organización.
Bonita Open Solution se basa en la BEE para crear, acceder y procesar los datos a través del
uso de las diferentes interfaces de programación de las aplicaciones (APIs), además de gestionar y
ejecutar los procesos creados en Bonita Studio.
La BEE, también conocida como Runtime, fue diseñada para proveer la máxima flexibilidad a
través de la inyección de servicios. La BEE es completamente configurable utilizando un archivo
XML llamado bonita-server.xml, que puede encontrarse en la carpeta de configuración del servidor.
Este archivo de configuración describe todos los servicios utilizados por defecto, aunque es posible
cambiar cualquiera de ellos o reemplazarlos por los que se ajusten con la implementación de la
aplicación.
Es una aplicación encargada de desplegar y gestionar los procesos ya desplegados así como las
instancias de cada proceso. Es muy intuitiva ya que su interfaz es similar a una aplicación de gestión
de correo.
Bonita User Experience (User XP) provee una interfaz similar a un cliente de correo
electrónico para gestionar los pasos, actividades y procesos. Tiene una vista de usuario que puede ser
utilizada, por ejemplo, por un empleado dentro de la compañía que tiene la responsabilidad de
responder a cierta solicitud para completar una parte del proceso, o por algún cliente o comprador.
Los usuarios finales que tienen que realizar alguna acción en un proceso pueden utilizar el User
XP para observar aquellas tareas que están esperando ser completadas, ingresar o mirar los datos que
fueron introducidos en los formularios, e interactuar con la lista de actividades en las cuales se
encuentra involucrado.
35
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
necesidades del proceso de negocio. Los conectores son componentes básicos utilizados para
modelar las interacciones entre dos o más componentes de software. Los conectores funcionan en
tiempo de ejecución y por lo general se comunican entre dos objetos, o entre un cliente y un servidor,
mediante mensajes asincrónicos, multicast o streams de datos. Principalmente se utilizan para la
gestión de información y para la ejecución de funcionalidades específicas que contienen los sistemas
de información.
El motor de bonita es extensible, esto significa que puede ser usado con la plataforma que
tienen Bonita por defecto, es decir con Bonita User Experience, o ser consumido como un EJB
(Enterprise JavaBeans) o por HTTP a través aplicaciones externas haciendo uso de la API REST que
nos otorga. De esta manera, es posible integrar los procesos de negocio que gestiona Bonita hacia un
sistema de información o a una aplicación propia, y ejecutar los métodos que se encuentran en las
diferentes APIs que contiene el motor de procesos de Bonita (BEE). A partir de la Sección 4.3.3 se
explicará cómo está integrada la API REST, su definición, obtención y ejecución de los métodos que
la integran.
Bonita Open Solution provee conectores para conectar una tarea (o actividad) o un proceso
(pool) hacia sistemas de información externos. Los conectores toman una entrada específica
(directamente como un valor que el usuario ingresó en la actividad o construidos en una expresión) y
ejecuta código Java. Algunos conectores también reciben el resultado de la llamada realizada, que es
útil para informar a la actividad si el proceso de efectuar dicha llamada resultó exitoso, o por
ejemplo, si lo que se desea es obtener datos de una base de datos externa, el conector se encarga de
devolver los datos a la actividad que ejecutó el conector y realizó la consulta. (Figura 4.3)
Una gran biblioteca de conectores también es un elemento esencial para la viabilidad a largo
plazo de una solución de BPM. Al agregar conectores a las actividades se permite que los procesos
de negocio se integren con aplicaciones o herramientas de la organización. Los conectores permiten
separar el proceso de definición del proceso de implementación, tal como se verá más adelante. Una
de las ventajas que los caracterizan es que permiten reutilizar código ya sea, utilizando conectores
que ya se encuentren en la biblioteca, creando conectores propios, o bien descargando e instalando
conectores creados por otros desarrolladores de la comunidad.
Estos conectores se utilizan para operar dentro del flujo de trabajo de BPM con sistemas de
terceros que tienen distintos tipos de servicios y aplicaciones (como bases de datos, mensajería,
ERP´s, ECM´s, data warehouse, CRM´s, etc.). De esta manera podemos encontrar conectores para
MySQL, Oracle, MSSQL Server, Jasper, SAP SalesForce, Alfresco, Sugar CRM, etc.
36
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
Las empresas desarrolladoras de software que ofrecen sus productos con licencia propietaria,
como por ejemplo Oracle BPM [29] o Intalio [30], introducen suscripciones pagas y otros obstáculos
al proceso de creación de conectores de terceros debido a que desean maximizar sus ganancias. Esto
contiene parcialmente a la comunidad de desarrolladores y, por consiguiente, limita el rango de las
capacidades de la aplicación privada.
Por el contrario, los proveedores de BPM de código abierto como Bonita OS complementan las
ofertas con las contribuciones de su base de usuarios y de la comunidad más grande para mejorar la
versatilidad del producto. Los productos de BPM de código abierto como el conjunto de aplicaciones
de BonitaSoft ya cuentan con una gran biblioteca de más de 100 conectores (Figura 4.4) listos para
elegir y usar, entre los que podemos encontrar para:
- Base de datos como PostgreSQL, DB2, MySQL, MS SQL Server;
- Crear o eliminar ítems de un calendario de Google;
- Enviar correos a través de un servidor de correos como Gmail o Hotmail;
- Medios de comunicación social como Twitter y Facebook;
- Generación de reportes con la aplicación Jasper;
- Gestionar reglas de negocio con la aplicación Drools, entre muchos más.
Además esta selección está aún más enriquecida por las contribuciones que realizan los
usuarios a la comunidad. Bastante a menudo, un usuario puede interactuar con la fuente de datos de
la comunidad para la que no exista un conector actual. En lugar de solicitarle al proveedor del
software que cree un conector para esa fuente de datos en una versión futura, el usuario tiene la
opción de crear un conector y compartirlo con otros. [21]
Existen dos formas de incluir un conector en una actividad. Elegir un conector de los que
ofrece Bonita OS que ya se encuentran instalados en la sección de conectores, o crear un conector
propio y agregarlo.
Para agregar un conector de los que ofrece Bonita, es necesario seleccionarlo de una lista de
conectores cargados que se encuentra separada por categorías. Para crear un conector nuevo, es
37
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
necesario indicarle a Bonita datos como, a qué categoría (nueva o existente) va a pertenecer el
conector, el nombre que va a tener, la descripción del conector, el icono que va a tener, las entradas y
salidas que se va a tener, e implementar el conector utilizando Java como lenguaje de programación.
Un conector es implementado en dos partes, la definición y la implementación. Esto permite
modificar la implementación sin tener que modificar la definición, además, es posible crear varias
implementaciones para una sola definición. La definición de un conector controla las interfaces
externas del conector, es decir, las visibles a los usuarios y las visibles al motor de Bonita (las
entradas y salidas). La implementación de un conector consiste en un archivo XML y una clase
Java. Es posible crear varias implementaciones que correspondan a una definición, sin embargo, en
un procesos solo existe una relación de uno a uno entre la definición y la implementación del
conector.
El separar la definición de la implementación, permite que si el sistema externo cambia la
interfaz a la que se está conectando el conector, lo único necesario para enlazar nuevamente el
conector al sistema externo es cambiar la implementación del conector, sin tener que modificar los
procesos de negocio, lo que ahorra muchos problemas y tiempo de redefinición de diseño.
Una vez creado el conector es posible agregarlo como si se tratase de un conector ya existente.
Ambas acciones, agregar un conector como crearlo, se realiza a través de un asistente de
configuración que dispone Bonita Studio.
Utilizando conectores, el proceso de negocio ya no tiene que adaptarse al sistema de
información, sino, el sistema de información se debe adaptar al proceso de negocio. Con frecuencia
la mayoría de procesos BPM enfrentan este problema de tener que forzar al sistema de información
para evolucionar con respecto a los objetivos del proceso. Este es el resultado de la mejora continua
de los procesos.
38
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
Con los distintos conectores que se disponen y con la facilidad para manejar los distintos
módulos del BPMS de Bonita a la hora de diseñar e implementar los procesos, el desarrollar nuevas
aplicaciones o adaptar los procesos actuales de una organización son proyectos totalmente
realizables. Su adopción como herramienta de desarrollo, sólo dependerá de la implicación que la
gente de TI tenga con los objetivos y metas de negocio. [21][23]
Para crear un conector utilizando el asistente hay que ir al menú “Conector >> Nuevo
conector…”. Se abrirá una ventana donde se deberá ingresar información sobre el conector como:
identificador, una descripción, categoría de conectores a la que va a pertenecer, y hasta es posible
agregarle un icono para reconocerlo fácilmente en la lista de conectores. Luego, están las secciones
de entrada (“Páginas”) y salida (“Salidas”) de datos. (Figura 4.5)
Para enviar datos al conector se deben crear “páginas”. Al crear una “Página” se abre otro
asistente para las entradas de información al conector (Figura 4.6). Las páginas sirven para separar
los datos de entrada que tienen algún tipo de relación entre sí. Por ejemplo, si deseamos hacer una
consulta a una base de datos, tenemos básicamente dos tipos de información, la conexión a la base de
39
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
datos (con datos como servidor, puerto, usuario y contraseña, etc.) y la consulta misma, por lo tanto,
podemos crear dos páginas que contengan estos dos tipos de información y separar estos datos.
Una vez que creamos las páginas, es necesario crear las variables de salida en donde se
guardarán los datos que se generen luego de que se ejecute el código del conector.
En el ejemplo que se muestra en las figuras, el conector va a generar tan solo un texto de
saludo. Las entradas serán el “nombre” y “apellido” de una persona, y el texto generado se guardará
en una variable llamada “saludo”. En la Figura 4.7 podemos ver como quedaría el asistente luego de
crear el conector.
40
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
Luego de apretar en el botón “Finalizar”, Bonita genera un bloque de código Java basado en las
entradas y salidas ingresadas en el asistente, en donde incluye los getters y setters de estas variables.
Cada conector extiende de la clase ProcessConnector y tiene al menos dos métodos que son los que
se debemos sobrescribir, estos son executeConnector y valídateValues.
ExecuteConnector es el método que realiza el trabajo del conector. En el caso del ejemplo,
debemos concatenar las variables apellido y nombre y agregarle un “Hola” al inicio de esta.
ValidateValues es un método que debería validar las entradas. Por ejemplo, se podría validar
que el nombre y el apellido contengan sólo letras.
En la Figura 4.8 es posible visualizar el código fuente del conector, el cuál contiene los
métodos anteriormente mencionados, junto con los getters y setters de las variables.
Luego de salvar el archivo ya es posible probarlo yendo al menú “Conectores >> Probar un
Conector”, o utilizarlo dentro de cualquier actividad del proceso de negocio.
41
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
42
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
43
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
De la misma forma que las interfaces de usuario interactúan (utilizando Java como lenguaje)
con el motor de procesos (BEE) de Bonita a través de estas APIs, es posible también que una
aplicación externa interactúe con el motor a través de HTTP utilizando una API REST que Bonita
nos brinda.
44
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
En la Figura 4.9 se puede ver el árbol de directorios del servidor Tomcat que contiene a Bonita
luego de haber descomprimido el archivo descargado. Es necesario tener con el paquete de Java JDK
(Java Development Kit) [24] instalado e iniciar el servidor desde esta carpeta, utilizando el archivo
startup.bat, ya que es el archivo que se encarga de asignar las variables de entorno para que sea
posible el acceso desde la red.
Para poder utilizar la API REST de Bonita lo primero que hay que realizar es obtener el
archivo bonita-server-rest.war y desplegarlo en el servidor Tomcat. Una forma de hacer esto es
exportándolo desde Bonita Studio, accediendo al menú “Proceso/Exportar Avanzado”, cliquear en el
botón “Pasar al último paso>>”, marcar la casilla “Exportar Runtime”, seleccionar “REST” y
clickear en el botón “Exportar”.
El archivo exportado bonita-server-rest.war hay que copiarlo a la carpeta “webapps” del
servidor Tomcat, e iniciar el servidor, que se encargará automáticamente de construir las carpetas
correspondientes a la API REST de Bonita.
45
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
El archivo de configuración de JAAS es un archivo de texto que utiliza el cliente JAAS para
encontrar los LoginModules necesarios para comunicarse con el servicio compatible con JAAS. En
Bonita, este archivo de configuración que contiene los diferentes módulos de registro se llama jaas-
estandar.cfg.
La clase javax.security.auth.login.LoginContext de Java provee los métodos básicos
utilizados para autentificar a los usuarios, y permite separar a la aplicación del proceso de
46
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
BonitaStore {
org.ow2.bonita.identity.auth.LocalStorageLoginModule required;
};
BonitaRESTServer {
org.ow2.bonita.identity.auth.BonitaRESTServerLoginModule optional logins="restuser"
passwords="restbpm" roles="restuser";
};
En el caso del acceso local a Bonita, es decir, al acceder al User Experience, los pasos que se
realizan, y que pueden observarse en la Figura 4.11, son los siguientes:
- El cliente realiza el acceso frente al contexto de BonitaAuth JAAS.
- BonitaAuth delega el modulo de acceso a BonitaIdentityLoginModule
- BonitaIdentityLoginModule llama al servicio checkUserCredentials que es otorgado
por BEE Management API
47
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
Es posible utilizar a Bonita para que se ejecute en ambos contextos, es decir, local y externo
mediante REST, sin embargo, ambos contextos no se pueden ejecutar de forma simultánea. Gracias a
que el motor de Bonita es transaccional, se debe cambiar de contexto cada vez que se desea acceder
mediante REST, ejecutar las acciones necesarias y volver al contexto local (BonitaAuth) para que no
se produzcan errores en la ejecución de las actividades.
Una vez que se ha configurado correctamente el acceso a la API REST, es posible invocar los
métodos que conforman a esta interfaz.
48
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
Para poder ejecutar los métodos que componen a la Bonita Execution Engine (BEE), primero
se debe consultar conocer los métodos disponibles que otorga esta API. Para realizar esto es posible
consultar a la documentación de la API REST que se encuentra en el sitio de Bonita en [26]. Aquí es
se puede encontrar la documentación de las clases que componen a la API, sus métodos y los
parámetros necesarios para ejecutarlos. Las clases son las mismas que en la sección 4.3.3, pero con la
diferencia que la API REST es una interfaz que sirve de adaptador HTTP para la BEE. Al ingresar
dentro de la documentación de cada clase, es posible visualizar los métodos disponibles que se
pueden invocar, junto con una descripción de lo que realiza cada uno, y los parámetros que deben
enviarse cuando se genera dicha petición.
La API REST de Bonita, para el acceso mediante peticiones HTTP, utiliza 3 tipos de
parámetros que puede utilizar para la ejecución de los métodos que componen a la BEE:
- Parámetro Path: los parámetros Path (o Ruta) están identificados por los símbolos “{“ y “}”
en la ruta URL. Para utilizarlos hay que reemplazar “{nombre parámetro}” por el valor que
se desea ejectar. Por ejemplo, para el método getProcessesByState:
/API/queryDefinitionAPI/getProcessesByState/{processState}
se transforma en
/API/queryDefinitionAPI/getProcessesByState/READY
- Parámetro Query: los parámetros Query (o de consulta) se pone luego del símbolo “?” en la
URL. Se puede observar en el detalle de los métodos cómo utilizarlos. Para definir un valor
para un parámetro de consulta, se debe poner luego del símbolo “=”. Por ejemplo, para el
método getLightProcessesByIndexAndPageSize, :
/API/queryDefinitionAPI/getLightProcessesByIndexAndPageSize?fromIndex=?&pageSize=?
que luego reemplazando los símbolos se convierte en,
/API/queryDefinitionAPI/getLightProcessesByIndexAndPageSize?fromIndex=0&pageSize=20
Para ejecutar los métodos se debe conocer la dirección IP en la cual se encuentra el servidor
REST. Si se ha desplegado el servidor REST como se indicó en la sección 4.3.5, la URL en la cual se
enviarán las peticiones suele tener la forma:
http://{direccionIP}:{puertoUtilizado}/bonita-server-rest/
49
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 4 - Bonita Open Solution y su
capacidad de extensión
Luego es necesario indicar los métodos que se desean ejecutar. Por ejemplo, para ejecutar el
método getProcessesByState en localhost en el puerto 8080, se debe realizar una petición a la
siguiente URL:
http://localhost:8080/bonita-server-rest/API/queryDefinitionAPI/getProcessesByState/READY
El resultado de esta petición, devolverá todos aquellos procesos que estén en un estado de
READY.
50
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
En este capítulo se presenta una solución propuesta para la ejecución y monitoreo de procesos
de negocios distribuidos. Se comenzará introduciendo al lector sobre los temas generales en la
ejecución de los procesos distribuidos, empezando con el diseño de los subprocesos a partir de los
criterios que se deben tomar en la descomposición de los procesos. Luego, se presentará el conector
de Bonita desarrollado capaz de iniciar instancias de procesos desplegados en otros motores de
procesos de este BPMS como punto de partida para la ejecución distribuida de los procesos.
Para introducir en la idea de la solución de monitoreo, se define de la infraestructura y
arquitectura necesaria para llevar a cabo la fase de ejecución y monitoreo, y se presentará un ejemplo
sencillo en el cuál se le permitirá ver al lector de manera práctica como se puede utilizar varios
motores de procesos situados en diferentes servidores para realizar la ejecución.
Por último, se mostrarán las posibilidades que ofrece Bonita para la recolección de los datos de
las instancias que están, o han sido ejecutadas en el motor de procesos, y se presentarán algunas
herramientas que posibilitan esta recolección de información a través del lenguaje PHP con el que se
desarrollará la aplicación de monitoreo.
5.1. Introducción
La solución que se propone para la ejecución y monitoreo de los procesos de negocio
distribuidos puede separarse en tres grandes fases: el diseño del proceso de negocio distribuido, la
ejecución de cada uno de los subprocesos en los servidores en los que se encuentran, y la recolección
de la información perteneciente a los subprocesos o a las instancias, que servirán para realizar el
monitoreo.
El concepto de “subproceso” en la notación BPMN 2.0 tiene un significado diferente al que se
utilizará en esta parte del informe. Mientras que en la bibliografía actual se utiliza el término para
referirse a una actividad compuesta que es incluida dentro de un proceso y que contiene un conjunto
de actividades, compuertas, eventos y flujos de secuencia [31], en este capítulo se utilizará dicho
término para referirse a las partes del proceso de negocio original que ha sido dividido a raíz de la
descomposición del proceso.
El diseño del proceso de negocio distribuido, al igual que en el diseño de los procesos de
negocio que se conocen comúnmente, es la fase previa para la ejecución de los procesos de negocio.
Sin embargo para realizar la ejecución de procesos de negocio de forma distribuida es necesario
descomponerlos para crear los subprocesos que serán situados en los distintos motores de procesos
que se encuentran en los servidores distribuidos.
Como se ha visto en el Capítulo 3, los factores que hacen que se lleve a cabo la
descomposición de los procesos de negocio están dados principalmente por las características que
tienen los sistemas en los que serán ejecutadas las actividades que componen a los procesos, esto es,
la alta capacidad de procesamiento, el pago por uso y la facilidad en la escalabilidad de sistemas
51
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
basados en cloud, y por la privacidad de los datos en los sistemas embebidos. De esta manera, el
diseñador de procesos debe ser capaz de determinar aquellas actividades que serán adecuadas para
cada servidor y descomponer el proceso de acuerdo a estas actividades.
Como producto del proceso de negocio descompuesto se tendrán dos o más subprocesos que se
deberán ejecutar en distintos motores de procesos. La ejecución del proceso de negocio distribuido
comenzará con la generación de una instancia de uno de los subprocesos, y luego éste será el
encargado de iniciar la ejecución del subproceso siguiente, o de los diferentes subprocesos en caso de
que existiera más de uno. Para llevar a cabo la continuación de la secuencia en la ejecución de los
subprocesos, se hará uso de un conector de Bonita que utiliza la API REST del motor de procesos
remoto para iniciar una instancia del subproceso que se encuentra en dicho motor.
Una vez que se encuentran desplegados los subprocesos en cada uno de los servidores
intervinientes, se hará uso de una aplicación web que utilizará la API REST de Bonita para recolectar
toda la información referida a los subprocesos y visualizar al proceso de negocio distribuido como si
se tratase de un proceso único. Además, en dicha aplicación será posible observar información de
cada una de las actividades del proceso, lo que servirá para monitorear las instancias y obtener
valores de desempeño de cada una de las actividades.
Si bien se ha hecho hincapié en la combinación del uso de un sistema cloud y uno embebido,
en la siguiente solución se pretende generalizar este modelo para lograr una visión en la cual es
posible adaptar la ejecución de procesos descompuestos a cualquier esquema de servidores
distribuidos.
52
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
Así, al finalizar una instancia en un servidor, esta inicia automáticamente una nueva instancia de la
partición de proceso siguiente en el servidor que corresponda de acuerdo a la arquitectura de
distribución. Para esto, cada servidor del esquema distribuido debe ser capaz de comunicarse con el
servidor siguiente para poder iniciar instancias y continuar con la ejecución del proceso original. [10]
[13]
53
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
54
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
remoto, por lo tanto, se deberá borrar la fila insertada en el paso anterior, en donde se
verifica y se inserta en la base de datos.
3. Si los datos de acceso al servidor remoto son correctos y se ha instanciado
correctamente el proceso remoto, se llevará a cabo la actualización de la fila insertada
en la primera parte con el identificador del proceso remoto. De esta manera, se tendrán
todos los datos necesarios para utilizarlos posteriormente en la etapa de monitoreo. Al
finalizar, se debe volver al contexto Standard.
A continuación se presenta el código fuente del conector de Bonita Open Solution escrito en
Java, en el cual se puede ver el comportamiento descrito anteriormente.
package ar.com.aknotec.conectores;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.security.auth.login.LoginContext;
import org.ow2.bonita.connector.core.ConnectorError;
import org.ow2.bonita.connector.core.ProcessConnector;
import org.ow2.bonita.facade.RuntimeAPI;
import org.ow2.bonita.facade.def.majorElement.ProcessDefinition;
import org.ow2.bonita.facade.uuid.ProcessDefinitionUUID;
import org.ow2.bonita.facade.uuid.ProcessInstanceUUID;
import org.ow2.bonita.util.AccessorUtil;
import org.ow2.bonita.util.BonitaConstants;
import org.ow2.bonita.util.SimpleCallbackHandler;
import org.slf4j.Logger;
55
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
@Override
protected void executeConnector() throws Exception {
LoginContext loginContext = null;
final String LOGIN = this.usuario;
final String PSSWD = this.password;
Logger logger = org.slf4j.LoggerFactory.getLogger(this.getClass());
try {
logger.info("Comienza el conector \n");
try {
// Verificación del acceso e inserción en la Base de Datos Local
Class.forName("com.mysql.jdbc.Driver");
java.util.Date dt = new java.util.Date();
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String currentTime = sdf.format(dt);
this.conexion = DriverManager.getConnection("jdbc:mysql://" + this.servidor + "/" +
this.nombreBD, this.usuarioBD, this.passwordBD);
this.statement = this.conexion.createStatement();
this.instanciaLocal = this.getProcessInstanceUUID();//Nombre de la instancia local
if (this.conexionBD){
try {
//Chequea el logueo a la API REST del servidor remoto e instancia el proceso remoto
System.setProperty(BonitaConstants.API_TYPE_PROPERTY, "REST");
System.setProperty(BonitaConstants.REST_SERVER_ADDRESS_PROPERTY, this.url);
System.setProperty(BonitaConstants.REST_SERVER_EXCEPTION, "");
//Reseteo el contexto para usar la API REST
AccessorUtil.resetContext();
56
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
PSSWD));
loginContext.login();
this.procesoInstanciado = true;
logger.info("Logueo Correcto");
RuntimeAPI runtimeAPI = AccessorUtil.getRuntimeAPI();
ProcessDefinition process =
AccessorUtil.getQueryDefinitionAPI().getProcess(this.proceso,this.version);
ProcessDefinitionUUID processUUID = process.getUUID();
HashMap<String, Object> vars = new HashMap<String, Object>();
for (List<Object> o : this.variables) {
vars.put(o.get(0).toString(), o.get(1));
}
this.instanciaRemota = runtimeAPI.instantiateProcess(processUUID,vars);
logger.info("Se ejecutó el proceso. \nEl UUID de la instancia es: " +
instanciaRemota);
} catch (Exception e) {
logger.error(e.getMessage());
this.mensaje = "Problemas en el acceso al servidor remoto: " + e.getMessage();
}
finally {
//Vuelve al contexto anterior para que se sigan ejecutando los procesos normalmente
if (loginContext != null) loginContext.logout();
System.setProperty(BonitaConstants.API_TYPE_PROPERTY, "Standard");
System.setProperty(BonitaConstants.REST_SERVER_ADDRESS_PROPERTY, "");
AccessorUtil.resetContext();
}
if (this.procesoInstanciado){
try {
//Se actualiza la fila con el identificador del proceso remoto
String query = "UPDATE instancias " +
"SET instancia_remoto = '" + this.instanciaRemota + "'" +
"WHERE instancia_local = '" + this.instanciaLocal + "'";
int result = this.statement.executeUpdate(query);
if (result == 0){
this.conexionBD = false;
this.mensaje = "No se pudo actualizar los datos de la instancia en la base
de datos. La sentencia SQL es: " + query;
}
else {
this.ejecucionCompleta = true;
}
this.mensaje = "Se instanció el proceso remoto correctamente.";
} catch (Exception e) {
logger.error(e.getMessage());
this.mensaje = "Problemas para actualizar la fila: " + e.getMessage();
}
}
else {
try {
//Si hay problemas ejecutando el proceso remoto, se borra la fila de la BBDD
String query = "DELETE FROM instancias " +
"WHERE instancia_local = '" + this.instanciaLocal + "'";
int result = this.statement.executeUpdate(query);
if (result == 0){
this.mensaje = "No se pudo borrar la fila de la instancia en la base de datos.
La sentencia SQL es: " + query;
}
else {
this.conexionBD = false;
}
this.ejecucionCompleta = false;
} catch (Exception e) {
logger.error(e.getMessage());
this.mensaje = "Problemas para borrar la fila: " + e.getMessage();
}
}
}
}
catch (Exception e) {
logger.error(e.getMessage());
this.mensaje = "Problemas al inicio del conector: " + e.getMessage();
}
}
57
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
/**
* Validador de los datos de entrada. Función por defecto de un conector de Bonita.
*/
@Override
protected List<ConnectorError> validateValues() {
List<ConnectorError> errorsList = new ArrayList<ConnectorError>();
…
…
return errorsList;
}
/**
* Setter y Getters que deben estar en el conector para el intercambio de información entre Bonita
* y el conector
*/
public void setServidor(java.lang.String servidor) {…}
public void setProceso(java.lang.String proceso) {…}
public void setPasswordBD(java.lang.String passwordBD) {…}
public void setUsuario(java.lang.String usuario) {…}
public void setUsuarioBD(java.lang.String usuarioBD) {…}
public void setNombreBD(java.lang.String nombreBD) {…}
public void setPassword(java.lang.String password) {…}
public void setUrl(java.lang.String url) {…}
public void setVariables(java.util.List<java.util.List<Object>> variables) {…}
public void setVersion(java.lang.String version) {…}
public java.lang.Boolean getConexionBD() {…}
public java.lang.Boolean getProcesoInstanciado() {…}
public java.lang.Boolean getEjecucionCompleta() {…}
public java.lang.String getMensaje() {…}
}
58
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
La arquitectura del sistema de monitoreo puede verse en la Figura 5.3, en la cual podemos
observar el flujo de la información entre los distintos componentes del sistema, y si bien son visibles
solo 3 nodos, la arquitectura es extensible a la cantidad de nodos que sean necesarios. Sin embargo,
en caso de existir un encadenamiento de procesos entre los nodos 1, 2 y 3, el nodo 3 sería totalmente
invisible al nodo 1, siendo el 2 su intermediario.
Observando esta Figura, en los puntos 1 y 2 el conector hace uso del driver de MySQL para
almacenar la información de las instancias, y de la API REST (que en este caso se ejecuta utilizando
Java) de Bonita para crear la instancia del proceso en el servidor remoto; en el punto 3 la aplicación
utiliza servicios web localizados en otra aplicación remota para obtener la información
correspondiente a las actividades de las instancias. En 4, dicha aplicación remota hace uso de la API
REST (que aquí se ejecuta utilizando PHP debido a que la aplicación de monitoreo está desarrollada
en este lenguaje de programación) de Bonita para poder responder a la solicitud.
El motor de procesos de Bonita OS, situados en cada uno de los nodos de la arquitectura, es el
encargado de la ejecución normal de los procesos de negocio. En cada uno de los nodos es necesario
desplegar un servidor Tomcat en donde se ejecutará el motor de procesos.
En cada motor de procesos se ejecutarán las actividades que podrían tener el conector que
inicia las instancias de los procesos localizados en otros motores de Bonita.
59
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
El servidor de base de datos (en este caso se utilizará MySQL) es el encargado de almacenar la
información de las instancias que realizan la ejecución de los subprocesos en los demás nodos.
Para poder recolectar la información de las diferentes instancias, los datos básicos que se
necesitan para obtener la visualización y monitoreo de las instancias de los procesos de negocio son
tres: el identificador de la instancia local que realizó la ejecución del conector encargado de
instanciar un proceso en un motor de procesos remoto, la localización del servidor remoto en la que
se ha realizado la ejecución del subproceso, y el identificador de la instancia en el motor remoto que
se ha creado producto del conector ejecutado en el motor de procesos local.
Figura 5.4. Proceso de negocio “Enviar y Recibir Mensaje” en un solo motor de procesos
Si bien en procesos más complejos se debería estudiar la descomposición con mayor análisis,
en este proceso de ejemplo es evidente que se debe descomponer en dos subprocesos. El primer
subproceso será la parte que envía el mensaje, es decir, la senda superior (Senda1) con la tarea
60
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
“Ingresar y Enviar Mensaje”, y el segundo el que reciba el mensaje enviado por el primero, que
vendría a ser la Senda 2 con la tarea “Recibir Mensaje”.
Al descomponer el proceso, las tareas continúan realizando el comportamiento que realizaban
en el proceso original, e inclusive utilizan las mismas variables que compartían. Sin embargo, al estar
en dos motores de procesos separados, es necesario que la tarea “Recibir Mensaje” sepa de alguna
manera que la tarea “Ingresar y Enviar Mensaje” se ha ejecutado. En este momento es cuando el
diseñador de los subprocesos debe hacer uso del conector descrito en la Sección 5.3, y en lugar de
seguir el flujo de trabajo hacia la tarea “Recibir Mensaje” (que se encuentra en otro subproceso),
dirige el flujo hacia una “tarea de servicio” que contiene el conector encargado de instanciar al
subproceso “Recibir Mensaje” en otro motor de procesos localizado en otro servidor.
El diseñador del proceso debe configurar el conector para que se conecte al motor de procesos
remoto, indicando la URL en la que se encuentra, el nombre del subproceso (que en el motor de
procesos remoto sería un proceso más), la versión, el usuario y contraseña para acceder a su API
REST.
Como segundo paso debe declarar los datos que le serán pasados al subproceso, en este caso el
mensaje que quiere enviarle, ya que en el proceso original utiliza este dato para mostrarle al receptor
el mensaje que le enviaron.
Luego, debido a que Bonita no mantiene la relación de las instancias entre motores de
procesos, se debe indicar la configuración de la base de datos local para guardar la información de
las instancias que intervienen en la ejecución distribuida para que luego, al utilizar la aplicación web
de monitoreo, se pueda realizar el seguimiento de las instancias.
Por último, se deben crear las variables donde se guardaran los resultados de la ejecución del
conector, y asignar cada dato de salida del conector a estas variables. El uso de estas variables le
permite al diseñador manejar el flujo de control del proceso en caso de que ocurra un error en la
ejecución del conector.
En la Figura 5.5 se puede ver como quedaría el subproceso “Enviar Mensaje”, el cual contiene
la tarea “Ingresar y Enviar Mensaje” del proceso original, la tarea de servicio “Enviar Mensaje a
través del conector” que contiene el conector, y también otra tarea que muestra el resultado de la
ejecución del conector llamada “Resultado Ejecución Remota” que sirve para informar el resultado
de la ejecución del conector. En el caso de éxito en la ejecución del conector, el proceso terminaría
ya que el mensaje ha sido enviado correctamente, por otro lado, si ha fallado la ejecución (por
ejemplo porque no tiene acceso a la base de datos, o porque no ha podido acceder al motor de
procesos remoto) se muestra un mensaje de error y no permite la finalización de la instancia hasta
que se haya corregido el error que no permite la ejecución. Esto sirve para evitar que queden
instancias locales sin una relación con una instancia en un motor de procesos remoto.
61
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
Siguiendo con la descomposición del proceso, solo falta crear un subproceso que contenga la
tarea “Recibir Mensaje”, el cual se localizará en un motor de procesos diferente al del subproceso
“Enviar Mensaje”. El subproceso se puede ver en la Figura 5.6.
Este subproceso necesita tener la tarea del proceso original y una variable (o la misma cantidad
de variables) con el mismo nombre y tipo de la que fue configurada en el segundo paso dentro del
conector, para que una vez instanciado, este valor se cargue automáticamente dentro de la variable
del subproceso.
La ejecución de este proceso distribuido, desde que se instancia el subproceso “Enviar
Mensaje” hasta que se recibe el mensaje en el subproceso “Recibir Mensaje” se puede ver en las
siguientes imágenes.
62
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
Figura 5.7.1. Tarea “Ingresar y Enviar Mensaje” del subproceso “Enviar Mensaje”
Figura 5.7.2. Tarea “Resultado Ejecución Remota” del subproceso “Enviar Mensaje”.
Problema con la Base de Datos
63
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
Figura 5.7.3. Tarea “Resultado Ejecución Remota” del subproceso “Enviar Mensaje”.
Se arregló el problema con la Base de Datos .
Nótese que las tres primeras imágenes la dirección IP del motor de procesos de Bonita es
192.168.1.40, que corresponden al Servidor 1, mientras que en la última es 192.168.1.41, donde se
ejecuta el Servidor 2, y que en la Figura 5.7.2 hubo un problema con la base de datos ya que el
servicio no se encontraba en ejecución, por lo que no se podía guardar la información de las
64
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
instancias. Una vez que se ejecutó el servicio de MySQL en el Servidor 1, el conector permitió que
se instanciara el subproceso “Recibir Mensaje” en el Servidor 2.
<set>
<LightProcessDefinition>
<description></description>
<name>Enviar_Mensaje</name>
<label>Enviar Mensaje</label>
<uuid>
<value>Enviar_Mensaje--1.0</value>
</uuid>
<version>1.0</version>
<state>ENABLED</state>
<type>PROCESS</type>
<deployedDate>1415164657578</deployedDate>
<undeployedDate>0</undeployedDate>
<deployedBy>admin</deployedBy>
<categories/>
<migrationDate>0</migrationDate>
</LightProcessDefinition>
</set>
65
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
66
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 5 - Solución propuesta
- Encriptación
- Sistemas de archivos
- HTTP
- Imágenes
- Logs
- Matemática
- Sistemas
- WebServices
- XML
En nuestro caso, para realizar las peticiones al motor de procesos de Bonita a través de la API
REST, se utilizará el componente HTTP_Request2. Este componente le provee a las aplicaciones
PHP una manera simple de realizar peticiones HTTP, que servirá para conectare, autenticarse y
realizar las peticiones necesarias a la API REST de Bonita de la siguiente manera utilizando PHP:
$query = 'http://192.168.1.41:8080/bonita-rest-api/API/queryRuntimeAPI/getProcessInstance/Enviar_Mensaje--1.0--1');
$request = new HTTP_Request2($query, HTTP_Request2::METHOD_POST);
$request->setAuth('usuario', 'contraseña', HTTP_Request2::AUTH_BASIC);
$request->setBody('options=user:monitor');
$response = $request->send();
$sxe = new SimpleXMLElement($response->getBody());
Con este ejemplo podemos ver la simplicidad con la que se pueden obtener los datos en
formato XML de la instancia “Enviar Mensaje” que se encuentra instalado dentro del motor de
procesos de Bonita mediante una aplicación desarrollada en PHP. En la última línea del código del
ejemplo, en la que se realiza un new de la clase SimpleXMLElement, se utiliza para asignar la
respuesta de la petición HTTP enviada en formato XML del motor de procesos, a un objeto
encargado de analizar sintácticamente esta respuesta y simplificar el acceso a las propiedades de la
instancia del proceso.
Con el uso de estas herramientas, es posible desarrollar una aplicación web para obtener la
información de las diferentes instancias de los subprocesos y unificar los datos de cada uno de estas
para realizar la etapa de monitoreo de los procesos distribuidos.
67
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
En este capítulo se presentará un ejemplo de proceso de negocio y se aplicarán los pasos del
ciclo de vida de los procesos, como el diseño y modelado. Luego procederá la descomposición, el
monitoreo y unificación de los subprocesos.
Al comienzo se hará una introducción al ejemplo, donde se introducirá al lector acerca de las
tecnologías utilizadas, y las posibilidades de utilizar estas tecnologías en conjunto con BPM.
Luego se llevará a cabo la descomposición del proceso original en varios subprocesos, y se
realizará una arquitectura de 3 servidores en donde se llevarán a cabo la ejecución de los
subprocesos. Se hablará de la configuración de la arquitectura y el acceso seguro a Bonita OS.
Se presentará una aplicación web de monitoreo, junto con las herramientas y tecnologías
utilizadas para el desarrollo de dicha aplicación, la comunicación entre los diferentes componentes
de la arquitectura, y se mostrará el proceso unificado a partir de los subprocesos desplegados en los
diferentes servidores.
68
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
69
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
70
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
En este ejemplo, suponemos que la empresa se encarga de realizar los productos para un
cliente, o bien, para la misma empresa que fabrica y vende los productos.
Esta empresa tiene una Gerencia General, en lo más alto de la pirámide organizacional,
encargada de plantear los problemas a solucionar, y tomar las decisiones de fondo de la empresa
como así también de inicio y finalización de cada uno de los proyectos.
Debajo de la Gerencia General, se encuentra la Oficina Técnica, que se encarga de analizar el
problema y determinar posibles soluciones de acuerdo a factores como costos, competencia, entre
otros. Además es el nexo entre la Gerencia General y los equipos de Ingenieros, Mercadotecnia, y
Diseñadores, y verifica que se realicen las tareas que conducirán al resultado esperado del producto.
El Equipo de Mercadotecnia se encarga de analizar si el producto es capaz de comercializarse
en el mercado, o si es necesario realizar cambios en las especificaciones que ha definido la Of.
Técnica para obtener una mejor respuesta comercial.
Una vez que Mercadotecnia ha acordado la posibilidad de inserción del producto al mercado, el
Equipo de Diseño realiza los bocetos del producto como una aproximación a la idea de modelo que
tendrá dicho producto.
Debido a que los diseñadores pueden llegar a realizar bocetos que vayan más allá de la
posibilidad de fabricación, el Equipo de Ingenieros se encarga de aprobar, enviar modificaciones o
rechazar tales bocetos. En caso de que sean aprobados, los diseñadores deben realizar el modelo en
3D del producto, utilizando programas especializados basados en herramientas CAD (Computer-
aided design – o en español Diseño Asistido por Computadora), para obtener una perspectiva real de
producto final.
Una vez obtenido el modelo 3D del producto, es enviado la Oficina Técnica para que se le
realicen las pruebas necesarias y se apruebe de acuerdo a las especificaciones requeridas por la
Gerencia General, que es la encargada de rechazar o aprobar el proyecto, y enviarlo a producción o
al cliente que lo solicitó.
Obsérvese que este ejemplo no pretende explicar el proceso real de un diseño en 3D de un
producto industrial, sino una aproximación a éste. Para lograr un proceso de negocio completo, con
todos los detalles que se merece, sería necesario consultar a especialistas dedicados al tema del
ejemplo, pero esto extendería el tema principal de la presente tesina, perdiendo el foco de lo
importante de la misma, es decir, la descomposición y el monitoreo de procesos de negocio
distribuidos. Por esto es que es fundamental que el lector no se centre en el ejemplo en sí, sino en las
potenciales posibilidades que se pueden aprovechar del mismo.
En computación, las tres dimensiones son el largo, el ancho y la profundidad de una imagen.
Técnicamente hablando el único mundo en 3D es el real, la computadora sólo simula gráficos en 3D,
pues, en definitiva toda imagen de computadora sólo tiene dos dimensiones, alto y ancho
(resolución). En la computación se utilizan los gráficos en 3D para crear animaciones, gráficos,
películas, juegos, realidad virtual, diseño, etc.
71
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Modelado 3D
El modelado es una técnica que se utiliza para ir dando forma a objetos. Por lo general, el
modelo visual suele ser el modelo 3D que los diseñadores manejan, dejando las fórmulas a procesos
computacionales. Esto quiere decir el modelado 3D visual se acerca más a la imagen 3D final que se
mostrará al renderizarse.
En la actualidad es utilizada para la producción de películas para cine y televisión, publicidad,
juegos y efectos especiales. También se utiliza en los sectores profesionales de la medicina, la
ingeniería o la arquitectura es utilizado para el diseño de piezas industriales, maquetas en la
construcción de edificios, entre otras muchas más opciones, este programa además de estas opciones
permite realizar renderizados espectaculares. Es decir que permite ambientar modelos en 3D para
hacerlo realistas y crear animaciones.
Renderización
El proceso de transformación de un modelo en 3D hacia una imagen 3D es llamado
renderización (rendering).
Renderizado es un término usado en informática para referirse al proceso de generar una
imagen desde un modelo. Este término técnico es utilizado por los animadores o productores
audiovisuales y en programas de diseño en 3D. La imagen resultado de la renderización es una
imagen digital (raster).
En el caso de los gráficos en 3D, el renderizado puede hacerse lentamente (prerenderizado) o
en tiempo real. Son millones los cálculos matemáticos que deben realizarse para procesar un modelo
en 3D y resultar en una imagen renderizada.
En general, en el proceso de cálculo se pueden tener en cuenta tonalidades, texturas, sombras,
reflejos, transparencias, translucidez, iluminación (directa, indirecta y global), profundidad de
campo, desenfoques por movimiento, ambiente, etc.
Además a todo eso hay que agregarle los distintos objetos poligonales en 3D de la escena.
Todos estos cálculos producen una simple imagen final. Por esta razón el proceso de creación de
películas en 3D, necesita mucho tiempo y gran capacidad de procesamiento computacional. Un
sólo segundo de película suele estar constituido por 24 cuadros de imagen, por lo que si pensamos
que tenemos un capítulo de una serie animada de solo 25 minutos, tendríamos que renderizar 36.000
imágenes. El software encargado de esta renderización es llamado motor de renderizado.
El render es importante porque es el resultado final en forma de imagen que entrega el
computador, específicamente, a través del motor de render dentro de un programa 3D. [35]
Programas de diseño 3D
Los últimos años han visto la aparición del concepto BIM (Building Integrated Model), un
modelo de intercambio e interoperatividad entre los programas de diseño asistido por computadora
de tipo general (AutoCAD, ArchiCAD, Sketchup) y programas específicos de las especialidades.
72
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
El propósito del ejemplo, es utilizar Cloud Compunting para realizar el renderizado del modelo
3D en la nube. Hoy en día existe un servicio que brinda la empresa Autodesk llamado “Autodesk 360
Renderin”, en el cuál, al utilizar algunos de sus productos tales como AutoCAD, 3ds Max o Revit, le
permite al usuario subir a la nube sus modelos y renderizarlos en ella.
Este servicio, además de ofrecer un renderizado rápido y eficiente, incluso de mejor manera
que en una computadora personal, también brinda el servicio de almacenamiento de los modelos y de
los renderizados, utilizando una metodología de hash que minimiza la duplicación de los datos en el
cloud.
73
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Al almacenar los modelos 3D, se puede llevar a cabo diferentes tipos de renderizado
directamente en la nube. El usuario puede ir modificando las diferentes configuraciones del
renderizado para obtener la mejor imagen posible a su gusto.
Por otra parte, a través del modelo 3D, y como parte de una de las características principales
que le da el nombre al servicio (360º), es posible realizar una visión denominada “panorama”, que
permite al usuario visualizar el modelo renderizado en 360º a través del portal de Autodesk, dando
una perspectiva de realidad virtual al modelo 3D.
Al comparar el renderizado en términos de performance y calidad de imagen entre un
programa como Revit y el servicio de renderizado en el cloud, se observa que la imagen final
renderizada en el cloud tiene una mejor definición, respetando las texturas y la iluminación que han
sido definidas, y además puede tardar de un 75% a un 90% menos en el tiempo de renderizado que
en un programa situado en una computadora personal. Esto quiere decir que, por ejemplo, si en una
computadora personal, el renderizado de un modelo 3D tarda 9 horas en finalizar, utilizando el
servicio de renderizado en la nube, tardaría 1 hora. [44] [45]
La comparación puede verse en la Figura 6.3.
Claramente se puede ver que la utilización del servicio de renderizado en la nube tiene varias
ventajas, aunque cabe destacar, que como todo servicio de la nube, sigue el concepto de pago por
uso. Si bien en el ejemplo presentado en la tesina se va a hacer uso de este servicio de una manera
simulada, se debe analizar si es la mejor elección de acuerdo a la infraestructura de hardware que se
dispone en la empresa, y a la carga de trabajo que existe en la misma.
74
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
75
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
76
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Luego nos encontramos con los subprocesos F y G, en las figuras 6.5.2 y 6.5.3
respectivamente. Estos dos subprocesos tienen actividades que conducen a la finalización del
proceso original, por lo tanto no es necesario utilizar el conector para instanciar otro subproceso.
77
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Antes de comentar cómo se van a conformar los subprocesos del servidor 2, vamos a ver cuál
es el subproceso que estará situado en el servidor de la nube, ya que al tener un subproceso de otro
servidor en el medio de sus actividades (a continuación se mostrará este subproceso), será necesario
dividir las actividades para formar subprocesos intercomunicados en el mismo servidor.
Como dijimos anteriormente, vamos a utilizar el servidor de la nube para realizar el
renderizado de los modelos 3D, por lo tanto, el subproceso en este servidor tendrá que comenzar con
la actividad de “Renderizar modelo 3D”, tal como se encuentra en la Figura 6.4 sombreado con el
color azul.
En la Figura 6.6 podemos ver como quedaría el subproceso.
Figura 6.6. Subproceso C. Renderizado del modelo 3D situado en el servidor del Cloud
La disposición de los subprocesos del servidor 2 no es tan simple como las de los servidores 1
y el servidor en la nube. Al encontrarse el subproceso del servidor de la nube en el medio del flujo de
control es necesario subdividir al servidor 2 en por lo menos 2 subprocesos (aunque más adelante
veremos que en realidad son 3 subprocesos).
78
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Para construir los subprocesos del servidor 2, se puede tomar el subproceso en el servidor de
la nube (Subproceso C) y utilizarlo como división de las actividades del servidor 2 que hay antes de
este subproceso y las que hay después. De esta manera se puede descomponer las actividades del
servidor 2 en dos subprocesos (uno antes del subproceso C y otro después). Sin embargo, esto sería
incorrecto ya que hay una actividad entre las actividades que están situadas en el servidor 2 que es
utilizada antes y después del subproceso situado en el servidor de la nube, esta actividad es “Analizar
si existe otra solución”.
Debido a esto, es necesario crear un subproceso adicional, que comience a partir de la actividad
“Analizar si existe otra solución”, que puede ser instanciado por los dos subprocesos que se
encuentran antes y después del subproceso situado en el servidor de la nube.
Los subprocesos que derivan de las actividades del servidor 2 pueden verse en las Figuras
6.7.1, 6.7.2 y 6.7.3 (subproceso B, D y E respectivamente), en donde el último es utilizado por los
subprocesos B y D.
79
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
80
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Además, cada nodo cuenta con un servidor Apache 2.4.7 y con MySQL 5.5.40 como motor de
base de datos, que servirá para ejecutar la aplicación web de monitoreo y almacenar la información
correspondiente a la ejecución distribuida de los subprocesos.
La configuración de red y del acceso a cada servicio de cada uno de los servidores es la
siguiente:
- Servidor 1
IP: 192.168.1.40
Bonita Open Solution: http://192.168.1.40:8080/bonita
Usuarios Bonita: gerencia, servidor1, servidor2
Bonita Server Rest: http://192.168.1.40:8080/bonita-server-rest/
Monitor de Procesos: http://192.168.1.40
- Servidor 2
IP: 192.168.1.41
Bonita Open Solution: http://192.168.1.41:8080/bonita
Usuarios Bonita: ofitecnica, mercado, ingeniería, disenio, server1, server2, serverCloud
Bonita Server Rest: http://192.168.1.41:8080/bonita-server-rest/
Monitor de Procesos: http://192.168.1.41
- Servidor Cloud
IP: 192.168.1.42
Bonita Open Solution: http://192.168.1.42:8080/bonita
Usuarios Bonita: servidor1, servidor2, serverCloud, disenio
Bonita Server Rest: http://192.168.1.42:8080/bonita-server-rest/
Monitor de Procesos: http://192.168.1.42
81
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
A continuación se puede ver la configuración que se utiliza los archivos de seguridad de Bonita
para otorgarle mayor seguridad a la aplicación:
BonitaAuth {
org.ow2.bonita.identity.auth.BonitaIdentityLoginModule required;
};
BonitaStore {
/** Se utiliza para autenticarse contra un servidor de Bonita. En el ejemplo puede ser server 1,
server2 o cloudServer */
/** Sería quien es este servidor para el resto de los servidores */
org.ow2.bonita.identity.auth.LocalStorageLoginModule required;
org.ow2.bonita.identity.auth.BonitaRESTLoginModule required restUser="server1" restPassword="bpm";
};
82
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Una vez que se completan estos datos y se envía el formulario, el flujo de control continúa a la
actividad encargada de instanciar el subproceso B, que en este caso es el siguiente subproceso. Pero
para que pueda realizarse esto, el conector debe estar previamente configurado (en tiempo de diseño
de los subprocesos) para que pueda conectarse con el servidor 2, ejecutar el subproceso B, enviar las
variables de entrada al subproceso B y guardar el identificador de la instancia que se ejecuta en el
servidor 2 en la base de datos local para el futuro monitoreo del proceso.
Con la configuración de los servidores indicada en la Sección 6.3 y sabiendo que el
identificador único del subproceso B es “Diseno_3D_de_Producto_Industrial__B_”, podemos
configurar el conector tal como se ve en la Figura 6.9, y pasar las variables que sean necesarias de
entrada al subproceso B.
83
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Una vez que se ejecuta la actividad que contiene al conector, es decir, “[CED] Instanciar
subproceso siguiente (B)”, se muestra el resultado de la ejecución del proceso remoto en la siguiente
actividad (Figura 6.10), en donde se mostrará si se ha realizado correctamente la ejecución o se ha
producido algún error (tal como se vio en la Sección 5.5).
Si bien sería recomendable que la gerencia, de la misma forma que ocurre con los demás
actores cuando realizan la instanciación remota, no se involucre en el resultado de la ejecución del
conector, estos resultados se muestran para facilitar las pruebas que se han realizado.
84
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Lo ideal sería que el resultado de la instanciación remota sea transparente a estos actores, y en
caso de la ocurrencia de algún error en la ejecución remota del subproceso, exista alguna forma de
avisar al administrador del sistema (algo así como enviar un correo electrónico a través de un
conector), para que el mismo solucione el problema y que logre continuar con la ejecución del
proceso distribuido.
De la misma forma anteriormente mencionada se llevan a cabo todas las ejecuciones remotas
entre los demás subprocesos.
85
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Estas tres tecnologías en conjunto hacen que sea posible realizar una aplicación web que sea
accedida por un navegador web desde cualquier parte del mundo a través de Internet.
6.5.2. MySQL
jQuery no es un lenguaje, sino una serie de funciones y métodos de Javascript. Por tanto,
Javascript es el lenguaje y jQuery es una librería que podemos usar opcionalmente si queremos
facilitar nuestra vida cuando programamos en Javascript. A veces nos podemos referir a jQuery
como framework o incluso como un API de funciones, útiles en la mayoría de proyectos web.
Es uno de los complementos más usados en el desarrollo web, que se encuentra en millones de
sitios en toda la web, debido a que facilita mucho el desarrollo de aplicaciones enriquecidas del lado
del cliente (en Javascript), compatibles con todos los navegadores.
Además, es un producto serio, estable, bien documentado y con un gran equipo de
desarrolladores a cargo de la mejora y actualización del framework. Otra cosa muy interesante es la
dilatada comunidad de creadores de plugins o componentes, lo que hace fácil encontrar soluciones ya
creadas en jQuery para implementar asuntos como interfaces de usuario, galerías, votaciones, efectos
diversos, etc. [50]
86
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Por otro lado, jTable es un componente de jQuery, tal como se ha descrito recientemente. Este
componente está desarrollado para crear tablas CRUD (Create, Read, Update and Delete – o en
español Crear, Obtener, Actualizar y Borrar) basadas en la comunicación mediante AJAX
(Asynchronous JavaScript And XML – o en español JavaScript asíncrono y XML).
Al utilizar este plugin podemos manejar tablas en nuestra interfaz web sin tener que escribir
HTML o Javascript, tan solo es necesario incluir una etiqueta div, luego el complemento se encarga
de crear las tablas automáticamente y cargar los datos provenientes del servidor mediante AJAX.
Solo es necesario escribir la lógica de las acciones CRUD anteriormente mencionadas. [51]
Una captura de pantalla de la aplicación de monitoreo puede verse en la Figura 6.11, en donde
se observan las propiedades de una instancia del Subproceso B tales como, el identificador
(ProcessUUID), el estado (state), quien inició (startedBy) y quién terminó (endedBy) la instancia, y
las fechas de estos sucesos.
Además de monitorear los subprocesos es posible monitorear las actividades tal como se
muestra en la Figura 6.12. En esta figura se pueden ver las actividades que componen al subproceso
B, si ya han sido completadas (FINISHED) o están completándose (READY), el tipo de tarea y lo que
tardaron en completarse cada una de éstas.
87
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
88
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
89
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
tan sólo estos datos. Para poder comprenderlo de mejor forma, la Figura 6.13 muestra el
comportamiento anteriormente mencionado.
Un ejemplo de esto ocurre con la visualización unificada de los subprocesos para mostrar el
proceso original, ya que solo son necesarias las actividades que forman al proceso de negocio, y
debido a la respuesta de la definición de procesos que entrega Bonita, sólo las actividades contienen
la información necesaria.
6.5.6. GraphViz
Graphviz es una aplicación de visualización de gráficos de código abierto que incluye un gran
número de programas de trazado de grafico, existiendo versiones tanto para Windows como para
Linux.
Los programas de diseño de Graphviz parten de descripciones de gráficos en texto plano, lo
que les permite ser editados y no necesitar un programa adicional para ello. Los diagramas son
realizados en varios formatos: imágenes (jpg o png), SVG (Scalable Vector Graphics, gráficos
vectoriales en dos dimensiones) para páginas web, Postscript para ser incluido en PDFs u otros
documentos.
Graphviz cuenta con muchas características para personalizar los diagramas tales como
opciones para etiquetas, colores, fuentes, diseños en forma de tabla, estilos de línea, enlaces y
formas. En la práctica, los gráficos suelen ser generados partiendo de fuentes externas de datos, pero
también puede hacerse manualmente, bien editando un fichero de texto plano en lenguaje DOT o
bien mediante un editor gráfico.
90
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Dentro del paquete Graphviz se encuentran distintos programas para generar gráficos en
función de unos parámetros determinados. Algunos de los programas más utilizados son:
- dot: realiza dibujos “jerárquicos” o por capas de gráficos directos. El algoritmo de
representación trata de colocar todos los enlaces en la misma dirección (de arriba abajo o
de izquierda a derecha) y después trata de evitar los cruces entre enlaces, y por último,
reducir sus longitudes. Es la herramienta que se utiliza en gráficos con dirección.
- neato: crea “trazados elásticos”. Se utiliza en grafos que tienen demasiados nodos (más de
100) ya que trata de minimizar los enlaces.
- fdp: crea “trazados elásticos”. Implementa el heurístico Fruchterman-Reingold que
incluye un solucionador por cuadrículas para manejar los gráficos más grandes y los
grupos dentro de los gráficos indirectos. Se usa, al igual que neato, con grafos sin
dirección.
- twopi: diagrama radial. Se sitúan los nodos en círculos concéntricos dependiendo de su
distancia a un nodo raíz dado. [53]
Dentro de la aplicación de monitoreo, se utiliza GraphViz para generar la unión de todos los
subprocesos de negocio, y mostrar el proceso unificado como si se tratase del proceso original
mostrado en la Figura 6.1.
La manera de unificar a los subprocesos es como se ha mencionado en la sección anterior, es
decir, a través de las propiedades que se pueden obtener de las respuestas XML que brinda la API
REST. Con esta respuesta en XML, las actividades o compuertas no tienen una propiedad que las
diferencie explícitamente, por lo que no disponemos de la misma cantidad de indicaciones que si lo
viéramos en Bonita Studio.
Por ejemplo, para diferenciar una compuerta “Inclusive” de las tareas automáticas, es necesario
tener en cuenta si contienen algún código o script dentro de la tarea, como así también ocurre con las
tareas Inicio y Fin, donde la diferencia entre estos nodos se obtiene de acuerdo a la cantidad de
aristas que llegan o salen del nodo.
Por esto es que fue necesario interpretar el XML, llegando a imponer ciertas pautas para
graficar los procesos. Por el momento se llegaron a las siguientes conclusiones a tener en cuenta para
realizar el diagrama:
- Token Inicio: no tiene ninguna arista que entre.
- Token Fin: no tiene ninguna arista que salga.
- Compuertas: traen la propiedad <type>Automatic</type> y no tienen ningún
comportamiento dentro de la misma. JoinType, SplitType para diferenciarlas.
- Tareas Humanas: traen la propiedad <type>Human</type>
- Tareas Automáticas: traen la propiedad <type>Automatic</type> y tienen que tener algún
comportamiento, si no lo tienen se tomaran como compuertas.
- Tareas de Script: igual que las automáticas. Se tratarán como automáticas.
- Tareas que llaman a subprocesos: traen la propiedad <type>Subflow</type>
91
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Siguiendo estas reglas, se puede armar el archivo dot que contiene la configuración para armar
el grafo dirigido obteniendo las características de cada una de las actividades. Por ejemplo, el grafo
unificado de los subprocesos contiene casi 500 líneas de datos. Un parte del archivo puede verse a
continuación:
digraph G {
graph [label="Proceso: Diseno_3D_de_Producto_Industrial__A_--1.0 --- 25/02/2015 3:28:46",
rankdir="LR", bgcolor=white, ranksep=0.2];
node [label="\N",style=filled, width="1.0" height="0.8", shape=box];
edge [fontsize=9 fontname=helvetica];
subgraph cluster_subgrafo_1 {
rank=same;
width=11;
nojustify=true;
graph [color=blue, fontcolor=blue, fontsize=30, label="<<< gerencia >>>", rankdir="LR"];
…
Documentar_imposibilidad_de_realizacion_del_producto->Fin1;
Cancelar_el_proyecto_y_documentar_los_resultados->Fin;
}
subgraph cluster_subgrafo_2 {
graph [color=blue, fontcolor=blue, fontsize=30, label="<<< mercado >>>", rankdir="LR"];
…
}
subgraph cluster_subgrafo_3 {
graph [color=blue, fontcolor=blue, fontsize=30, label="<<< ofitecnica >>>", rankdir="LR"];
…
}
subgraph cluster_subgrafo_4 {
graph [color=blue, fontcolor=blue, fontsize=30, label="<<< disenio >>>", rankdir="LR"];
…
}
subgraph cluster_subgrafo_5 {
graph [color=blue, fontcolor=blue, fontsize=30, label="<<< ingenieria >>>", rankdir="LR"];
…
}
…
Informar_errores_en_el_boceto->Realizar_bocetos_del_producto;
Aceptar_posibilidad_de_fabricacion->Realizar_modelado_3D;
Informar_imposibilidad_de_fabricacion->Analizar_si_existe_otra_solucionn;
}
92
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 6 - Validación con un ejemplo
Una vez que se genera el archivo “.dot”, es necesario ejecutar desde PHP, la función shell con
el programa dot y sus respectivos parámetros:
$codigo = "dot -Tpng graphviz/".$processUUID.".dot -o graphviz/".$processUUID.".png";
$res = shell_exec($codigo);
De esta forma es posible llegar a realizar una aproximación al diseño del proceso de negocios
original como se encuentra en la Figura 6.14.
Como puede verse en la figura, las actividades se encuentran en posiciones que no son
convenientes para realizar un diseño de proceso de negocio. Esto sucede por la forma en que trabaja
dot.
dot dibuja los grafos en 4 fases principales, y una característica fundamental es que el grafo es
acíclico. Las fases que realiza dot son las siguientes:
- El primer paso es eliminar cualquier ciclo que se encuentre en el grafo, para evitar el
deadlock a medida que se procesa el diseño.
- El siguiente paso es asignar rankings o niveles a cada uno de los nodos, que es donde se
situaran cada uno de los nodos a través de la coordenada Y del gráfico.
- Luego ordena los nodos del mismo nivel para evitar que se crucen.
- Y por último, se posicionan los nodos a través de la coordenada X del gráfico para
mantener las aristas lo más cortas posibles.
Este tipo de comportamiento es común en la mayoría de los programas que dibujan grafos
jerárquicos, sin embargo, un proceso de negocio, sin bien puede ser visto como un grafo, no lo es,
por lo tanto es necesario disponer de otra herramienta, que tenga la lógica de proceso de negocio,
para realizar este gráfico. Lamentablemente no he encontrado una herramienta de este tipo que sea
open souce o libre, pero no dudo en que se pueda utilizar dot para realizar una herramienta para el
diseño de procesos de negocios.
93
94
Ejecución y monitoreo de procesos de negocios distribuidos
Capítulo 6 - Validación con un ejemplo
Figura 6.14. Visualización con GraphViz del proceso de negocios original a partir de la unión de los subproceso
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 7 - Conclusiones y trabajos futuros
7.1. Conclusiones
Hoy en día aquellas organizaciones que utilizan sistemas basados en BPMS como tecnología
para generar los productos y servicios que ofrecen, tienen sistemas embebidos con arquitecturas
centralizadas donde deben estar sostenidas por una infraestructura muy costosa que a medida que
pasa el tiempo se va dañando, teniendo que reparar los componentes, o va quedando obsoleta, en
cuyo caso se debe reemplazar por una nueva seguramente más costosa que la anterior.
A partir de la descomposición de procesos, o la ejecución de procesos de negocios distribuidos,
y más aún con el uso de Cloud Computing podemos encontrarnos con varias ventajas respecto a esta
situación:
- Se aumenta la disponibilidad de las aplicaciones que interactúan a través del proceso
- Mayor capacidad en la integración de elementos dispersos en una arquitectura a través
de servidores BPM
- Mayor posibilidad en la explotación de recursos de gran riqueza en hardware y poder
de cómputo a través de los sistemas cloud actuales.
- Ubicuidad de los servidores, permitiendo la ejecución de los procesos en áreas más
cercanas al lugar de los responsables de las tareas.
- Infraestructuras cloud adaptables a la necesidad del negocio, y pago sólo por el uso que
se le da a las mismas, evitando grandes costos en infraestructuras propias.
95
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 7 - Conclusiones y trabajos futuros
La utilización de GrapViz como aplicación para realizar el diseño del proceso de negocio
unificado, no es una aplicación para realizar diseños de procesos de negocio, sino de grafos. Debido
a que la posición en la que se encuentran los nodos de un grafo no es de vital importancia, como si lo
son las tareas dentro de un proceso de negocio para su mejor comprensión, este inconveniente
ocasiona que cada vez que se envíe el archivo .dot a procesar se generen diferentes posiciones para
todos sus nodos, confundiendo en muchas ocasiones la lectura del proceso de negocio unificado.
En este trabajo se presentó una propuesta de solución para ejecución de procesos distribuidos
que incluye las ventajas presentadas y que ha logrado aplicar dicha propuesta utilizando herramientas
concretas e identificando los inconvenientes que esto conlleva si desea aplicarse con otras
tecnologías.
96
Ejecución y monitoreo de procesos de negocios distribuidos Capítulo 7 - Conclusiones y trabajos futuros
97
Ejecución y monitoreo de procesos de negocios distribuidos Referencias
Referencias
98
Ejecución y monitoreo de procesos de negocios distribuidos Referencias
99
Ejecución y monitoreo de procesos de negocios distribuidos Referencias
100