Archivo

Archivo para Enero, 2009

Ejemplo Básico jBPM (y II)

Lunes, 19 de Enero de 2009

Para el ejemplo he utilizado lo mínimo , como veis no tengo ni ficheros de configuración , ni los de test ni nada… queda así mi estructura básica :

configComo veis hay un paquete basico.init donde se va a iniciar la aplicación, un paquete basico.action donde está el handle de las acciones que definamos en los workflows y un directorio almacen-jPDL donde voy a almacenar el/los workflow/s que vayamos haciendo.

Para crear un nuevo workflow… botón derecho sobre el directorio donde lo quereis crear y elegir New, Other,  process definition.

seleccprocessdefinition

El workflow es muy simple, simplemente simulará el encendido de un botón y finalizará el workflow

wfbotonDespués de dibujarlo, hay que añadir las acciones… a mi me resulta más comodo hacerlo por código, modificar el xml directamente. El contenido es el siguiente :

<?xml version=”1.0″ encoding=”UTF-8″?>

<process-definition  xmlns=”urn:jbpm.org:jpdl-3.3″  name=”Boton”>
<start-state name=”Inicio”>
<transition to=”Boton ON” name=”Pulsa Boton”>
<action name=”action” class=”basico.action.MessageActionHandler”>
<message>Pulsando Boton</message>
</action>
</transition>
</start-state>
<node name=”Boton ON”>
<action name=”action” class=”basico.action.MessageActionHandler”>
<message>Boton en posicion ON</message>
</action>
<transition to=”Fin” name=”Fin”>
<action name=”action” class=”basico.action.MessageActionHandler”>
<message>Proceso terminado</message>
</action>
</transition>
</node>
<end-state name=”Fin”></end-state>
</process-definition>

La aplicación donde cargaremos y ejecutaremos el workflow es la siguiente :

package basico.init;

import java.io.FileInputStream;
import java.io.FileNotFoundException;

import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;

public class Start {

public static void main(String[] args) throws FileNotFoundException {
FileInputStream fis = new FileInputStream(“almacen-jPDL/Boton/processdefinition.xml”);
ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(fis);
ProcessInstance instance = new ProcessInstance(processDefinition);
instance.signal(“Pulsa Boton”);
instance.signal(“Fin”);
}
}

Simplemente cargamos el fichero processdefinition.xml, parseamos el xml en la estructura ProcessDefinition y creamos una instancia del workflow. Con esto ya tendremos nuestro workflow preparado para recibir las ordenes.

La primera es “Pulsa Boton” que nos llevará al nodo Boton ON y ejecutará una acción… esta acción se define aqui :

package basico.action;

import org.jbpm.graph.def.ActionHandler;
import org.jbpm.graph.exe.ExecutionContext;

public class MessageActionHandler implements ActionHandler {

private static final long serialVersionUID = 1L;

String message;

public void execute(ExecutionContext context) throws Exception {
context.getContextInstance().setVariable(“message”, message);
System.out.println(message);
}
}

El resultado final una vez ejecutado el workflow son los siguientes mensajes en la pantalla

Pulsando Boton
Boton en posicion ON
Proceso terminado

Fácil no?

Ahora os podeis bajar el código del ejemplo aquí



Categories: jBPM Tags: , ,

Ejemplo Básico jBPM (I)

Viernes, 16 de Enero de 2009

Algunas personas me han pedido que ponga algun ejemplo sencillo porque no les funciona el ejemplo básico que hay en el tutorial de jbpm.
Haré un ejemplo básico básico, de hecho, quitaré todo aquello que no se utilice, como ficheros de configuración, bases de datos… incluso se puede prescindir de la estructura inicial de ficheros que propone jBPM.

Lo primero, vamos a iniciar el proyecto…

paso1

Elegimos Process Project y procedemos a darle un nombre

paso2

Nos pide configurar el JBoss jBPM Runtime… asi que buscamos el directorio donde nos hayamos instalado

el jBPM, sigo a partir del tutorial donde explico la instalacion del jBPM 3.3.0GA.

paso3

paso4

El nombre se lo poneis vosotros… que sea un nombre característico, porque ireis actualizando las librerias con nuevas versiones que si no vais con un poco de cuidado se lia bastante la cosa.

paso5

A continuación elegis el Core jBPM al que le habeis dado nombre en el paso anterior y seleccionais el cuadro para que te genere el simple process definition, action handler y JUnit test. Generalmente es más fácil empezar con esto aunque para el ejemplo básico voy a crear el proyecto totalmente vacio.

Le dais a finalizar y ya teneis la estructura necesaria para empezar.

He encontrado también un video bastante majo para empezar, aunque es de una versión más antigua, os puede ayudar bastante. Aprovecha toda la estructura visual de eclipse… se configura todo por menus y tal… el mio será totalmente por código.

Demo jBPM

Categories: jBPM Tags: , ,