miércoles, 13 de febrero de 2008

Workflow y Web Services a la lista.

Un aspecto importante en la utilizacion de BPM mediante intalio, es su capacidad para unir los conceptos de Web Services y Workflow en un procesos de negocio. En este ejemplo podemos ver como se introducen ambos conceptos para una empresa de telecomunicaciones que vende productos diversos a sus clientes. Este proceso tiene la resposabilidad de notificar a diversas unidades, la aprobacion o rechazo de la solicitud de un nuevo producto para un cliente, y la configuracion de sus servicios.

En este ejemplo, tenemos dos web services que son invocados por el proceso de negocio, y la participacion de 2 actores, uno para notificacion y el otro para aprobacion.

miércoles, 26 de diciembre de 2007

Orquestacion de Procesos vs Servicios

Es importante diferenciar, dos conceptos que aparecen continuamente en los sitios de tecnología y sobre los cuales existe un gran debate. La orquestación de servicios vs. La orquestación de procesos.

Por lo general, la orquestación de servicios pertenece al dominio de las arquitecturas orientadas en servicios (SOA), y la orquestación de procesos a la gestión de procesos de negocios (BPM).

La diferencia fundamental descansa sobre dos criterios: el estado y la duración. La orquestación de servicios es por lo general sin estado y de corta vida, mientras que la orquestación de procesos es con estado y de larga vida; implementada sobre un BPEL engine.

Los procesos con estado y de larga vida, pueden incluir el consumo de servicios, la gestión de flujos de trabajo conocidos como Workflow, procesos de aprobación como disparadores de un proceso, escalamiento, notificaciones, etc. Por el contrario la orquestacion de servicios no tiene estado, y son funciones atomicas.

Los procesos de negocio, estan conformados por servicios, subprocesos, workflows, etc. y son ellos quienes desarrollan la persistencia necesaria para controlar la orquestacion de alto nivel, que necesitan las organizaciones.

viernes, 2 de noviembre de 2007

Intalio BPMS 5: Utilizacion de doXslTransform

Intalio Designer cuenta con una funcionalidad llamada doXslTransform() que permite utilizar XSLT(XML Document Transformation Language) para transformar datos en los procesos. Esta funcion requiere solo dos parámetros como mínimo. El primer parámetro es la ruta o path de la ubicación del archivo XSLstylesheet, y el segundo parámetros en el documento xml que va a ser transformado.

En algunos procesos de largo aliento, se puede requerir la transformación de determinadas equivalencias, por ejemplo código de clientes en diversos sistemas legado, que por lo general son manejados por los denominados motores semánticos.

Algunas recomendaciones para la realización de transformaciones:
  1. No es recomendable realizar transformaciones XSLT desde Intalio BPM, de mucha envergadura, por lo general esta debe ser funcion de un bus de servicios, que utilice componentes especializados para la transformación de determinas equivalencias.
  2. Podemos utilizar esta función para transformaciones menores desde Intalio.
  3. Es importante, realizar pruebas de concepto con artefactos como XML Spy, para asegurar la conformidad con las instrucciones Xpath.
Saludos.

domingo, 16 de septiembre de 2007

Intalio BPMS 5: Que son las Correlaciones.


Un aspecto importante en Intalio BPMS, son las correlaciones. Para poder entender su significado es necesario ver un ejemplo simple.

Supongamos, que un proceso de negocio es iniciado por una aplicación cliente, y este llama a un sistema de compras para colocar un orden de compra, generando un numero de orden. Mas adelante, este numero de orden origina que se levante una factura y la envié al proceso BPEL. Como hace el motor BPEL para saber cual es el proceso que debe recibir la factura para procesarla? La solución son las correlaciones.

Las correlaciones se usan para identificar explícitamente una instancia de un proceso de negocio. Es un mecanismo a nivel de la aplicación que permite relacionar los mensajes y conversaciones con las instancias de los procesos de negocio a los cuales han sido enviados.

Cuando un proceso de negocio es iniciado, una instancia del mismo es creada, y esta tiene un tiempo de vida. Dentro del engine BPEL, pueden existir múltiples instancias de un procesos de negocio activas al mismo tiempo. Todos los mensajes que son enviados a el proceso tienen que ser entregados a la correcta instancia del proceso.

Como las múltiples instancias de procesos son activadas al mismo tiempo, los datos específicos de las aplicaciones son diferentes y los mensajes intercambiados son usados para mantener referencias a loas instancias especificas de negocios. La idea e asociar los datos específicos de las aplicaciones existente en los mensajes para mantener referencias a instancias de procesos es conocido como Correlación BPEL.

Una correlación es usada para asegurar que un mensaje va a una instancia apropiada basada en el contenido del mensaje. Típicamente, un elemento del mensaje coincide con un valor en la instancia del proceso, para asegurar que el mensaje es enrutado de forma correcta.

En conclusión, una correlación es un mecanismo para asociar un numero de mensajes con una instancia de proceso.

Saludos.

martes, 28 de agosto de 2007

Intalio BPMS 5: Mejores Practicas y lecciones aprendidas.

Para iniciar un proyecto BPM con Intalio BPMS 5, es necesario conocer, cuales son las practicas básicas que aseguren un buen inicio. Hace algunas semanas desarrolle un conjunto de pruebas de concepto con las siguientes tecnologías:
  1. Mule como bus de servicios empresarial.
  2. Axis como SOAP Engine para exponer los servicios. Esta implementación fue basada en Mule.
  3. y por su puesto Intalio BPMS version 5.
Las primeras pruebas que recomiendo para comenzar con intalio son:
  1. Como orquestar servicios web (Web Services).
  2. Como realizar un mapeo y composicion de servicios.
  3. Como manejar las excepciones de negocio.
Algunas practicas y lecciones aprendidas:
  1. Utilice las herramientas del WS-I para realizar pruebas de interoperabilidad a los servicios.
  2. Utilice SoapUI como herramienta para consumir, probar y realizar pruebas unitarias de web services (aserciones, expresiones xpath, etc.).
  3. Es una buena practica, separar los esquemas del archivo WSDL.
  4. Verifique los soap response de los servicios, evite los namespace vacios (evite xmlns="").
  5. Para capturar los mensajes faul de los web services, utilice sub.procesos.
  6. Maneje las excepciones de negocio con sub-procesos.
  7. Los problemas con las expresiones Xpath son comunes, por errores en los namespaces.
  8. Es mejor trabajar con un solo namespace, es decir un solo package en la implementación del servicios.
  9. La interface de un procesos debe ser "no ejecutable".
Saludos.

miércoles, 25 de julio de 2007

Mi primer proceso.

ok, mucha teoria!!
Vamos a tratar de crear un ejemplo sencillo, para el cual debemos manejar un conjunto de tecnologías para el desarrollo de servicios web (Web Services dummy).

Recomendaciones:
  • Antes de utilizar Intalio, es necesario crear un entorno de servicios (web services dummys). Las tecnologías mas conocidas para el desarrollo y despliegue de componentes como servicios son: Axis y Xfire.
  • Según mi experiencia, si comiezas con Xfire, podrás avanzar mucho mas rápido.
  • El producto final del despliegue es un archivo WSDL que representa el contrato para poder invocar el servicio vía http mediante el protocolo SOAP. En el se describen los mensajes y operaciones requeridas para su consumo.
  • Les recomiendo utilizar una herramienta Open Source llamada SoapUI para consumir los servicios y realizar pruebas unitarias del mismo.
  • Una vez desarrollado los servicios con la respectiva granularidad, es necesario diseñar el proceso de negocio con Intalio diseñador. El insumo principal para comenzar con el diseño, son los archivos wsdl generados anteriormente durante el despliegue de componentes como Web Services.
  • La lógica de negocio, condicionales, reglas, etc. son plasmadas en el diseñador, luego compilamos el proceso para generar los respectivos artefactos de software que serán desplegados en el servidor. Finalizada la compilacion, procedemos a realizar el deploy del Web Services que representa el proceso. Recuerden que en intalio todo proceso es desplegado como un servicio.
Caso de Prueba.

Vamos a crear dos servicios, un servicio de notificacion de eventos, y el otro un servicio para ingresar registros en una bandeja de solicitudes. En la próxima sesión habrá mas detalles.

Saludos.

miércoles, 9 de mayo de 2007

Primeros Pasos con Intalio BPM

Que es Intalio BPM
Primero que todo, intalio es un software Open Source basado en Java-J2EE, que implementa BPMS, y esta basado en un conjunto de frameworks y arquitecturas muy conocidas en la industria del software y con un madurez aceptable. Intalio utiliza la notación para diseñar procesos de negoci0 establecida por el BPMN http://www.bpmn.org/ que puede adaptarse a los requisitos de las arquitectura orientada servicio (SOA).

Básicamente, Intalio proporciona un esquema de adopción sencillo, con bajos costos de propiedad, un soporte bastante amplio de estándares de la industria, un base de comunidades y desarrolladores que contribuyen continuamente con mejoras, corrección y detección de bugs, además cuenta con grandes facilidades para agregar nuevas características (extensibilidad).

Componentes:
  1. Una herramienta para el diseño de los procesos de negocio, basada en Eclipse(ambientes grafico para el desarrollo java).
  2. Un engine que ejecuta los artefactos de software generados por el diseñador de procesos.
  3. Un Servidor de Aplicaciones donde residirán los servicios de procesos de negocio que despleguemos.

Modelo de Negocio

El modelo de negocio de Intalio, esta basado en una licencia dual. IntalioBPMS se distribuye en 3 ediciones: La edición abierta de IntalioBPMS, bajo una licencia pública de Mozilla (MPL) , una edición para la comunidad de IntalioBPMS, y la edición de IntalioBPMS Enteprise.
  1. La edición abierta incluye aproximadamente el 95% del código usado para la edición comunitaria y la de empresa. La edición abierta esta desplegada sobre el servidor de Apache Geronimo J2EE, y la base de datos de MySQL.
  2. La edición comunitaria se distribuye con el servidor de IBM WebSphere, junto con MySQL.
  3. La edición empresarial puede desplegarse en otros servidores y bases de datos, su mayor características es el manejo transaccional.
La implementación de BPM 2.0- BPMS se distribuye alrededor del ide(ambientes de desarrollo integrado) Open Source Eclipse, y esta basado en un conjunto de plugins. Esto nos permite contar con un diseñador sobre un ambiente extensible de utilitarios y componentes desarrollados por terceros. Por ejemplo intalio utiliza un rule engine llamado Corticon, Celequest PKI, y orbeon para XForms.

Intalio tiene una participación activa en los siguientes proyectos:

  1. Apache Geronimo.
  2. Base de datos de MySQL.
  3. Orbeon para XForms.
  4. Corticon para Reglas de Negocio.
  5. etc.

Links de Interes.

http://www.bpmn.org/
http://www.eclipse.org/gef/
http://www.eclipse.org/modeling/emf/?project=emf
http://www.orbeon.com/