Ir al contenido principal

Primeros pasos con Camunda BPM – Invocar una Clase Java desde una Tarea de Servicios en un proceso BPMN 2.0


Ya en nuestra publicación anterior aprendimos cómo agregar Formularios de HTML a nuestras Tareas Humanas o con Actor para nuestro proceso de BPMN 2.0.

En esta oportunidad, siendo esta nuestra última publicación de la serie Primeros pasos con Camunda BPM, vamos a aprender a configurar e invocar a clases de Java para que se ejecuten desde nuestras actividades o tareas de servicio

Esto es una funcionalidad muy importante puesto que nos permite desde nuestro proceso de BPM invocar servicios o consumirlos tal cual lo solemos hacer desde nuestras aplicaciones Java normales. Salvo algunas excepciones, casi todo lo que se puede hacer desde Java es posible hacerlo desde nuestras clases para automatización de servicios.

Así que síganme los buenos y manos a las sobras…



Agregar una implementación de JavaDelegate



Como las tareas de servicio deben ser asociadas a una clase java que podamos ejecutar, esto lo hacemos construyendo clases que implementen la interface JavaDelegate, lo que garantiza que nuestras implementaciones tengan un método con la siguiente firma:



public void execute(DelegateExecution execution) throws Exception


El cual recibirá un parámetro DelegateExecution, que representa nuestro contexto de ejecucuión del proceso y es la puerta de entrada para la API del motor de procesos de Camunda.

Vayamos a nuestra IDE, eclipse, y abramos nuestro proyecto de BPM, bpm_demo, y en el paquete:

/src/main/java/pigbar/bpm/apps/bpm_demo

Agreguemos una clase, ServiceTaskDelegator, que implemente la Interface antes identificada,



quedando como se muestra a continuación:

package pigbar.bpm.apps.bpm_demo;

import java.util.logging.Logger;

import org.camunda.bpm.engine.delegate.DelegateExecution;
import org.camunda.bpm.engine.delegate.JavaDelegate;

public class ServiceTaskDelegator implements JavaDelegate {
 private final static Logger LOGGER = Logger.getLogger("SOLICITUD-PRESTAMO");

 public void execute(DelegateExecution execution) throws Exception {
  LOGGER.info("Solicitud de Prestamo realizado por: '" + execution.getVariable("customerId") + "'...");
  LOGGER.info("Por un monto total de: '" + execution.getVariable("amount") + "'.");
 }

}


Note como accedemos a la variables del proceso mediante la variable execution del tipo DelegateExecution.



Excelente!!!



Agregar una Tarea o Actividad de Servicio al Proceso


Como ya hemos implementado nuestras clases Java que se harán cargo ejecutar nuestra lógica de servicio, es hora de ir al editor o modelador de Camunda BPM para agregar una nueva Tarea o Actividad de Servicio a nuestro proceso BPMN y configurarla adecuadamente para asociarla con nuestras clases de implementación de la interface JavaDelegate.

Abramos nuestro procesos en el Modeler, seleccione y arrastre el evento de finalización hacia la derecha para hacer espacio para la nueva Tarea de Servicio

Desde la barra de herramientas seleccione la figura correspondiente a Actividades y arrástrela hasta la posición correspondiente entre la Tarea Humana y el Evento de Finalización. El editor automáticamente enlazará los flujos adecuados. Con la Tarea de Servicios seleccionada, ubique la opción de Configuración y seleccione “Servicce Task”.



Proceda a nombrar la nueva Tarea de Servicio como “Mi Servicio”, que creativo ¿no les parece?, y nos debe quedar un flujo como el siguiente:



Seleccione la Tarea de Servicio, en la barra de propiedades ubique la sección de “Details”, despliegue el comboBox denominado “Implementation” y seleccione el valor “Java Class”. Seguidamente asigne el valor adecuado correspondiente al nombre calificado de la clase de implementación

pigbar.bpm.apps.bpm_demo.ServiceTaskDelegator



Guarde los cambios realizados al proceso BPMN y desde el eclipse construya, empaquete, despliegue y ejecute nuevamente nuestro proyecto Maven Java.

Levante una instancia del Proceso con los siguientes valores:

Customer Id = Yo el Supremo

Ammount = 125000

Complete la Tarea Humana asignada al usuario John y en el Log del servidor deberíamos poder observar una salida similar a la siguiente:


02-Dec-2016 12:02:38.479 INFO [http-nio-8080-exec-17] pigbar.bpm.apps.bpm_demo.ServiceTaskDelegator.execute Solicitud de Prestamo realizado por: 'Yo El Supremo'...
02-Dec-2016 12:02:38.479 INFO [http-nio-8080-exec-17] pigbar.bpm.apps.bpm_demo.ServiceTaskDelegator.execute Por un monto total de: '125000.0'.


Lo que demuestra que nuestra Tarea de Servicio se ejecutó a la perfeccción.

Genial!!!.

Hasta aquí nuestra serie de publicaciones sobre los primeros pasos con Camunda BPM. 

Nos quedan pendientes los temas específicos de la notación BPMN, la API REST de la plataforma y como desarrollar aplicaciones para este poderoso y versátil motor de BPM.

Pronto les estaré invitando al Webinar sobre la notación BPMN que estaremos realizando con la plataforma de Camunda BPM.

Atentos a este medio y al twitter!!!

Hasta la próxima

Comentarios

  1. Excelente trabajo, muchas gracias! me ah ayudado bastante ... espero que retomes los temas específicos que describes al final... buena suerte!

    ResponderEliminar
  2. +10 Muy Buena explicación, gran trabajo.
    espero sigas con el tema, saludos.

    ResponderEliminar
  3. +10 muy bien explicado, gran trabajo.
    espero sigas con este tema. saludos.

    ResponderEliminar
  4. Hola, Buenas tardes. Me han gustado mucho los tutoriales que ha ofrecido sobre Camunda. Le escribo desde la Universidad Complutense de Madrid y estamo investigando como integrar Camunda en nuestra estructura de trabaja. No se si nos podría ayudar. Espero que se ponga en contacto conmigo. Muchas Gracias. Un saludo. David.

    ResponderEliminar
  5. Hola, Buenas tardes. Me han gustado mucho los tutoriales que ha ofrecido sobre Camunda. Le escribo desde la Universidad Complutense de Madrid y estamo investigando como integrar Camunda en nuestra estructura de trabaja. No se si nos podría ayudar. Espero que se ponga en contacto conmigo. Muchas Gracias. Un saludo. David.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

El Melange todavía corre

Ese era el estribillo de un capítulo de unas de mis series favoritas de la infancia, Meteoro o Speed Racer. En ese capítulo un auto “fantasma” el X-3, aparecía de imprevisto y dejaba a todos asombrados con su rendimiento y prestaciones y volvía a desaparecer. Traigo ese episodio a colación puesto que recientemente sostuve una amena charla con un querido amigo, en la que el me manifestaba como los Mainframes habían muerto, o mejor dicho, el concepto de la computación distribuida basada en Mainframes había desaparecido. Para variar, yo no estuve de acuerdo, y le dije que por el contrario, el modelo de computación basado en Mainframes está mas vigente que nunca. Estos fueron mis argumentos:

Primeros pasos con Camunda BPM – Modelando un Proceso BPMN 2.0

Tenemos entre manos la tercera publicación de nuestra serie sobre la Plataforma de BPM de Camunda .  El día de hoy vamos, por fin, a empezar a modelar o construir nuestro primer proceso sencillo en notación BPMN 2.0. Para ello vamos a usar el modelador o editor que ya hemos instalado en nuestra primera publicación , y vamos a guardarlo en la sección de recursos del proyecto Maven Java que configuramos en la segunda publicación . Así que, como ya es costumbre, manos a las sobras…

Como configurar jBPM para usar nuestra propia Base de Datos en un sólo paso

Llevo un buen rato trabajando con jBPM en su serie 6.x, y mi opinión sobre este producto en la versión mecionada no ha mejorado para nada. Es una herramienta plena de funciones y caracteristicas avanzadas, pero tambien está llena de Bugs y es realmente inestable, sobre todo en el ambiente de modelamiento.  Así mismo, debo decir que tiene una muy aceptable API REST y que el motor de procesos y la consecuente ejecución de los procesos es estable y bastante rápida. En esta publicación daré inicio a una serie de artículos que hablan sobre ciertas configuraciones comunes e importantes que se hacen con jBPM. Hoy iniciamos con la configuración de jBPM para que use nuestra base de datos favorita. Esto tiene sentido porque el producto viene con la base de datos H2 por omisión, la cual es excelente para pruebas y evaluaciones rápidas de la herramienta, pero es completamente inaceptable en un ambiente de desarrollo, QA o producción cualquiera. Así que manos a l