Activiti BPM, la promesa del software libre empresarial

Aunque no soy ningún experto, más bien un novato, en temas relacionados con BPM, he leído este artículo de Tjarda Peelen y me ha parecido tan completo e ilustrativo que he pensado hacer una traducción “libre” de las partes principales y compartirlo con vosotros. La intención es hacer llegar el concepto de qué es Activiti, para qué sirve y que aportará en el mundo del BPM. Aprovecho este post furtivo para anunciar la disponibilidad de Activiti 5.0 RC1. Este es el artículo:

Hace algún tiempo, Alfresco, Signavio y Camunda comenzaron Activiti, una alternativa de código abierto para BPM. La primera pregunta que se me pasó por la mente fue ¿por qué un nuevo motor de BPM? Básicamente, existen algunas reservas sobre la capacidad de Alfresco jBPM en cuanto a desarrollo y control de procesos. Alfresco tenía más razones para reconsiderar el uso de un BPM embebido. Hay consideraciones de los clientes contra las limitaciones a la licencia LGPL licencia por lo que el proyecto Activiti se desarrolla bajo la Apache 2 licencia.

Visión

JBPM es la implementación técnica como motor de BPM. La intención de Activiti es que debe ser un motor ligero, fácil de usar (para desarrolladores de Java) y que “el flujo de trabajo” podría también ser social. Recuerda el podría. El proyecto Activiti no indica cómo una organización debe utilizar BPM, sino que intenta facilitar la colaboración al rededor del proceso de negocio.

Tradicionalmente, el desarrollo de  los procesos (de negocio) es una tarea de “analistas”. Esta función consiste en dibujar diagramas de procesos, definir el flujo de las tareas, definir a qué rol se asigna una tarea, y qué pasos se pueden automatizar. Hecho lo anterior, los desarrolladores crean “código ejecutable” de todo eso. Activiti tiene una serie de elementos que facilitan la colaboración entre los diferentes roles involucrados, como analistas, directivos y desarrolladores.

En primer lugar, Activiti utiliza BPNM 2.0, estándar abierto ampliamente aceptado para modelado de procesos. Lo bonito de esta versión 2.0 del estándar es que, más allá del lenguaje, el código XML subyacente también define un estándar. Activiti puede ejecutar directamente este XML. Esto tiene la ventaja de que el analista y desarrollador trabajen con el mismo esquema de procesos y por lo tanto, con el mismo XML. Uno puede leer el trabajo del otro, y trabajar en el mismo esquema. Eso realmente mejora la eficacia en la comunicación. Activiti también proporciona un módulo adicional donde se facilita la colaboración de los roles involucrados al estilo ‘2 .0’, mejora el proceso de desarrollo de los procesos de negocio, y mejorar las definiciones de proceso actuales. Daré más detalles sobre esto más adelante en este artículo.

Para Alfresco, apostar por Activiti es una decisión bien pensada. Dos de los padres fundadores de jBPM están en el equipo de Alfresco trabajando para este proyecto.

Alfresco tiene experiencia dirigiendo proyectos de código abierto, ya que es una compañía open source en sí. Junto a esto, siguiendo los pasos de la Apache Foundation, creó el proyecto OpenCMIS, ahora incluido en el proyecto Apache Chemistry. (¿He dicho que Alfresco desarrolló SpringSurf y lo donó a SpringSource? Mucha movimiento de código abierto aquí…)

El concepto

Para facilitar la explicación, vamos a suponer que en el desarrollo y operación de procesos BPM están involucradas las siguientes cuatro funciones:

  • El analista tiene la comprensión del dominio de negocios y define los procesos y tareas.
  • El programador crea el código ejecutable, para completar las tareas automatizadas y las búsquedas como resultado del trabajo de los analistas.
  • El participante del proceso es cualquier persona de la organización que se le asigna una tarea durante el proceso de negocio.
  • El administrador es el rol que asegura que el sistema BPM funcionará. Las tareas que ‘atascan’ o fallan se pueden reiniciar, eliminar o reasignar. Este rol es comprender cómo funcionan los procesos en términos de errores, rendimiento, etc.

Voy a explicar los módulos de Activiti utilizando la tabla de abajo.

Activiti Engine

El corazón del sistema es el motor de Activiti. Este es el sitio donde se importan los ficheros XML BPNM2.0 y en función de la lógica los pasos en los procesos definidos son creados y enviados. Este avanzado motor tiene una carga muy baja en términos de uso de la memoria y uso/almacenamiento en base de datos. El motor genera tareas que se asignan a individuos, grupos y roles. También se pueden definir “tareas del sistema” que pueden hacer todo tipo de trabajos automatizados. Por ejemplo, la manipulación de documentos en un DMS (¿usando CMIS?), comunicación con otros sistemas usando servicios web, cambios en bases de datos remotas, etc. Los procesos que ya no están activos se mueven a un archivo para mejorar la velocidad de ejecución.

Activiti viene con muchos tipos de actividades o tareas. También incorpora una sencilla API de Java que permite a las organizaciones definir sus propias tareas. Si se quieren implementar un conjunto básico de funcionalidades, se pueden modelar gráficamente y ejecutarlas mediante el motor. De esta forma, la actividad personalizada puede ser reutilizado y reconfigurada por un analista mediante la interfaz gráfica de usuario.

El Activiti Engine es totalmente abierto. Además de acceder a través de la API de Java, se puede acceder vía REST como interfaz de consultas y control de la aplicación. Esto significa que las aplicaciones que hacen uso del Activiti Engine no necesariamente tiene que estar programadas en Java. Permite la presentación y ejecución de tareas desde aplicaciones realizadas en PHP o .NET. El Activiti Engine se puede consultar de muchas formas, para generar listas de trabajo, métricas, procesos en curso, etc. Por ejemplo, buscar los procesos en ejecución, utilizando valor numérico de un atributo mayor de X, ordenados por fecha.

Activiti está diseñado como un motor BPM para uso empresarial, por lo que también es escalable. Está preparado para funcionar en la nube, las instancias del motor puede funcionar en paralelo si se desea, y se integra sin problemas en una aplicación existente, por ejemplo, utilizando el framework Spring.

La última característica que quiero mencionar es la capacidad de automatizar los procesos de prueba. Incorpora la posibilidad de hacer pruebas con JUnit (versión 3 y 4) y testear los procesos. Esta es una gran noticia, ya que ahorra muchos clics debido a las múltiples trayectorias por las que puede pasar un proceso. Esto permite desplegar, ejecutar y probar las definiciones de procesos en el motor. Todos los pasos pueden ser ejecutados e incluso, tareas como enviar un correo electrónico se pueden desactivar temporalmente. Utilizando los resultados JUnit se puede determinar si la lógica de negocio del proceso está funcionando según lo previsto.

Activiti Explorer

El Activiti Explorer es la interfaz de usuario para los participantes en los procesos. Aquí se encuentran las listas de tareas personales y de grupo. Las tareas de grupo pueden ser reclamadas y completadas, completar datos en formularios determinados o seleccionar opciones de un proceso. Aquí, las tareas se pueden reasignar a otros usuarios en el acto. Del mismo modo, un usuario puede crear bajo demanda sub-tareas para dividir una tarea en una serie de pequeñas tareas.

Activiti Modeler

Activiti Modeler fue desarrollado por Signavio. El Modeler es una aplicación web en la que los procesos pueden ser modelados mediante el esquema BPMN2.0. Las definiciones de proceso se almacenan en formato XML BPMN2.0 en el servidor. Al igual que el framework SpringSurf, el modelador se comunica con el servidor a través de JSON. En la configuración por defecto, la definición de procesos de Activiti se almacena en el sistema de archivos.

Activiti Designer

Activiti Designer es un plugin de Eclipse. De esta forma el desarrollador puede trabajar tanto en el proceso en XML como en el esquema gráfico. Es decir con el código en el mismo entorno de desarrollo y acceder fácilmente entre las diferentes piezas relacionadas con la lógica. Básicamente hace exactamente lo que se espera de él.

Activiti Probe

Activiti Probe proporciona una visión general de los procesos en ejecución. Esta aplicación está orientada a las funciones del administrador. Aquí se puede controlar si el motor de BPM está en funcionamiento, cómo se están usando los recursos y revisar los archivos de logs. Al poder lanzar instancias de procesos en el motor, mediante Activiti Probe, si el proceso falla inesperadamente, la ejecución de tareas se puede reiniciar, reasignar, detener o reiniciar.

Por ahora, Activiti Probe sólo muestra la configuración del sistema y las tablas más relevantes de la base de datos. Esto es, en mi opinión, mucho mejor que la linea de comandos basada en web que actualmente se incluye en la JBPM que implementa Alfresco. Sin embargo, aún no es lo que cabría esperar de una herramienta empresarial. Una herramienta gráfica con las posibilidades de una gestión más avanzadas y diferentes capacidades de gestionar los procesos en ejecución, aunque esto está en camino.

Activiti Cycle

Activiti Cycle es el módulo con el que se dota de colaboración social a la aplicación. BPM está tradicionalmente en las manos de los analistas de negocio. Por otro lado, los desarrolladores lo combinan con la lógica, integran con repositorios y lo hacen funcionar. Activiti Cycle es un entorno enfocado en la colaboración desde el centro del proceso. Los procesos pueden tener relaciones con elementos tales como archivos, repositorios de Maven, incidencias en Jira, repositorios de código fuente como SVN, o por ejemplo, ficheros de Visio, Office, CAD, etc. En definitiva, poder colaborar en todas las funciones que intervienen en la creación y ejecución de un proceso y discutir acerca de los procesos relacionados y los elementos que intervienen en su contexto. Hay muchas formas de utilizar la herramienta y se adapta dependiendo de cómo una organización tiene la intención de abordar el proceso de implementación de BPM. Esta herramienta ofrece varios beneficios, involucrar más a las personas que participan en la definición de procesos, obtener soluciones más realistas y exitosas, diseñar / documentar los procesos adecuadamente y por último, saber cómo, cuándo y por qué se toman las decisiones.

La integración con Alfresco

Integración de Activiti en otros sistemas es responsabilidad del sistema embebido. Activiti pretende ser un motor genérico BPM. Activiti y Alfresco comparten los mismos estándares (incluyendo SpringSurf), por lo que la integración con Alfresco es relativamente fácil. El equipo de integración de Alfresco se dedica principalmente a la creación de “tipos de actividad” (para automatizar la manipulación del repositorio), el mapeo de los usuarios de Alfresco en Activiti (y los efectos sobre la autorización en Alfresco), y la integración de elementos de usuario relacionadas con las tareas de interfaz de Alfresco Share u otros frameworks (service forms para generar pantallas y formularios).

Situación actual

Actualmente Activiti es un proyecto con un volumen importante de desarrollo. La primera versión candidata (RC1) se liberó el día 1 de noviembre. Cumpliendo con el roadmap, se han liberado 7 versiones desde el inicio del proyecto en julio de 2010 hasta noviembre (de la 5.1 hasta la 5.7), es decir, una versión por cada mes. Mirando el roadmap se detecta que aunque es muy ambicioso, se avanza a un ritmo de desarrollo bastante productivo. En este momento Activiti no está preparado para entrar en el mundo empresarial/comercial y competir con otros productos más maduros en el mundo BPM. A medida que avanza el desarrollo, cada vez es más fácil implementar procesos y trabajar con las diferentes piezas. Personalmente estoy muy emocionado con lo que ofrecerá la integración con Alfresco. Echa un vistazo a la web activiti.org para estar al día y para ver el roadmap.