jBPM + Designer – Install HowTo

Requisitos

Sun JDK 1.5 (JDK 5.0 Update 16)

http://java.sun.com/javase/downloads/index_jdk5.jsp

jBPM jPDL Suite 3.2.x

http://www.jboss.org/jbossjbpm/jpdl_downloads/

Eclipse (Ganymede)

http://www.eclipse.org/downloads/

Apache Ant 1.7

http://ant.apache.org/bindownload.cgi

Apache Commons Fileupload

http://commons.apache.org/fileupload/

Apache Jackrabbit (jackrabbit-core-1.4.5.jar)

http://jackrabbit.apache.org/downloads.html

JTA.jar (de la distribucion de Hibernate)

Pasos

Crear el directorio /jbpm/  en algun lugar (el directorio jbpm va a ser nuestra raiz de trabajo)

Copiar JDK de sun a  a /jbpm/

Necesitamos darles permiso de ejecucion:

chmod 777 JDK-xx.bin

Luego podemos ejecutarlo con:

./JDK-xx.bin  -> con espacio (space) pasamos de hoja en hoja la licencia y cuando nos pregunte si  aceptamos debemos escribir la palabra “yes”

A continuacion seteamos dos variables de entorno que vamos a necesitar para correr eclipse:

export JAVA_HOME= /jbpm/JDK-xx

export PATH=…. /jbpm/JDK-xx/bin/:$PATH

Una vez que tenemos el JDK de Java disponible en nuestro Sistema Operativo podemos proceder a instalar jBPM-jPDL-Suite. Esta suite contiene varios componentes que nos ayudaran a tener todo el entorno para desarrollo listo. Para mas informacion sobre el contenido de la suite ir al siguiente post.

Crear el directorio /jbpm/software/

Copiar jbpm-jpdl-3.2.x.zip a /jbpm/software/
Unzip jbpm-jpdl-3.2.x.zip en /jbpm/software/

Copiar a  /jbpm/software/  eclipse-xxx.tar.gz

Unzip eclipse-xxx.tar.gz sobre  /jbpm/software/bpm-jpdl-3.2.x/designer/eclipse, esto en ubuntu 8.04 hace un merge, sino hay que hacerlo a mano. Es decir, copiar cada cosa a su lugar, ya que el directorio eclipse tiene cosas dentro.
Luego le damos permiso al archivo designer.sh para poder ejecutarlo:

chmod 777 /jbpm/software/ jbpm-jpdl/designer/designer.sh
Hay que tener cuidado porque el script de arranque designer.sh puede contener espacios que no dejen ejecutar correctamente las instrucciones. Por esto necesitamos editar el archivo y borrar los espacios manualmente con:

gedit designer.sh -> borrar los espacios

Ahora ya podemos ejecutar el script designer.sh que nos abrira una instancia de eclipse, con algunos plugins para poder manejar todo lo relacionado a jBPM.

Hasta este punto, ya podemos empezar a trabajar con jBPM, pero el siguiente paso es bastante recomendado ya que vamos a tener los fuentes disponibles dentro del eclipse, y con esto obtenemos la ventaja de poder debuggear y tener los fuentes a mano a la hora del desarrollo.

Para obtener esto lo unico que tenemos que hacer es crear un nuevo proyecto Java partiendo de los funetes que se encuentran dentro de la suite (java project with existing sources), al cual vamos a  nombrar jbpm3 y usar las fuentes de se encuentran dentro del directorio src de la suite:

/jbpm/software/jbpm-jpdl-3.2.x/src/
Cuando el proyecto se cree va a mostrar errores ya que faltan agregar varias bibliotecas necesarias para que el codigo compile. Para esto vamos a agregar todas las libs de /jbpm/software/jbpm-jpdl-3.2.x/lib al proyecto. Esto lo hacemos de la siguiente manera:

Con boton derecho sobre el proyecto vamos a la opcion que dice Builth Path del proyecto, luego a la pestania que dice Libraries y ahi creamos una nueva User Library llamada jbpm3 y le agregamos todos los jars que hay en todas las libs del /jbpm/software/jbpm-jpdl-3.2.x/lib.

A estas libs nos van a faltar agregarle las siguientes para que el proyecto compile correctamente:

Para esto creamos un directorio /libs en /jbpm/software/ y copiamos:
jta.jar -> viene con al distribucion de hibernate por lo general conviene sacarlo de ahi. (no se de donde bajarlo solo)
jackrabbit-core-1.4.5.jar
apache-ant-1.7.0/lib/ant.jar
commons-fileupload-1.x/lib/common-fileupload.jar

Una vez hecho esto tenemos que editar desde el Build Path, en la User Library que creamos, llamada jbpm3 y agregarle estos 4 nuevos jars que acabamos de copiar.

Llegado a esta instancia el proyecto jbpm3 solamente deberia mostrar 100 warnings y no mas errores. en el tab de problems del eclipse (“designer”). Fijense que todos estos warnings son por el uso de ArrayList sin generics.

Cada vez que necesitemos correr designer vamos a tener que exportar JAVA_HOME y el PATH

export JAVA_HOME=…. /jbpm.training/jdk…
export PATH=…. /jbpm.training/jdk…/bin/:$PATH

esto podemos automatizarlo poniendolo en el archivo .bashrc o .bash_profile de el usuario que estemos utilzando.
Una vez que hicimos esto para que estos parametros tomen efecto en la sesion actual, debemos ejecutar en la consola el comando bash, para que la sesion de consola se reinicie y retome todos los valores.

Espero que haya quedado claro el proceso de instalacion, cualquier duda no duden en comentar.

Advertisements

43 thoughts on “jBPM + Designer – Install HowTo”

  1. Para usar jBPM no tenes que pagar nada, esta bajo la licencia LGPL (http://es.wikipedia.org/wiki/GNU_Lesser_General_Public_License) y puedes usarlo libremente siguiendo las restricciones de esta licencia, que bajo ningún punto pide que pagues nada a nadie. El producto en si es Open Source, por lo tanto puedes bajar su código fuente para modificarlo según tus necesidades. Con respecto al rendimiento, es una pregunta muy amplia, como todo framework, debes aprender a usarlo y dependiendo de tu situación particular es como se va a comportar y como se debería medir el rendimiento.
    Gracias por tu comentario.

    Like

  2. El problema es que estoy investigando sobre un workflow que me sea util para un sistema que soporte una concurrencia de 500 a 1000 usuarios diarios, y ademas me gustaría saber que orquesta exactamente y sobre que se basa

    Like

  3. Tendrías que analizar bien tu situación particular y como exactamente vas a construir la aplicación. Por problemas de concurrencia no vas a tener problema ya que esta pensado para ser facilmente adaptado y funcionar en un cluster de servidores.
    jBPM esta basado en un paradigma llamado programación orientada a grafos, por lo tanto sirve tanto como para representar procesos de negocio como para orquestar.

    Gracias nuevamente por tu comentario.
    Tus dudas no molestan, cualquier cosa consultame.
    Saludos

    Like

  4. Gracias, de veras me han sido útil estas respuestas.
    Cuando te refieres a que orquesta negocio, es que es capaz de tomar deciones ante la entrada de datos y decidir el proximo curso a tomar, también me gustaría saber en que tipo de soluciones se puede emplear en web, desktop o ambas

    Like

  5. Nunca me referi a “orquestar negocio”. Por lo general se suele hacer una diferencia cuando uno, con este tipo de herramientas, modela una situación de negocio, como por ejemplo un proceso concreto dentro de una empresa.
    Por otro lado cuando se habla de orquestación, por lo general se hace referencia a la integración de sistemas, lo que seria algo asi como coordinar la interaccion de dos o mas sistemas por medio de un flujo que llama a un sistema y dependiendo de la respuesta toma un camino u otro dentro del flujo definido. (BPEL es un lenguaje que se suele utilizar para realizar esto cuando los sistemas hablan utilizando Web Services).

    Respondiendo a tu ultima pregunta sobre las plataformas (web, desktop (Java SE),Java EE), jBPM es agnóstico a la plataforma en el que se lo use, por lo tanto podrías tener cualquier tipo de aplicación que lo utilice. También podría darse el caso en que tengas aplicaciones web, desktop y Java EE todas utilizando los mismos procesos o flujos.

    Saludos

    Like

  6. Primeramente gracias por tu post, es de gran ayuda para personas que apenas estamos entrando en el mundo de las BPMS.

    En la organización que estoy trabajando actualmente estamos interesados en implementar una solución de software que nos permita automatizar de cierta manera primeramente algunos procesos criticos a corto plazo, y realizar seguimiento on-line de los mismos.

    Cuando hablo de seguimiento me refiero a las notificaciones automaticas via e-mail ó sms que deben ser enviadas a los superiores, informando acontecimientos que ocurren en tiempo real en un proceso; un ejemplo sería la demora en tiempo para realizar una actividad en particular.

    Hasta el momento en nuestra organización hemos consultado sobre BPM y tengo las siguientes situaciones que agradeceria si me las pudieses contestar:

    1. Es BPM una solución a nuestro inconveniente?
    2. Porque se habla de JBPM como WorkFlow, los conceptos son iguales o que diferencias existen entre los dos?. Entiendo que BPM es un concepto más amplio que los WorkFlow y es considerado la evolución de los WorkFlow.
    3. Conoces algo sobre Intalio?. Que información me puedes dar sobre este BPM.
    4. Entiendo que JBPM e Intalio son Open Source, aunque Intalio en su versión empresarial, ofrece licenciamiento basado en soporte, que por cierto es considerado un poco costoso. Quiero saber que diferencias hay entre JBPM e Intalio y cual me recomiendas?
    5. Que BPM diferente de JBPM e Intalio me puedes dar buenas referencias para nuestro inconveniente?
    6. Cuenta JBPM con algún modúlo BAM y BRE?

    Cualquier información que me pudieras ofrecer sería de gran utilidad.

    Muchas Gracias

    Like

  7. Muchas gracias por tu comentario, disculpa la demora en la respuesta, pero tuve un fin de semana bastante agitado.
    Vamos directo con las respuestas a tus preguntas:
    1) BPM es una solucion a tu problema, sin duda. Tambien BPM te ayudara a separar tus procesos de negocio de todo el codigo de tu aplicacion, desacopando responsabilidades y brindandote flexibilidad cuando necesites hacer cambios. Por ejemplo, agregar o quitar notificaciones.
    2)Yo no diria una evolucion. BPM en si es una disciplina teorica y por lo tanto si es un concepto mas amplio que un WorkFlow. Se podria decir que un workflow siempre esta relacionado con una aplicacion particular (solo pasos dentro de una actividad en particual) y BPM trata de representar los procesos de negocio que pueden atravezar varias areas de negocio. Ademas BPM propone herramientas y todo un ciclo para la administracion de estos procesos, cosa que workflow no lo hace ya que son solo una serie de pasos.
    3) en la siguiente URL hay una comparacion de productos: http://www.intalio.com/products/jbpm/, por supuesto muestra todas las ventajas que tiene Intalio sobre jBPM. Yo por mi parte te puedo aclarar algo que puede llegar a servirte: jBPM es un framework de desarrollo, como hibernate. Lo puedes usar dentro de tus aplicaciones para hacerlas mas flexibles y adaptables a la realidad. Por el otro lado Intalio es un producto, que como dice en la pagina, esta preparado para que no escribas codigo. Esto suena muy bueno hasta que llega el momento donde quieres hacer algo que no se puede, y ahi comienzan los problemas. Si tu area es el desarrollo, sin duda te recomiendo jBPM que es un framework estable, probado y muy facilmente adaptable a cada situacion en particular.
    4) Ambos son Open Source y ambras empresa ofrecen un servicio de “ayuda” o asistencia de uso pagos.
    5) Siguiendo con mi recomendacion, si estas en el area de desarrollo de la empresa, donde estan buscando una solucion que les facilite el desarrollo, puedo recomendar Drools RuleFlow como una inversion a futuro. Actualmente no hay version estable pero pronto estaran disponibles. Tendrias que analizar bien cual es tu situacion y cuanto estas dispuesto a invertir.
    6) Modulo de BAM si, estan trabajando en el hace rato. No estoy muy al tanto del estado actual. Pero tendrias que revisar bien que herramientas existen. He visto que varios usan Pentaho para todo lo que es analisis sobre estadisticas de los procesos que se ejecutan con jBPM.

    Espero haber sido claro y respondido la mayoria de tus preguntas. Tus comentarios no molestan, si quedo alguna duda solo tienes que comentar.
    Saludos!

    Like

  8. Muchas gracias salaboy por responder. Toda la información que me brindas es muy valiosa para evaluar el requerimiento que tenemos actualmente en nuestra organización.

    Primero que todo, queda bastante claro que estamos bien enfocados al centralizarnos en una solución BPM. También queda claro la diferencia entre BPM y WorkFlow.

    He estado probando la versión comunity de Intalio, montando ejemplos sencillos que ellos tienen en su portal y me ha parecido novedoso todo el manejo de los procesos con esta herramienta. En nuestra organización realizamos una conferencia on-line con personal de Intalio y nos mostraron un bosquejo de la solucón Intalio – Enterprise y hemos podido notar que BPM es realmente lo que buscamos. Nos mostraron el módulo BAM, BRE y la integración con el portal LifeRay y nos ha parecido interesante.

    Ahora queremos conocer sobre jBPM, me he descargado el IDE Eclipse e instalado el Designer de Procesos. Me descargue la suite de jBPM, pero tengo un problema el servidor de aplicaciones no me quiere arrancar, anoto el error por si depronto sabes que puede estar pasando

    09:50:55,109 DEBUG [UnifiedLoaderRepository3] Failed to update pkgs for cl=org.jboss.mx.loading.UnifiedClassLoader3@79717e{ url=file:/C:/jbpm/jbpm-server/server/default/conf/ ,addedOrder=1}
    java.io.FileNotFoundException: C:\jbpm\jbpm-server\server\default\conf (El sistema no puede hallar el archivo especificado)
    at java.io.FileInputStream.open(Native Method)

    El error especifica que no se encuentra el directorio /default/conf, y logicamente cuando reviso este dir no existe. Que puede estar pasando???, me baje el paquete que no era???

    jBPM solo funciona bajo Eclipse o se puede montar en NetBeans???, depronto sabes de url con documentación de instalación y todo lo concerniente para hacer los primeros pinitos????, depronto ejemplos báscios y manuales de jBPM??? cualquier info que me regales quedare muy agradecido

    Hasta Luego

    Like

  9. Perfecto, que buenos servir de ayuda.
    Como te comentaba antes, jBPM es un framework de desarrollo.
    Vas a tener que codificar bastante y realizar configuraciones como en cualquier framework.
    Contestandote sobre Netbeans, yo tambien soy un usuario de netbeans. Lamentablemente no existe un plug in para netbeans de jBPM. Esto no me impide, desarrollar mis aplicaciones que utilizan jBPM en netbeans. Con respecto a la documentacion de jBPm puedes encontrarla en el sitio oficial http://www.jbpm.org. Si no eres un desarrollador experimentado puede encontrar esta documentaion un poco complicada. Pero como decia antes, es un framework de desarrollo.
    Hablando del error. Suena raro, has tenido alguna experiencia con JBoss?
    Puede ser que tengas todo con permiso de solo lectura? porque ese directorio lo deberia crear automaticamente si mal no recuerdo.
    Saludos

    Like

  10. Nuevamente gracias salaboy. Lo de la pregunta de alguna experiencia con JBoss no tengo ninguna. Apenas estoy conociendo el producto JBPM. Soy desarrollador bajo Java, no digo que soy un experto pero si he estado programando en Java mas o menos dos años. Lo del error suena raro, porque cuando arranco el server se crea la carpeta default pero la carpeta conf no se crea. Voy a mirar que puede estar pasando, lo de permisos no creo porque los tengo todos. Es precisar que estoy instalando jBPM en Windows. Voy a revisar la documentación, pero cualquier info que me puedas dar y preferiblemente manuales en español y montaje de ejemplos básicos

    Gracias

    Like

  11. Ahi exactamente esta tu problema.
    Que JBoss estas utilizando? el que bajas con el instalador de jBPM?. Porque lo que te esta pasando es que estas arrancando con un profile que no existe.
    Fijate dentro del directorio llamado server/ si no existe un directorio llamado jbpm. En este caso deberias arrancar el servidor utilizando ese profile. Esto lo hace con:
    run.sh o run.bat con el flag -c jbpm.
    Saludos

    Like

  12. he conseguido levantar el servidor pero ahora tengo otro problema, cuando intento acceder a la web-console no me carga, porque puede ser???

    Like

  13. Pueden ser Tres cosas:
    1) la web-console no se desplego correctamente
    2) la web-console no se encuentra en el profile que levanteste. Revisa en el directorio deploy a ver si encuentras el archivo .war de la aplicacion (puede ser un directorio .war tambien)
    3) revisa como es el contexto para acceder a la aplicacion web. Cuando encuentres la aplicacion dentro del directorio deploy puedes abrirla y buscar el archivo web.xml que deberia decirte como acceder. Esta informacion tambien aparece en los logs del servidor si la aplicacion se desplego correctamente
    Saludos

    Like

  14. Gracias salaboy ya he podido levantar el servidor jBPM, voy a revisar ejemplos en la web que me permitan tener una mejor vision de lo que jBPM puede llegar hacer. Tu colaboración a sido muy importante.

    Like

  15. Buenas tardes…

    Me gustaria saber si para jBPM-BPEL hay alguna forma de generar automaticamente las paginas (jsp, jsf…) que contengan los campos de entrada del proceso para asi poder hacer pruebas y no solamente poder verificar el correcto funcionamiento proceso por los TestCase.

    Muchas Gracias.

    Like

  16. Gracias por tu pregunta,
    No es responsabilidad del framework generar pantallas ni mucho menos. Recuerda que el framework solo se encarga de dejarte definir y ejecutar tus procesos.
    Por esto desconzco de un plug in o aplicacion que genere estas presentaciones automanticamente. Por otro lado, generarlas a mano, no deberia ser tan dificil y quedara customizadas a tu caso en particular.
    Saludos

    Like

  17. Hola salaboy,

    Primeramente felicitarte por tu post, en este maremágnum que es Internet cuesta encontrar documentación tan clarificadora y más en español.

    Estoy desarrollando una aplicación web a la que me gustaría dotar de capacidades de workflow a algunos procesos, por ejemplo cambios de estado de cierta documentación según haya sido revisada, aprobada, etc ….
    Por lo que he leído, parece que JBPM me sirve pero me surge una duda.
    Quisiera añadir un módulo a mi aplicación para que sean los propios usuarios los que definan los flujos de trabajo según conveniencia o políticas de empresa.
    ¿Es esto posible con JBPM?

    Gracias de antemano.

    Like

  18. Primero que nada gracias por tu comentario. Gracias por pasar por aquí y escribir una de las preguntas mas frecuentes que la gente se plantea frente a frameworks como jBPM.
    Es importante notar que jBPM es un framework de desarrollo, por lo tanto brindarselo a usuarios finales no seria muy adecuado.
    Mas que nada, el problema esta en que tendrías que dedicarle mucho tiempo a crear una presentación de usuario que les permita crear los flujos que se van a ejecutar.
    Si lees la documentación oficial de jBPM (en ingles) veras que durante el ciclo de desarrollo de aplicaciones que usen jBPM se necesitara de dos roles claves: Desarrollador (que tiene los conocimientos técnicos) y un Analista de negocio, que conoce como es realmente el flujo (sin conocimientos técnicos). En tu caso quieres brindarle la posibilidad de crear flujos a usuarios de negocio, que siempre van a estar mas cerca de un analista de negocio que de un desarrollador, faltándote una parte clave en el desarrollo y ejecución de procesos.
    Con esto no te estoy diciendo que es imposible, pero a nivel desarrollo deberías crear una herramienta que le permita a los usuarios dibujar los procesos y al mismo tiempo agregar comportamiento genérico.
    Algo similar a esto, y totalmente orientado a documentos fue lo que hizo Alfresco, que utiliza jBPM por debajo para exactamente cumplir tu caso de uso. Podrías investigar sobre Alfresco para no re inventar la rueda.
    Saludos, cualquier duda que tengas, estoy a tu disposicion.

    Like

  19. Hola…tengo un problema con bajarme el còdigo fuente del jbpm 3.2.3 ya que necesito personalizarle para un proyecto.. te cuento que le instale el ambiente el Jboss Jbpm 3.2.3 en la cual viene una src que supuse que se encuentra alli el fuente, pero no se encuentra los jsf que en el browers se presenta..Por favor me podrias ayudar donde podria bajarme el fuente el jbpm 3.2.3. De antemano muchas gracias

    Like

  20. Necesitas por alguna razón en particular los fuentes de la 3.2.3? ya que la versión que actualmente se tiende a recomendar es la 3.2.6.SP1. Supongo que ya tienes en producción algo con la versión 3.2.3 y por lo tanto quieres esos fuentes en particular.
    Por otro lado, espero que tu modificación sobre los fuentes sea justificada, sino te estas metiendo en un problema mas grande del que crees. Siempre debes tratar de extender y no modificar los fuentes del framework. Ya que un error en tu código puede hacer que todo el framework se comporte de maneras caóticas e impredecibles. Supongo que sabes lo que estas haciendo. Te dejo el link del repositorio SVN oficial de JBoss.

    http://anonsvn.jboss.org/repos/jbpm/jbpm3/tags/jpdl-3.2.2.GA/

    Ahi puedes hacer directamente svn checkout y obtener todos los fuentes.
    Por otro lado el final de tu pregunta me confunde. Estas buscando los fuentes de la Web Console para adaptarla?

    Si es eso lo que estas buscando, tienes que ver el siguiente link, que se encuentra incluido en al anterior:

    http://anonsvn.jboss.org/repos/jbpm/jbpm3/tags/jpdl-3.2.2.GA/console/

    Pero realmente no se si es lo que andas buscando.. Odio esa consola. 😦
    Saludos!

    Like

  21. Hola, estuve mirando este articulo y esta muy bueno, yo estoy tratando de instalar jboss 5.0.0GA + jbpm3.3.1GA + mysql en eclipse 3.4.1 sobre plataforma windows, y no he tenido buenos resultados, si tuvieras algun manual de ayuda sobre esta instalacion seria de mucha ayuda.

    saludos

    Like

  22. Hola:

    Estoy siguiendo el libro JBPM Developer guide que entiendo escribiste y tengo algunas dudas. En el capítulo 3 “Setting Up Our Tools” viene una descripción de las herramientas que vienen en jbpm. sin embargo cuando descargo la última versión de la página de jbpm, los paquetes que descargo no tiene nada que ver con la estructura que comentas. Será que la estructura ha cambiado de la versión con la que hiciste el libro a la actual?.
    Y la otra pregunta es acerca de si se puede trabajar jbpm en netbeans, incluyendo la parte del diseñador GPD.

    De antemano gracias

    Like

    1. Hola como estas? Claro el libro esta escrito para la version 3.2.6.SP1 si mal no recuerdo. Cualquier version de jbpm 3.x deberia funcionar igual. Escribi el libro con ESA version porque actualmente es la version que mas se ha utilizado en sistemas grandes.
      Si estas probando con la version 4.x Los pasos a seguir son probablemente otros, pero Los conceptos son Los mismos.
      Con respecto a Los plugins solo estan para eclipse (politica de jboss) pero como bien sabras las definiciones de Los procesos son simples xmls. Yo al set usuario de netbeans siempre Los he definido a mano.
      Saludos

      Like

  23. Buenos días, en estos momentos estoy realizando el desarrollo de un bpms realice el diagrama en eclipse utilizando jbpm-jpdl-suite 3.2.2 pero tengo problemas en los pasos siguientes a realizar, me gustaria que dieras unos consejos.

    Muchas gracias

    Like

    1. Buenas Esteban,
      Este post es del 2008, jbpm va por la version 5 ahora. Mi libro llamado jBPM Developer Guide probablemente te pueda ayudar, lo puedes encontrar en amazon.com.
      Saludos

      Like

  24. Hola Salaboy, quiero saber si yo puedo hacer una aplicación en GWT y que pueda usar el motor de workflow de jbpm, de tal manera que al realizar una venta en la pantalla hecha con GWT se cree el flujo y el proceso en el workflow de jbpm, es esto posible o estoy abusando de las funcionalidades de jbpm

    Like

    1. Gustavo, jBPM esta diseniado especialmente para esos casos. La idea de jBPM es ser lo mas independiente posible del entorno donde lo quieras correr, por lo cual se adapta perfectamente a tu escenario. Si ya tenes una aplicacion en GWT vas a tener que definir donde queres correr jBPM, si es dentro de tu aplicacion (del lado del servidor) o en un entorno separado.
      Saludos

      Like

  25. hola otra vez Salaboy, viendo tu respuesta deseo preguntarte existe un ejemplo donde se implemente esto, es JBPM internacionalizable, o solo funciona en inglés, también quiero agradecerte mucho por la información que nos brindas.

    Like

    1. Gustavo, a que te refieres con un ejemplo donde se muestre esto? o sea si tienes tu aplicacion GWT tienes que agregar las dependencias de jBPM y luego usar las APIs normalmente. Cualquier ejemplo que muestre como se usan las APIs te van a servir, siempre y cuando domines GWT, por supuesto. Las aplicaciones que conozco con jBPM son bastante complejas y pueden llegar a confundirte mas que ayudar. jBPM5 es un framework, por lo tanto no esta atando a ningun lenguaje, el que tiene que proveer internacionalizacion es GWT en la UI, no? Si bien hay algunas cosas que se pueden configurar a nivel jBPM conceptualmente tu front end va a ser el encargado de mostrarle al usuario la informacion.

      Saludos

      Like

  26. Hola que tal, felicidades por tu blog y libros, se que ésta entrada esta muy desactualizada pero tengo algunas dudas que espero puedas responderme.

    Actualmente estamos construyento un proyecto que basa sus procesos principales en jBPM 5.3, compre tu libro jBPM5 Developer Guide [eBook] y me fue de mucha ayuda para entender la nomenclatura de BPMN2 y conocer las opciones para diseñar los flujos(Web Designer), lei lo que necesitaba ya que urgia el desarrollo, por lo mismo quedaron algunas cosas medio mal porque no me dio tiempo de refinar piezas. Una de las principales es sobre el manejo de excepciones sobre WorkItems, tengo el siguiente caso:

    Un usuario que tiene asignada una tarea la completa y el flujo continua con WorkItems que hacen lo siguiente:
    ————> |WI(1)|—————
    | |
    |HT(1)| —> —>|WI(3)|—>|HT(2)|—-> ……..
    | |
    —->|WI(2.1)|—->|WI(2.2)|——

    HumanTask(1) : Primer usuario que revisa y pre-autoriza cambios
    HumanTask(2) : Segundo usuario a autorizar cambios
    WorkItem Paralelo (1) : Actualiza estatus de un registro
    WorkItem Paralelo (2.1) : Registra informacion x en la base de datos
    WorkItem Paralelo (2.2) : Registra documentos relacionados a la informacion previa
    WorkItem (3) : Resuelve usuario para tarea HT(2)

    La aplicacion es Web, mi duda es, una vez que HT(1) termina su tarea, programaticamente la finalizo con

    this.htRemoteHt.completeTask(dtoClaim.getIdTask(), prefix, outParams);

    si entendi bien lo que se menciona en el libro, ésta linea de codigo finalizara su ejecucion hasta que todos los workItems hallan finalizado, si se lanza alguna excepcion la puedo cachar aqui y seria una subexcepcion de la clase RuntimeException, por lo que es valido poner lo siguiente:

    try {
    this.htRemoteHt.completeTask(dtoClaim.getIdTask(), prefix, outParams);
    } catch (RuntimeException rtExc) {
    // Manejo de la excepcion
    }

    En el manejo de la excepcion es donde defino el mensaje de error al usuario que se enviará a la pantalla.

    Es valido éste manejo o entendi mal el funcionamiento? de ser asi, cómo podría informar de errores ocurridos dentro de los work items al usuario?

    Todos mis WorkItems son llamadas a WebServices con operaciones muy atomicas.

    Otra duda que tengo es que debo poner en el proceso y que no? Que operaciones debo meter como WorkItems y cuales debo dejarlo de manera directa?

    Saludos y muchas gracias por tu tiempo en leerme.

    Like

    1. Hola Samuel, gracias por escribir.
      Si tu comprensión de la situación es correcta, si bien no es lo que yo recomendaría hacer, si funciona para ti esta bien. Usualmente a la hora de completar una tarea humana, no quieres quedarte esperando a que se completen los N workitems que siguen. Usualmente se recomienda que esos work items sean asíncronos, usando algún mecanismo como el executor mostrado en otro capitulo. Esto te permitirá desacopla la acción de completar la tarea de los posibles errores y tiempo de ejecución de los work items que le siguen.

      Con respecto a tu ultima pregunta acerca que operaciones debes poner en work ítems, yo te recomendaría poner dentro de un workitem a toda interacción que hagas con sistemas externos. No se a que te refieres con “de manera directa”, pero imagino que estas haciendo referencia al uso de script tasks. En ese caso, reitero mi recomendación de siempre usar workitems, ya que los mismos te van a desacoplar el modelo del proceso de tu lógica de integración de sistemas.

      Saludos y espero que sirva!

      Like

  27. Un millon de gracias Muaricio, tu explicacion me ha ayudado mucho, ya revise el capitulo que me comentas para ejecutar las tareas de dominio especifico de manera asincrona y ya los estoy manejando de esta manera a travez del componente “Executor”.

    Lo que no me queda claro es como puedo informarle al usuario sobre errores en los workItems asincronos que se ejecutan, estoy utilizando JSF para mi front-end.

    Abusando de tu amabilidad, podrias compartirme algunas ligas sobre el uso de subprocesos del tipo “Multiple Instances” cuando éstos contienen HumanTask? ya que como lo tengo ahorita defino mi lista de usuarios para las HumanTask(usersList : java.util.List) asi como mi variable que representa un elemento de la lista para cada iteracion(username : java.lang.String), cuando corro una prueba unitaria el log me dice que existen multiples instancias de “username” que estan asociadas a un mismo ID. El actor-ID de la tarea lo defino asi : #{username}. Este proceso lo utilizo para lo siguiente: El usuario registra una reclamacion de un expediente, éste debe ser revisado por cada uno de los involucrados en el expediente, es por ello que créo “n” HumanTask, cuando todos han completado su tarea se debe dar por cerrada la reclamacion, esto lo hago simplemente con un WorkItem que actualiza el estatus de la misma, lo que no estoy seguro es si éste proceso va a ejecutarse UNA VEZ que TODOS los usuarios finalicen su tarea o si se va a ejecutar CADA VEZ que un usuario finalice su tarea. Haciendo pruebas unitarias parece que si se ejecuta solo hasta que TODOS den por terminada su tarea. Aqui mi pregunta es si el manejo es asi o debo crear un mecanismo de validacion definiendo un Scriptask que decremente una variable cada vez que un HumanTask finalice su tarea? Debo agregar un gateway AND convergente a continuacion del subproceso mutliple?

    Tambien si no es mucha molestia podrias compartir alguna liga del uso de timmers? ya que hay una condicion, para el proceso que te describi, cada usuario tiene un tiempo de expiracion, es decir, si no finalizan su tarea despues de 3 dias ésta se debe cancelar y registrar un evento informando que el usuario no reviso la reclamacion, de igual manera ésto lo podria hacer con un scripTask o WorkItem, ya que todas las operaciones son con webservices externos.

    Una utlima duda. ¿Es posible hacer que una tarea cancele a otra?, algo parecido al ejemplo “Evaluation” que acompaña al jbpm-installer, con la excepcion de que en mi caso en cuanto termine su autoevaluacion mery, la tarea de john se cancela o visceversa y el proceso continua.

    Saludos y muchisimas gracias de nuevo por tu tiempo y respuestas.

    Like

  28. Hola que tal, me gustaria saber si para hacer una aplicaci’on con jbpm esta debe ser web solamente, o puede ser desktop. Disculpa es que estoy empezando a estudiar esto de jbpm y estoy u poco desorientado gracias de antemano.

    Like

    1. Hola como estas?
      Si jBPM se puede embeber en cualquier tipo de aplicación. No hay ninguna restricción. Podes hacer una app desktop, una app que funcione solo en una terminal, una app web o hasta una app en otro lenguaje que interactue con jBPM. Asi que no deberías tener ningún problema.

      Te recomiendo aprender Maven para agregar las dependencias de jBPM a tu aplicación y con eso ya bastaría.

      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