0. Índice de contenidos.
1. Introducción
Hoy vamos a instalar Bonita y dar unos pequeños pasos con este gestor de BPM. De vez en cuando es interesante re-estudiar de primera mano la madurez de los entornos y su intuitividad/documentación para utilizarlos.
Antes de empezar recordar una cosa: con estos productos las demos rápidas son sorprendentes pero trabajar en entornos empresariales es mucho más complejo. Habrá que contar con profesionales del producto y otros agentes imparciales para determinar el ámbito de utilización y el proceso de implantación. Bueno, esto aplica realmente a casi todo en tecnología: la realidad suele ser más compleja que lo que se puede mostrar en una demo de días u horas.
Voy a escribir comentarios un poquito más profundos que en otros tutoriales intercalados, por lo que os sugiero no pasar solamente por las capturas.
2. Entorno.
El tutorial ha sido escrito usando el siguiente entorno:
- Hardware: Portátil MacBook Pro 13′ (2.7 GHz Intel Core i7, 8GB DDR3).
- Sistema Operativo: Mac OS Mavericks 10.9.2
- Java 7
- Bonita BMP Community 6.2.6
3. Instalación.
Antes de empezar os recomiendo ejecutar desde la linea de comando, la app Terminal, el comando: java -version.Si no tienes instalado el interprete de Java (JRE) te arrancará el proceso.
Vamos a bonitasoft y descargamos la última versión.
Ejecutamos la app descargada. Recordad hacerlo pulsando el botón derecho para que os aparezca la opción de instalar (esto bajo responsabilidad de cada uno ya que es software descargado desde Internet).
Es posible que no os funcione porque no encuentre el JDK. Para ello debemos ir al site de Oracle y bajarnos la última versión disponible para Mac. Ante la duda revisar el tutorial de Alejandro Pérez si os estáis volviendo locos sobre el tema.
ᅩ
Yo lo instalo la versión de bonita BPM en castellano.
El wizard es muy intuitivo.
Elegimos el directorio de instalación.
Seguimos instalando.
Después de un rato seguimos…Como no quiero recuperar de un entorno anterior podremos arrancar ya Bonita BPM.
4. Creación de un flujo.
Ahora sería conveniente echar un vistazo a los videos y los manuales para saber como desarrollar un flujo. Si habéis trabajado con otras herramientas similares es tremendamente intuitivo.
Antes de empezar, es conveniente tener claro los roles, tareas y usuarios del proceso que queremos modelar. Voy a empezar a modelar un proceso BPM de contratación de personal y para proporcionar servicios de headhunting. Una herramienta BPM puede proporcionar un sistema sencillo para integrar en un site un interfaz web en el que participen distintas personas.
El entorno tiene un aspecto impecable y he de decir que me ha dado muy pocos problemas. Solo, de vez en cuando, algún problema de perder ventanas por precipitare y pedirle que haga otra cosa cuando todavía no ha terminado la primera.
Vamos a crear un flujo básico y conectarlo a una base de datos para ir persistiendo los datos del proceso de contratación y selección en una base de datos. Esto lo vamos a hacer así por comodidad pero no creo que sea el modo más adecuado. Me explico:
Normalmente un motor BPM tiene que ser la ayuda para realizar procesos en una organización. Si se convierte en el centro del sistema tendremos un problema de tener una dependencia demasiado grande a un único elemento arquitectónico. Un flujo BPM nos tiene que ayudar a organizar las tareas de una parte de un proceso o del proceso completo pero la organización tiene que tener en control del estado y de los datos en entidades externas.
En las grandes organizaciones se mezclan habitualmente procesos online y batch. Gran parte de esos procesos batch pueden estar ya construidos, incluso en tecnología clásicas como Natural, Cobol, RPG o procedimientos almacenados por lo que es importante valorar como se van a integrar esos dos mundos.
Usando un flujo y motor BPM, tenemos varios modos de hacerlo, cada uno mejor que el anterior:
- Los datos pueden guardarse en variables transitorias almacenadas en el proceso BPM mientras está activo en el motor, cosa que crea mucha dependencia con él.
- El flujo BPM puede guardar datos directamente en una base de datos, con Scripts o mapeados visuales, (dependiendo de las capacidades de la herramienta) para que estén muchos datos en el proceso y los deseados en un modelo de datos concretos en una base de datos tradicional. Cosa que va a acoplar mucho el flujo y la base de datos. Más aun considerando que muchas organizaciones están deseando cambiar los modelos de datos obsoletos.
- El flujo BPM puede informar a servicios web (directamente o orquestados a través de un ESB) que es el que se encargue de almacenar los datos. Hay más capas por medio pero la responsabilidad del BPM queda más acotada al flujo visual y menos acoplado a la persistencia.
Si el proceso BPM informa al sistema global de la organización, a través de una capa de servicios, sobre los cambios importantes en el proceso (recordad un patrón de diseño llamado Memento) estaremos haciendo un uso muy equilibrado de las tecnologías (siempre esto valorado en un contexto).
Un proceso tiene un pool o calle, que tiene un actor por defecto. Con un círculo se representa el inicio del proceso. Se suele iniciar el proceso desde un Api externo o desde un site cualesquiera integrándose con la herramienta BPM.Bonita tiene su propio portal y podemos arrancar los procesos directamente.
Marcando la calle principal vamos añadir atributos necesarios en el proceso. Estos atributos estarán disponibles en cualquier tareas y serán persistimos automáticamente por el propio motor en las tablas internas.Recordad que cuando estás en desarrollo el sistema está configurado por defecto para borrar los datos temporales. Por tanto, cada vez que se re-arranca el servidor perdemos los datos antiguos (es fácil cambiarlo).
Añadimos todo el conjunto de datos que tengamos pensado utilizar en el ciclo completo. En las tareas podemos declarar variables locales necesarias para operaciones o control de flujo.
Al ejecutar el proceso vemos que se crea un formulario paginado en base a los campos globales al proceso creado. No vamos a prestar mucha atención a estas primeras pantallas porque como comentaba lo lógico es arrancarlo desde otro sitio y con solamente un pequeño conjunto de datos de todos los que aparecen.
Como está todo el proceso esta en la misma calle, al completar los datos iniciales podemos ver que aparece un link para continuar con la tarea. esto es muy útil en desarrollo y depuración porque sino nos tendríamos que logar con otro usuario para acceder a la tarea. Por tanto, parece buena idea gestionar los usuarios (y otras calles en el diagrama al final) y no al principio.
Las herramientas BPM tienen como núcleo central una bandeja de tareas donde cada usuario dispone de un conjunto de labores potencialmente a iniciar. Cuando un usuario elige una tarea se la asigna (y ya no queda disponible para los demás). Al pinchar sobre ella dispone de un formulario donde completar la tarea.
El formulario puede ser por defecto, generado dinámicamente a partir del los campos declarados, o puede personalizarse. Vamos a cambiar el formulario: Pinchamos en la tarea y en la sección aplicación.
Elegimos los campos involucrados.
Jugamos con el formulario recolocando los datos como nos interesa.
Añadimos incluso una validación estándar proporcionada por Bonita. En este caso para el email.
Podemos pre-visualizar los formularios o comprobar su funcionamiento en el flujo básico. Vemos si funciona rearrancando el proceso.
En los formularios podemos añadir campos adicionales. Vamos a añadir un documento adjunto. Parece lógico que en un proceso para gestionar el CV aparezca un campo para adjuntar el cv en formato pdf. Arrastramos de la barra lateral un elemento de tipo archivo.
Y creamos un elemento nuevo de tipo documento para asociárselo. Durante el flujo podríamos almacenar el documento en un gestor documental como Alfresco (aunque lo haremos en otro para que no sea más largo).
Ya tenemos el documento asociado y vemos su comportamiento.
Vamos a hacer antes un retoque estético a ver como queda. Podemos añadir imágenes.
El documento puede ser interno cargado desde un fichero.
Insertamos un logo.
Bueno, vemos como poco a poco va cambiando.
En cada tarea lo lógico es que cada usuario solo vea los campos que necesita ver. Por ejemplo, si un técnico hace la entrevista técnica e informa al sistema, puede no ser conveniente que vea el salario que solicita. Igual puede pasar que el evaluador no técnico no debería ver la evaluación de técnico porque le puede condicionar.
Normalmente el proceso, en base a un cálculo o algún campo informado se hacen bifurcaciones. Pinchando y arrastrando aparece el símbolo.
La X representa que es o un trayecto u otro XOR. Debemos definir una condición en cada trayecto. En uno de ellos, si lo marcamos por defecto, aparecerá una raya.
Normalmente tendremos que crear (como en cualquier programa) variables de flujo globales que se arrastren entre distintas tareas.
Vemos como se marca un trayecto por defecto.
El motor utiliza scripts de Groovy. Las comparaciones, como en Java, se hacen con ==
Si queremos que el campo sea rellenado por el entrevistador en el primer filtro de CVs deberemos añadirlo al formulario y mapear los datos.
Adicionalmente a guardarse los datos en el flujo vamos a grabarlos en una base de datos (aunque ya hemos dicho que esto es cómodo pero no siempre la mejor opción). Para hacerlo debemos ir a la sección conectores.
ᅩ
Elegimos PostgreSQL.
La acciones podemos definir que se haga al entrar o al finalizar la acción.
Elegimos el driver de la base de datos.
Establecemos la cadena de conexión y contraseña.
Estas pantallas ya son de la herramienta de administración de la base de datos.Vemos el esquema de los campos.
Si pulsamos en el script insert nos saca una muestra del sql necesario.
Solamente tendremos que sustituir las interrogaciones por los campos. Eso se hacer con ${nombre_campo}.
El resultado lo introducimos en el Script dentro de Bonita.
Queda tal que así:
INSERT INTO candidatos( c_nombre, c_ape1, c_ape2, "c_pretensionEconomica", "c_URLcv", c_email) VALUES ( '${b_nombre}', '${b_ape1}', '${b_ape2}', ${b_pretensiones}, '${b_urlCV}', '${b_email}' );
Ahora arrancando el proceso solo tenemos que comprobar en la base de datos que se están insertando los registros.
Logícamente esto es un primer paso. Si creamos el resto de formularios y roles en la organización, habremos creado una aplicación básica orquestada dentro de un portal Web.
En siguientes tutoriales veremos como ir completando el proceso.
Buenos días!. Estoy pensando utilizar el BPM como una herramienta para gestionar diferentes negocios que tengo con indicadores tipo cuadro de mando. Te consulto, BPM de Bonitasoft, podría remplazar Odoo Open Source?.Podría yo crear un POS con Bonita?. Existe alguna web donde hayan procesos creados para descargar y luego modificar tipo una librería?
Saludos cordiales.
Muy buen post, gracias
Que tal!! esta muy bien explicado el post, solo tengo una consulta, en el documento ponen ejemplo una bd en PostgreSQL, pero para Oracle como se definen los campos en Values? gracias
Buen día,
Estoy tratando de realizar autenticación Bonita Community con Directorio Activo, ¿Esto es posible?
Hola!!
no me funcionó? realice las descargas paso a paso… pero me sigue generando error, ayuda
Alguna actualización para integrar la última versión de BonitaSoft Community (7.10) con MySql, la documentación oficial parece no funcionar. Gracias.