Archivo

Archivo para Diciembre, 2008

Conceptos de modelado de procesos en jBPM

Lunes, 22 de Diciembre de 2008

Aquí os dejo un poco de teoria necesaria para comprender jBPM… La mayoria de cosas las he sacado de la página de Red Hat

Process definition : Representa una especificacion formal de un proceso de negocio y esta basado en un grafo dirigido. El grafo esta compuesto por nodos y transiciones. Cada nodo en el grafo es de un tipo específico y este define su comportamiento en tiempo de ejecución.

Token : Es la ejecucion de un “camino” o “ruta”. Un token es el concepto en tiempo de ejecucion que mantiene un puntero a un nodo en el grafo.

Process Instance : Ejecucion de un process definition. Cuando una instancia se crea, lo hace tambien un token, este es llamado por el “root” token de la instancia del proceso que lo posicionara en el estado inicial.

Signal : Insta al token a continuar la ejecucion del grafo. Digamos que es la señal que ahce que avance nuestro camino por el grafo. Si hay varias transiciones el signal deberia estar acompañado de un identificador que le diga que camino seguir, sino por defecto seguira el primero definido.

Nodes : Cuando un token entra en un nodo, este se ejecuta, son los responsables ellos mismos de la continuacion de la ejecucion del grafo. Como he dicho antes cada tipo de nodo implementa un comportamiento diferente de la ejecucion del grafo. Un nodo que no propaga su ejecución se comportará como un State.

El nodo tiene dos funciones principales:

    * Ejecutar codigo java (que hará la funcion del nodo)

    * Propagar la ejecucion del grafo, y ante esto tiene varias opciones :

  • No propagarlo : Con lo que se quedaria como un estado de espera.
  • Propagarlo a través de una transición
  • Crear una nueva ruta de ejecución. Un nodo puede crear un nuevos tokens y tener nuevas rutas (como lo hace el fork)
  • Finalizar la ruta de ejecucion.

- En general, un nodo puede cambiar la estructura entera de la instancia del proceso. La estructura en tiempo de ejecucion es una instancia de proceso que contiene un arbol de tokens. Cada token representa una ruta de ejecucion. Un nodo puede crear y finalizar tokens, poner cada token en un nodo del grafo y lanzar tokens sobre transiciones.

Tipos: Ya os comentaré los tipos de nodos y su función dentro del modelado de procesos. Por ahora os nombro los que son :

    * Node Task

    * State

    * Fork and Join

    * Decision

    * Node

Transitions : Las transiciones tienen un nodo origen y uno destino, puede tener un nombre (lo mas recomendable es darle un nombre siempre, porque mas de un problema he tenido por esto :P ). En caso de que tengan el mismo nombre dos transiciones siempre cogerá la primera transición que se definió.

Actions : Codigo java que se ejecutan en los eventos producidos en la ejecución del proceso. Digamos que son los detalles tecnicos y estos no se contemplan graficamente. Hay que diferenciar entre las acciones que se disparan mediante eventos y las acciones que se colocan en un nodo. Las primeras no tienen influciencia sobre el flujo del proceso mientras que la accion que se pone en el nodo tiene la responsabilidad de propagar la ejecución.

Events : Son las ocurrencias definidas en el grafo, los principales son entrar en un nodo, dejar el nodo o coger una transicion.

Swimlanes : Representa roles y su mision principal es dar tareas a una persona o grupo de personas. No son visuales, así que no podremos ver a quien corresponde cada tarea simplemente viendo la representación del grafo.

Process Variables : Datos contextuales que una instancia de proceso construye durante su ejecución.

Process State : Usado cuando necestamos modelar subprocesos que ajusten con procesos de mas alto nivel. Permite mayor abstraccion para proyectos de gran envergadura.

Super State : Es una manera de modelar un grupo de nodos, esto nos ayudará a crear una jerarquía dentro del process definition.

Process graph : Grafo hecho con nodos y transiciones. En jBPM viene especificado por el fichero processdefinition.xml.



Categories: jBPM Tags: ,