Algunos conceptos de JBoss jBPM

JBoss jBPM fue contruido sobre el concepto de espera. Esto suena extranio ya que por lo general el software que estamos acostumbrados a construir siempre lleva a cabo tareas que deben ser realizadas lo mas rapido posible, pero en este caso hay una muy buena razon para esperar.

Ya que los procesos de negocio de la vida real atraviezan toda la organizacion, incluyendo a seres humanos y a otros sistemas que interactuan entre si con el correr del tiempo. Esto causa que nuestro proceso de negocio tenga la caracteristica de que no podamos o no querramos hacer una tarea en un momento preciso.

Por lo tanto nuestro software necesita una manera de esperar, hasta que el actor del proceso este listo para hacer su actividad. Una vez que hizo su activadad el software necesita saber cual es la siguiente actividad en la cadena y luego esperar a que el actor de la siguiente actividad haga su trabajo.

La orquestacion de esta secuencia de “esperar, trabajar, esperar, trabajar…” es administrada por el motor de JBoss jBPM.

jPDL- JBoss jBPM Process Definition Language

JBoss jBPM se basa en programacion orientada a Graficos. Y estos graficos se representan en lenguaje XML reducido llamado jPDL.

Por lo tanto un proceso definido en jPDL esta compuesto por Nodos, Transiciones y Acciones, que describen como una instancia del proceso debe atravezar el grafico dirigido.

Durante la ejecucion del proceso, mientras una instancia se mueve a travez del grafico dirigido, lleva un token que es un puntero a un nodo del grafico donde la instancia esta actualmente esperando.

Mediante una senial se le avisa al token que transicion debe hacer desde el nodo. Las seniales especifican que camino debe tomarse a travez del grafico.

  • Nodos:
    Un nodo en jPDL es modelado visualmente como una caja. Cabe destacar en esta seccion que se ha separado la idea de esperar el resultado de una accion de la idea de hacer una accion. Y se cree que el termino “actividad” es un termino borroso que mezcla estas dos ideas, lo cual causa problemas cuando tratamos de implementar la logica detras del sistema de administracion de procesos de negocio.
    Por ejemplo, “Buscar Personas” y “Guardar Personas” cuando modelamos el proceso (en el diagrama de flujos de actividades, luego veremos mas en detalle el proceso para armar este diagrama, que es anterior al modelado en la herramienta visual) se ven los dos como actividades, en jPDL se veran como un “Estado” seguido por una “Accion”.
    Un elemento de “Estado” representa el concepto de esperar a que pase una accion, moviendonos en el grafico al siguiente estado.
    Por esto en jPDL “Nodo” es sinonimo de “Estado” y las “Acciones” son pedazos de codigo que pueden ser agregados por el desarrollador para decirle al sistema que realice tareas automatizadas, como por ejemplo, guardar registros en una base de datos.
    Las acciones no se mapean visualmente pero son guardadas en el XML.
    Hay distintos tipos de nodos para lograr distintos objetivos:

    • Tareas: un nodo tarea representa una tarea realizada por un ser humano. Por lo tanto el proceso espera a que una persona complete la tarea e ingrese el valor de salida de la misma. Cada tarea se agrega a la lista de tareas de un rol particular en el sistema.
    • Estados: un nodo de estado simplemente le dice a la instancia del proceso que espere, en contraste con un nodo tarea, no se crea una tarea para ningun rol. Un nodo estado por lo general va a ser usado para modelar el comportamiento de espera a que un sistema externo provea alguna respuesta.
    • Forks  y Joins: con estos nodos podemos modelar caminos concurrentes de ejecucion. Con Forks y Joins representamos actividades corriendo en parelelo. Usamos Fork para dividir el camino de ejecucion y luego Join para volver a unirlo. La instancia del proceso esperara en el join hasta que las tareas ejecutadas paralelamente sean completadas. jBPM crea multiples tokens hijos relacionados al token padre para cada camino de ejecucion.
    • Desiciones: hay 2 tipos distintos de desicion:
      • El caso donde la misma definicion del proceso debe tomar una desicion basada en un dato del que ella dispone.
      • Es una desicion tomada por un ser humano o por un sistema externo y representa una variable de entrada en nuestra definicion del proceso.

      En el primero caso utilizamos el nodo de desicion, en cambio cuando la salida de la desicion es simplemente una variable de entrada en la definicion del proceso en tiempo de ejecucion debemos representarlo con un estado con multiples transiciones de salida, representando cada una de las desiciones tomadas.

    • Nodo Custom: como su nombre lo indica, es un nodo con comportamiento custom diseniado por desarrolladore y definido por el analista de negocio.
  • Transiciones: Especifican las rutas entre los nodos. Podemos ponerles nombre si se necesita distinguir entre dos rutas en el grafico.
  • Acciones: Las acciones estan apuntadas a los desarrolladores. Permiten agregar codigo Java al modelo que va a ser ejecutado como eventos disparados en la ejecucion del proceso. (por ejemplo, cuando se entra o se sale de un nodo). Esto significa que podemos incluir logica sin representarla visualmente.
  • Calles (Swimlanes): Representan roles del proceso, y son usadas para asignar tareas a roles especificos. Estos pueden ser un actor o un pool de actores. En contraste con el diagrama de flujo de actividades, aca no se mapean visualmente, pero son agregados a los detalles tecnicos detras del mapa visual.
  • Variables de proceso:
    Son la informacion contextual que se crea con cada instancia de un proceso. No se modelan visualment, pero nos pueden servir para identifica en que instancia de un proceso debemos efectuar una tarea.

Espero que se entiendan los concepto. En posts futuros estare agregando algunos ejemplos de modelado, como instalar la suite para el desarrollo visual de estos modelos y algunos conceptos y configuraciones mas avanzadas sobre este tema. Tambien seria interesante explicar brevemente el proceso que se plantea para seguir un proyecto de jBPM.

Advertisements

4 thoughts on “Algunos conceptos de JBoss jBPM”

  1. Hola, te felicito por el sitio, me estás aclarando unas cuantas cosas que necesito saber para un proyecto de software en mi empresa en la que más adelante vamos a usar jBPM, y necesito ir estudiando algo.
    En la web oficial los ejemplos son demasiado sencillos, por lo que cuesta apreciar el valor de su utilidad, y los proyectos como Alfresco son demasiado grandes como para estudiarlos y ver su aplicación con jBPM, llevaría demasiado tiempo.
    Por eso quería saber si tienes algún ejemplo que hayas desarrollado o te hayan dado en el curso, donde se pueda apreciar verdaderamante su utilidad, algo que por ejemplo acceda a una base de datos y tenga ABMs, por más que no se use jBPM puntualmente para eso, pero sería bueno ver como esta plataforma “influye” en el producto.
    Si tenés algo hecho con web estaría mejor, pero sino da igual, y sería bueno que los publiques en este sitio, que sería algo así como un pequeño portal de jBPM.

    Like

  2. Gracias por tu comentario, entiendo tu punto de vista.. quieres tener en claro como va a impactar jBPM en la arquitectura de tu aplicacion cierto?
    Para esto tienes que tener en cuenta que tu codigo de ABM seria el mismo que en cualquier aplicacion que uses, pero este codigo se estaria llamando desde algun ActionHandler vinculado con el modelado de tu proceso.
    Espero haber aclarado algo con esta respuesta, pero entiendo que necesites algunos ejemplos mas concretos.
    Si tienes algo que te gustaria ver en particular no dudes en comentar nuevamente. Yo tratare de generar algunos ejemplos un poco mas demostrativos.
    Gracias de nuevo por el comentario

    Like

  3. Hola, la duda que tengo es que cuando tengo un proceso dentro del cual hay varias actividades cómo represento todo en el jbpm, o sea, lo que se representa es el proceso o las actividades. Si me explican con un ejemplo sería mucho mejor.

    Gracias

    Like

  4. Primero que nada, gracias por tu comentario.
    Tratando de responder tu duda, puedo decirte que tienes la pagina oficial de jBPM, http://www.jbpm.org que puede ayudarte a entender como funciona el framework.
    Debido a que jBPM es un framework de programacion, tiene su complejidad tecnica y no es una herramienta que esta pensada para que la use alguien que no tiene conocimientos de programacion.
    Tambien puedo recomendarte todos los post que estan en este blog que hablan de jBPM. Ya que son como 25 y pueden aclararte un poco el panorama.
    Te dejo el link a estos post y algunos que te recomiendo que leas para ver ejemplos de procesos que puedes modelar.
    Saludos.

    Categoria sobre jBPM (con alrededor de 25 posts)
    https://salaboy.wordpress.com/category/jboss-jbpm/

    Algunos recomendados que muestran ejemplos de procesos:
    https://salaboy.wordpress.com/2008/08/22/jugando-con-jbpm-6-decision-node-vs-forkjoin-nodes/
    https://salaboy.wordpress.com/2008/11/03/jugando-con-jbpm-14-taskmgmt-api/
    https://salaboy.wordpress.com/2008/09/01/jugando-con-jbpm-12-jbpm-drools/

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s