About Me!

Disclaimer :

The content of this blog reflects my personal opinions about software and stuff!

Based in London, UK

Informatics Engineer (Mendoza University – Argentina)

2013

Speaker at JudCon Brazil 2013 – Two Sessions about jBPM and the jBPM Console NG

Working on the Drools and jBPM project, my main task this year is to work on the development of the jBPM Console NG.

2012

Drools & jBPM5 – Senior Software Engineer at Red Hat / JBoss UK

2011

Github account : https://github.com/salaboy

Master Branch Profile: https://www.masterbranch.com/developer/salaboy

JBoss Community Profile: http://community.jboss.org/people/salaboy21

jBPM 5 contributor/commiter

Drools 5.0, 5.1 and 5.2 contributor/commiter since 2008 (Drools Flow, Drools Expert and now Drools VSM/GRID)

CTO @ Plug Tree

Speaker & Comittee @ JBoss in Bossa Brazil 2011
Speaker @ Rules Fest 2011

Spearker @ Jazoon 2011 Speaker

Jboss Community Award Winner (New Features – Bug Fixes)

Speaker @ JUDCon 2011, Boston: Drools and jBPM5 in real life

Speaker @ Drools and jBPM5 Bootcamp in NY and Washington DC, May 2011

Speaker/Organizer @ JUG Argentina

2010

Member of the Business Rules Expert Group (http://brexperts.ning.com/)

Speaker at Java One Brazil 2010 (December – Sao Paulo, Brazil)

Speaker at JBoss In Bossa (May – Sao Paulo, Brazil)

Speaker and contributor at Drools Health Care Meeting, San Diego, USA.

JBoss Consultant at OSDE (Argentinian Health Care Company).

2009

Author of the book jBPM Developer Guide for Pactk Pub

Co-founder at JBug Argentina (JBoss User Group Argentina: www.jbug.com.ar)

Red Hat Official Trainer for JBoss jBPM courses, Buenos Aires.

Attendee at Java One 2009, San Francisco, USA.

Attendee at October Rules Fest, Dallas, USA.

Attendee and contributor to Drools Boot Camp, San Francisco, USA.

Drools Training Session (Drools 5.x), Las Vegas, USA.

JBoss Consultant at OSDE (Argentinian Health Care Company).

2008

Red Hat Official Trainer for JBoss jBPM courses, Buenos Aires.

JBoss SSO contributor/commiter.

JBoss Consultant for a Red Hat Partner in Argentina.

Technologies that I’ve used:

JBoss Drools, JBoss jBPM, Apache Camel, Infinispan, HornetQ, RIO Project, JBoss Application Server (4.x – 5.x), JBoss Portal, Hibernate (JPA), Java EE 5, Java ME, etc.

94 thoughts on “About Me!

  1. Cordial Saludo

    lo felicito por el blog, me ha ayudado mucho a entender un poco mas de jBPM, estoy interesado en conocer si van a realizar otros cursos en Argentina, me pueden informar cuanto valen?, soy de Colombia y estoy dispuesto a ir por alla, aca en Colombia se necesita esta tecnologia pero no hay consultores, ni se entiende el concepto en la parte mas tecnica.

  2. salaboy says:

    Gracias por las felicitaciones, voy a consultar si hay alguna otra fecha para el curso de jBPM en particular, la verdad que a mi no me han informado nada. Por lo general este tipo de cursos se hacen On Demand, por lo cual no veria ningun problema si hay gente interesada. Habria que ver si en Colombia tambien hay gente interesada para ver si puede armarse un curso especial si se junta un cupo minimo. Con respecto al precio vere si puedo averiguar algo, pero la verdad que tampoco es un tema que yo manejo.
    Saludos.. Espero haber aclarado un poco las cosas.. Si quieres dejame tu contacto personal para seguir la conversacion de manera privada.

  3. Luis says:

    Queria felicitarte por el blog, esta barbaro y me esta siendo de gran ayuda, ya que estoy estudiando una materia para la facu y tengo justo todo lo q necesito aca…!! Osea no solo felicitarte sino q agradecerte por este blog…
    Saludos!!

  4. salaboy says:

    Muchas gracias por tu comentario. Espero seguir contribuyendo y ayudando en temas relacionados con JBoss y estos frameworks que uso dia a dia.
    Prometo una ráfaga de post en este próximo mes para poner cosas mas actuales.

  5. Hola, me permito felicitarte porque según leo eres un apasionado de todo lo relacionado con JBoss. Me atrevo a formularte una pregunta relacionada con Drools. Se puede integrar Drools y Alfresco y si Drools es el entorno de desarrollo para todo el tema de JBPM. En la actualidad me encuentro explorarndo todo el tema de Alfresco y según entiendo el motor de BPM es precisamente JBPM. Espero no estar diciendo tonterias. Por tu ayuda muchas gracias…

  6. salaboy says:

    Gracias por tu comentario.
    Exactamente Alfresco hasta la versión 3 que creo que es la mas reciente al momento, utiliza jBPM para modelar lo que ellos llaman Advanced Workflows. Estos te permiten crear flujos complejos para administrar, revisar, o manipular tus documentos.
    Por otro lado esta Drools, que de apoco esta empujando para ganar parte del terreno que ha ganado jBPM en el campo de los BPM systems.
    Integrar Drools dentro de Alfresco seria tarea fácil, si lo que quieres es utilizar a Drools como Motor de inferencia con reglas de negocio. Ahora si lo que quieres es hacer uso de las características de BPM de Drools 5.0, lo veo mas complicado. Aunque charlando con la gente de Alfresco, me entere que habían hecho las cosas bastante amigables para que cuando haya algún nuevo framework de BPM lo pudieran adaptar fácilmente.
    Espero que mis comentarios te sirvan, cualquier cosa espero tu próxima pregunta.
    Saludos

  7. Andrei Hernandez says:

    Log Jboss Drools

    13:03:35,281 ERROR [STDERR] RuleAgent(andrei) INFO (Wed Jun 03 13:03:35 CDT 2009
    ): Configuring package provider : URLScanner monitoring URLs: http://localhost:
    8085/drools-guvnor/org.drools.guvnor.Guvnor/package/andrei/andrei_deploy
    13:03:38,394 INFO [STDOUT] PackageName: andrei
    13:03:38,547 INFO [STDOUT] PackageVersion: andrei_deploy
    13:03:38,548 INFO [STDOUT] PackageIsLatest: false
    13:03:38,548 INFO [STDOUT] PackageIsSource: false
    13:03:39,167 ERROR [STDERR] RuleAgent(andrei) INFO (Wed Jun 03 13:03:39 CDT 2009
    ): Applying changes to the rulebase.
    13:03:39,167 ERROR [STDERR] RuleAgent(andrei) INFO (Wed Jun 03 13:03:39 CDT 2009
    ): Creating a new rulebase as per settings.
    13:03:39,169 ERROR [STDERR] RuleAgent(andrei) INFO (Wed Jun 03 13:03:39 CDT 2009
    ): Adding package called andrei
    13:03:39,880 ERROR [STDERR] com.thoughtworks.xstream.converters.ConversionExcept
    ion: tns:queries : tns:queries : tns:queries : tns:queries
    —- Debugging information —-
    message : tns:queries : tns:queries
    cause-exception : com.thoughtworks.xstream.mapper.CannotResolveClassExceptio
    n
    cause-message : tns:queries : tns:queries
    class : org.drools.server.ServiceRequestMessage
    required-type : org.drools.server.ServiceRequestMessage
    path : /knowledgebase-request/tns:queries
    line number : 3
    ——————————-

    Esquema que envia Intalio

  8. Andrei Hernandez says:

    Saludos, Quiero consultarte una duda que tengo, espero puedas ayudarme. Actualmente estoy trabajando con Drools 5.0.1 y estoy tratando de counsumir las reglas que he creado desde guvnor, las planeo cunsumir usando REST de acuerdo a la documentacion (instalado drools-server, crear un agente, crear el archivo .properties y colocarlo en ‘WEB-INF/classes’) la aplicacion que uso para consumir el servicion es Intalio. Pero al tratar de llamar el servicio me marca un error, he estado revisando por todos lados y no se que pueda estar mal. Ojala pudieras ayudarme ya que esto nos esta generando mucho retrazo.

    De antemano Gracias

    archivo .properties

    #——————————————————————
    newInstance=true
    file=/home/andrei/Escritorio/andrei_andrei_deploy.pkg
    url=http://localhost:8085/drools-guvnor/org.drools.guvnor.Guvnor/package/andrei/andrei_deploy
    poll=30
    name=andrei
    #——————————————————————-

  9. Andrei Hernandez says:

    <tns:inOutFacts

  10. Andrei Hernandez says:

    Perdon creo que puse mis comentarios invertidos

  11. Simon Montañez says:

    Antes que nada mis agradecimientos por este gran blog es de mucha importancia en la documentación open source sobre todo en Jbpm para mi que estoy empezando, y pues aprovecho para hacer una pregunta estoy “camellando”:) en Jbpm y tengo un problema: cuando voy a crear una instancia de un proceso la crea en estado suspendida y cuando trato de enviar un signal termina la instancia. ¿algún indicio de que puede ser?
    Agrego que es sobre una aplicación jsf+spring

    La verdad no he podido saber cual es mi error, este es el código

    GraphSession graphSession = jbpmContext.getGraphSession();
    ProcessDefinition processDefinition = graphSession.getProcessDefinition(processDefinitionId);
    ProcessInstance processInstance = new ProcessInstance(processDefinition); processInstance.getRootToken().signal();
    jbpmContext.save(processInstance);

    Gracias por su tiempo.

  12. Sebastian says:

    Salaboy, como va.
    Bueno,Como te habia comentado en post anteriores, me tire al agua con Jbpm 4.0 y la verdad, todo a la perfeccion, muy intuitivo, facil de usar, lujo.
    Te consulto quiza podés tirarme algun pique.
    Queremos integrar Alfresco en nuestra aplicacion para que funcione con jbpm, queria saber si contas con algun manual en español o guia para esto, ya que seria de gran ayuda. :)

    Saludos y gracias.

    Sebastian.

    • salaboy says:

      Como va Sebastian, que bueno que estés usando jBPM4 y todo vaya para adelante.
      Con respecto a Alfresco, yo el anio pasado estuve jugando con el y Alfresco internamente usa jBPM (si la versión 3.2.x) así que no hace falta que hagas mucho.. solo aprender a usarlo.
      Con respecto a la documentación, es muy complicado conseguirlo, pero lo que te puedo contar es que si analizas como funciona, para mi fue bastante fácil darme cuenta como esta embebido y como tienes que hacer para utilizarlo.
      Te recomiendo que busques en la wiki de Alfresco por algo llamado AMP (Alfresco Module Package) que sin duda son la forma recomendada de crear tus extensiones e integraciones contra Alfresco.
      Saludos!

  13. Sebastian says:

    Buenisimo, calculo que voy a hacer eso si, con jbpm4 fue igual,la javadocs y user Guide me salvaron la vida , seguramente este bien documentado, q es lo que importa.
    Bueno, luego te cuento como me fue.

    Saludos y gracias.

    Sebastian.

  14. Sebastian says:

    Salaboy,como va, yo volviendo por estos lados, luchando contra el Jbpm 4 y sus particularidades.

    Mira, quiza me podes dar una mano.
    Tengo una situacion en la que tengo forks anidados, es decir lanzo un fork con tres tareas,imaginemos tarea 1 , tarea 2 y tarea 3,. la tarea 1 y 2 convergen en un join llamemoslo Join (1 .2) a modo de ejemplo. La tarea 3 aun no necesita ser cerrada.
    Continuando con la ejecucion finalizada la tarea 1 y 2 , se lanza una tarea intermedia,llamemosla (intermedia) q esta intermedia converge en un nuevo fork2 (tarea 4 , tarea 5) q se cierran en un Join, pero sobre el join este, tambien converge la tarea 1, la cual lance al ppio.
    Bueno, la cuestion es esta, el ultimo join respeta q se complete la tarea 1 y las tareas 4 y 5) como debe ser, pero el tema es q cuando lanza el fork 2.
    lanza las tareas 4 y 5 , pero me repite la tarea 4, nose porq.
    Internamente nose como funciona, y no lo he podido resolver.
    Si viste algo similar o se te ocurre algo. estare agradecido.
    Si queres te puedo adjuntar un png del proceso, asi se entiende mal, ya q soy bastante malo redactando :S

    Saludos.

    Cbaz.

  15. Halvarez says:

    Yo estatoy tratando de integrar alfresco sobre jboss-portal y me estoy guiado por un manual que me encontre, pero hay un paso que me dice:
    Copiar a $JBOSS_HOME/MiServidor/lib el jar de jakarta-commons-el.jar
    y no encuentro por ningun lado el jar de jakarta-commons-el.jar
    Por si alguien me puede ayudar
    Gracias

  16. Eva says:

    Hola,

    Felicidades por el blog! El post de tareas dinámicas me fue super util :)

    Tengo un problema, estoy usando jBPM 3.2.6, mi workflow tiene que modelar la siguiente situación:
    Cuando el usuario finaliza una tarea (de un nodo), el flujo tiene que esperar un tiempo X (que dependerá de una fecha dinámica) antes de pasar a la siguiente tarea (de otro nodo). Otro caso de modelado de mi flujo es crear una tarea ‘aislada’ cada X tiempo.

    He posteado como lo he modelado y los problemas que tengo en: http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4267764#4267764

    Si alguien puede ayudarme :)

    Muchas gracias

    Saludos!!

  17. Jay says:

    Good morning,

    I am not sure if you are in the US or in Argentina but found your website on Google and saw that you must have good experience with JBPM. One of my client in San Diego, California, US is looking for a strong JBPM/JBOSS SEAM consultant for 3 days work, let me know if you or someone you know would be interested in this opportunity.

    Thanks and regards,

    Jay Munj
    Business Development Manager
    Information Gateways, Inc.
    Toll Free: 888-770-0190 x 102
    Cell – 248-495-4534
    jaym@Infogateway.com

  18. Hola.. Felicitaciones por tu blog, es excelente.

    Queria preguntarte si has utilizado jBPM con Seam?..
    estoy aprendiendo jBPM y drools buscando una mejor opcion para los procesos en la compañia donde trabajo. y de verdad que tengo pocos o muy pocos conocimientos de estas herramientas.. si pudieras orientarme un poco, te lo agradeceria. Saludos y reputo, excelente blog

  19. salaboy says:

    Hola como estas?
    que version de jBPM estas tratando de usar?
    Usar Seam/Weld y jBPM junto con drools son una excelente opción. El gran problema es la curva de aprendizaje que no es del todo feliz y puede llevarte un tiempo para aprender todos los conceptos.
    Pero te puedo decir que vas por buen camino. Si puedo ayudarte con algo mas concreto.. encantado.
    ejemplos con Seam no tengo actualmente pero debería ponerme a escribir sobre eso.
    Saludos.

  20. Hola, gracias por tu rapida respuesta.

    Bueno las herramientas que he podido utilizar son jBPM 4. y si, tienes razon, aprender drools me ha costado un poco, creo q sobretodo por las 4 versiones que hay (expert, guvnor…), con jBPM he podido hacer varios ejemplos, pero ninguno el cual me haga ver que tanto puedo hacer con el. Por cierto aqui te dejo un link con el cual puedes ver una integracion de seam y jBPM

    http://chrisrod.wordpress.com/2008/10/06/jbpm-seam-en-07-pasos-un-simple-tutorial-para-ver-la-integracion-del-jbpm-en-seam/

    Vi tu post de Fork Vs. Join. (muy buena la forma de explicar). yo estoy utilizando ahorita esos conceptos, pero no tengo claro como manejar el codigo java. (osea el signalExecutionById para el Fork por ejemplo) estoy realizando el ejemplo de esta pagina https://ame.endesa.es/confluenceame/display/PP4JENDESA/Ejemplo+jBPM pero el ultimo de ellos, tiene un Fork y no explican como usarlo a nivel de codigo. estaba buscado tu post donde explicas Fork y Join a nivel de codigo, pero no lo consegui.

    Saludos.

  21. Anylu says:

    Buenas Salaboy,

    te comento que estoy iniciandome con jBPM debido a un proyecto de la empresa para la cual trabajo, pero realmente tengo muchas dudas y no lo veo muy aplicable a nuestras necesidades, sin embargo insisten en usarlo. Y dado tu experiencia me gustaría, que de ser posible, me pases tu email asi puedo comentarte mis dudas y me des tu punto de vista sobre el uso o no de jBPM.

    Gracias y Saludos.-

    • salaboy says:

      Por supuesto, mi mail esta en la seccion de contact me. Igualmente me parece mucho mas valioso que pongas tus dudas aca en los comentarios, asi personas que se encuentran en situaciones similares a las tuyas pueden ver la respuesta y aprovecharla.
      Saludos

  22. CamiloM says:

    Buenas Salaboy, AYYYUUUDDAAA

    Tengo un gran lio con estos temas. Estoy tratando des de una clase java ejecutar el workflow y ejecutar las reglas pero no me ha funcionado. Contexto: Archivo .xls con las reglas del negocio. Archivo .rf con el flujo y ejecuto todo en una aplicación j2ee. El problema es: cargo una session de BD (ksession = JPAKnowledgeService.loadStatefulKnowledgeSession(idProceso, knowledgeBase, null, env)), adiciono el conocimiento (ksession.insert) y ejecuto el flujo (ksession.fireAllRules()), pero cuando ejecuto éste ultimo metodo, el flujo se ejecuta con los valores anterior y no actualiza el conocimineto, y no he podido hacerlo..

    Le agradezo inmensamente

    • salaboy says:

      Buenas Camilo, Perdon por la demora, estoy recien volviendo de un viaje y no he tenido tiempo de responder en tiempo y forma.
      Leyendo tu pregunta me imagino que estas escribiendo tus reglas en formato XLS, las estas compilando y las tienes agrupadas usando ruleflow-group, es esto cierto? Como son tus reglas? estas llamando a startProcess()? que nodos tiene tu proceso?
      Saludos

  23. ArmandS says:

    Hola Salaboy, he estado siguiendo el blog y leyendo tus aportes a la comunidad hispana sobre jbpm & drools, me parece sencillamente maravilloso tu trabajo, solo quería saber si hay alguna versión de tu libro jbpm user guide en Español
    Saludos

    Gracias

  24. ArmandS says:

    Perdón quise decir “JBPM Developer Guide”, habrá alguna versión en español ??

    Slds

    • salaboy says:

      Armands, Como estas? Muchas gracias por escribir, pero no lamentablemente no hay una versión en español del libro. Es mucho trabajo escribirlo y luego traducirlo. Como la audiencia es bastante internacional directamente escribo en ingles. Ahora antes de fin de anio sale la versión nueva del libro sobre jBPM5. Saludos

  25. [...] Para mas información sobre Mauricio Salatino visitar su blog:http://salaboy.com/about/ [...]

  26. Freddy Moran says:

    Hola Salaboy.

    Primero contarte que te sigo hace mucho, he leido mucho tu blog y tus publicaciones, gracias por el gran aporte a la comunidad.
    Soy consumidor fiel de JBOSS, actualmente tengo ya algo de experiencia en SEAM y Drools, la integracion yo diria que no fue dificil ni facil. Ahora intento y estoy muy interesado en utilizar JBPM 5, he logrado ejecutar los ejemplos, etc Pero aun no he logrado descubrir como integrarlo con SEAM 2 y en realiad esa es mi necesidad, tener SEAM 2 y poder realizar el flujo de procesos con JBPM 5, pero como te dije no lo consigo, he leido mucho y nada que lo consigo, creo que lo importante es que la documentacion de SEAM dice que la integracion con JBPM 5 vendra desde la version 3 de SEAM. Tienes algun ejemplo de esto.

    Desde ya muchas gracias por tu apoyo.

    • salaboy says:

      Freddy, por lo que tengo entendido la integración viene con seam 3, deberías revisar seam 3 para ver como viene la integración ya que ellos se están haciendo cargo de la misma. Ni bien tenga un ejemplo lo voy a estar compartiendo por este medio.
      Saludos

  27. sivadmp says:

    Que buen blog, me sirvio mucho para aprender JBPM, pero quisiera aprender mas, yo resido en La Paz-Bolivia y quisiera tomar unos cursos sobre esta tecnologia en forma presencial, pero por la distancia me es imposible, por los menos quisiera que exista unos cursos virtuales. gracias te deseo todo lo mejor

  28. Mauricio says:

    hola, estamos teniendo problemas con la instalacion en jboss 5.1 de jbpm 5.2
    en particular existen clases de los .jar que estan en los .war de jbpm que se solapan con las del servidor, no nos ha funcionado editando tanto el jboss-web.wml del .war en cuestion, para q se fije en las clases del .war primero y luego las del servidor.

    le agregamos a nuestro jboss-web.xml del .war jbpm-gwt-console-server.war lo siguiente
    (claro que falta la apertura y cierra de tags, es porque no lo muestra correctamente en esta pagina)

    slf4j-jboss-logging.jar es el .jar q nos da conflicto en el .war jbpm-gwt-console-server.war

    class-loading java2ClassLoadingCompliance=”false”
    loader-repository slf4j-jboss-logging.jar:loader=jbpm-gwt-console-server.war
    loader-repository-config java2ParentDelegation=false loader-repository-config
    loader-repository
    class-loading

    gracias (escribi algo similar en el post, jugando con jbpm 5, prefiero q me responda aqui)

  29. Tobias Mauricio says:

    Hola Mauricio como estas? yo fui alumno tuyo en el 2008. Nos distes un curso de jbpm. En ese entonces estaba trabajando en el Banco Credicop. Nose si recordarás. Bueno al margen de esto queria hacerte una consulta ya que estoy lidiando con algo que me vendría barbaro para un proyecto en el que estoy trabajando. Estoy tratando de utilizar jbpm sobre jboss 6.1 y no le puedo encontrar la vuelta para que me funcione. No encontré mucha info al respecto con esta version de jboss en particular. Tenes idea de algo al respecto? donde puedo conseguir alguna documentación piola? o que otra herramienta que no sea jbpm hay en el mercado que me pueda servir para armar workflows que trabaje sobre jboss 6.1? La verdad me sería de gran utilidad que me sepas ayudar. Hoy buscando sobre esto en la web me topé en un foro con un comentario que habias hecho vos y ahi recordé de tus azañas con jbpm en el curso y por eso aquí estoy consultandote. Bueno desde ya te agradezco un monton! Hasta pronto.

    • salaboy says:

      Buenas
      Por lo general, todo esta para jboss 5 o 7. No estoy muy al tanto de jboss 6, pero si estas teniendo algún problema ponelo en los foros, alguien seguro que puede ayudarte.
      Saludos

  30. Buckhard says:

    Saludos Salaboy felicitaciones por su magnífico trabajo con el Jbpm Framework, tengo entendido que Ud. está a cargo del Developer Guide JBPM 5.x, le comento que tenemos acá en Ecuador un equipo de desarrollo con un proyecto bien interesante en el que pensamos usar Jbpm 5, el equipo es bien entusiasta y hemos seguido cada uno de sus posts estudiando la manera de sacarle el máximo provecho a la tecnología, estamos muy interesados en que Ud. nos capacite en este tema, cómo pudiéramos ponernos de acuerdo y llegar, si le interesa a un acuerdo para una capacitación, conferencias o algo…

    Saludos

    Buck

    • salaboy says:

      Hola Buck,
      Lamentablemente ahora no puedo dedicarme a dar cursos. Trabajando para Red Hat, no puedo dar consultoria ni trainings. Mi libro de jBPM5 sale ahora antes de Octubre, ya esta publicado en Amazon, asi que te recomendaria que siguieran eso como bibliografia para usar el proyecto. En el caso de que tengan dudas puntales les recomiendo los foros, yo tratare de hacer un buen trabajo para corregir problems y agregar nuevas funcionalidades al motor como parte de mi trabajo actual.
      Saludos

  31. Hola Salaboy, gracias por tu respuesta acerda de mi inquietud sobre el Web Designer. Hice un post en el blog del owner de Web Designer y aguardo su respuesta, disculpme que ants no me haya dado cuenta que podia escribirte en castellano, me di cuenta cuando lei los posts, que tenga un buen dia!

  32. Fabricio says:

    No se como llegue hasta aca, pero no te la puedo ni creer !!!!, de jugar al futbol los sabados en el CUC, mira donde terminaste!!, te felicito hermano y la verdad que espero que estes de primera.
    Mucho Saludos
    Fabricio Moreno

  33. SOFIA says:

    Hola salboy, queria saber la forma de contactarme con Ud. necesito soporte de JBM

  34. Ramses Hernández says:

    Hola Salaboy excelente tu blog, estoy muy interesado en el tema de jBPM, soy de México y me gusta mucho aprender nuevas cosas, vi tu libro anunciado en amazon pero actualmente dice que esta fuera de stock y en la página de la editorial dice que sale hasta diciembre, tendras alguna idea de para cuando estará disponible ya que me interesa mucho aprender mas del tema.

    Saludos y sigue así.

    • salaboy says:

      Hola Ramses, un gusto. Como dice en amazon y en la editorial, el libro va a estar para principios de Diciembre, actualmente esta en la ultima fase de revision tecnica, asi que ya esta casi listo para salir. Creo que en amazon y en la editorial pueden hacer un pre-order para que se los envien ni bien salga.
      Saludos

  35. Hola Salaboy, en que etapa esta el jBPM Designer? Yo insisto que es critico para la adopcion expansiva de la herramienta, es lograr que los analistas funcionales junto con los usuarios puedan describir un proceso por fuera del Eclipse (el analista usando el Designer y el usuario observando y sugiriendo via desktop sharing) y una vez obtenido el OK del sponsor, poder enviar la representacion del proceso en XML por email o carpeta compartida, etc. para que los desarrolladores se hagan cargo de ahi en adelante. No creo en absoluto que sea critico tener un repositorio ni dependencias con otra herramieenta como Drools. Lo que tambien considro clave es que el Designer sea liberado en un formato “one-click image” que implique deszipear un archive, arrarncar un app server (Tomcat o JBoss AS) y listo, apuntar al URL y arriba, sin depender de altos skills tecnicos.

    • salaboy says:

      Hola Carlos, jBPM Designer esta avanzando a pasos agigantados. Actualmente estamos trabajando en integrar de manera definitiva el Designer con el disenio de la nueva consola de administracion de procesos y tareas. En este caso lo que se busca es proveer el entorno unificado para el modelado y la ejecucion de los procesos de negocio. Con respecto a lo de Drools y lo del repositorio son distintos puntos de vista, ya que desde el punto de vista del proyecto el repositorio y el motor de reglas son puntos claves y fundamentales en la infraestructura. Muchas veces es dificil de entender cuando no se conocen las tecnologias, pero con una vision a futuro estos componentes son pilares en lo que se esta desarrollando.
      Coincido totalmente con los puntos que mencionas sobre el modelado y sobre como compartir con los desarrolladores y analistas los modelos. Siempre estamos abiertos a contribuciones, por lo cual si tu puedes definir cada una de las caracteristicas a implementar sobre la ultima version y las mismas estan de acuerdo con la vision del proyecto se proprondan internamente y se implementaran.
      Gracias por tu comentario

  36. ccrosetti says:

    Gracias Salaboy por tu pronta respuesta. Entiendo todo lo que decis pero creo que el hecho de salvar un modelo en un archivo (bien podria ser desde la vist json del modelo) le daria cabida a una comunidad que desde mi punto de vista es la que hace a la tecnologia atractiva par audiencias menos tecnicas, vean los progresos que estan haciendo los de K2 para entendre mi punto de vista. As todo, felicito por las mejoras a la human task que es fundamental.

    • salaboy says:

      Carlos, gracias por la sugerencia, voy a revisar eso que me comentas. No se si estoy entendiendo bien tu comentario, pero el Web Designer ya puede hacer todo eso que decis. Podes guardar el xml del BPMN2 el cual se puede compartir con los desarrolladores, podes guardar el PNG o el SVG del proceso y tambien en formato JSON. El XMl es el que se puede ejecutar y justamente estamos construyendo la nueva generacion de herramientas donde el mismo usuario va a poder configurar el ambiente y los detalles de alto nivel que el proceso necesita.
      Saludos

  37. Mark Coble says:

    Hello. I had a couple of questions about an error I am getting when doing a mvn clean install on the ng-showcase. if you can let me know if you provide support that would be great! Thanks Mark.

    • salaboy says:

      Hi Mark, what kind of problems are you experiencing? This is no support, but if you ask questions I will try to answer them here. I appreciate if you post “Console” related questions in the console posts and not in the About Me section, so people also interested in your question and the answer can find them quickly.

      Cheers

  38. Smitty says:

    Good Afternoon,

    I was wondering, what is the easiet was to cancel a timer in the jbpm 5.2 workflow?

  39. rhpatel99j says:

    Hello Salaboy excellent your blog, I am very interested in the subject of jBPM and Drools, I’m from Bangalore(India) and I love learning new things in Drools and jBPM. I have one question regarding drools decision table. Normally we run rules first and then take a some action on that but i want first some parameter from decision table and based on that i fire mysql query and that gives me some data which i want to pass in drools so is there any way to get data from decision table before it executed.

    • salaboy says:

      Not sure to understand your use case, but you can always parse the decision table using the same libraries that we are using internally to get information out from it.
      If I don’t remember wrong we use Apache POI for doing that parsing: http://poi.apache.org

      Hope this helps

  40. Andre Schikore says:

    Hi Salaboy,
    I ‘ve just read your great book “jbpm5-developer-guide” and now I want to install the examples that I ‘ve downloaded. Unfourtunately I receive an error from MAVEN since I cannot find any hint about the MAVEN-Repo that is uses by the parent POM:

    Caused by: org.apache.maven.project.ProjectBuildingException: POM ‘com.salaboy:jbpm5-developer-guide’ not found in repository: Unable to download the artifact from any repository
    com.salaboy:jbpm5-developer-guide:pom:1.0-SNAPSHOT
    ….
    Witch repositioy location do I have to put into my list of repos?
    Thanks in advance
    Andre

  41. Hi Salaboy,
    I’m trying to get in touch with you regarding on demand / on site training for jbpm 6 and drools
    Could you please contact me?

    Thanks

    • salaboy says:

      Hi Ricardo,
      This is the right place to contact me. But I’m not able to do trainings, I’m a jBPM/Drools core developer in Red Hat, so my job is to work 24/7 on the projects everyday.

  42. I definitely understand.
    In that case can you recommend a reputable company or individual that offers such training. It’s been tough to find that on the web, and Red Hat does not offer that training either.
    Also, when and where is your next workshop after Barcelona?

    Thanks

    • salaboy says:

      I’m trying to do a workshop on every city that I visit, so there is no other workshop planed right now. Where are you based?

      Try googling “drools jbpm training”, what exactly are you trying to learn? I would recommend the forums if you have specific questions.

      Cheers

  43. We are based in Atlanta, Georgia
    Not trying to learn any specific topics right now, we are seasoned developers but new in the JBPM arena. We are looking for a course that can get us up to speed as quickly as possible and also provide us with some guidance and strategies when designing our own workflows.

    Regards

  44. […] pasado martes tuve la oportunidad de asistir al Workshop sobre Drools y jBPM impartido por Mauricio Salatino, Pere Fernandez y Walter Medvedev y organizado por la BCN […]

  45. Armando says:

    Saludos Salaboy y felicitaciones, por tu libro JBPM 5 Developer Guide, el cual me encuentro leyendo, como el anterior muy claro y preciso, solo que hay un pequeño tópico en el cual me quedan dudas (Persistence and Transactions cap. 8) y aun no he podido lograr en mi projecto Java EE 6, al cual intento integrar el motor JBPM versión 5.4.0…

    Verás, logré integrar al pom las dependencias adecuadas, así como el plugin de jBPM para Eclipse, hasta este paso si mi idea hubiese sido solo orquestar servicios “Perfecto”, como bien dices en tu libro ya hubiese logrado mi propósito, pero en mis procesos de negocio necesito incorporar “userTask”, o sea esperas asíncronas en el proceso, por lo que necesito (y es aquí justo donde radica el problema) configurar la unidad de persistencia JPA/Hibernate para persistir los estados del proceso.

    Aun no me queda claro si debo crear las entidades para JPA y HumanTasks o como en versiones anteriores hay un script en el archivo build.xml de construcción de Ant que las genera de forma automática.

    Y si puedes ayudarme con la definición en Java para la unidad de persistencia del ksession, pues en el contexto de Java EE no necesito definir entityManagerFactory ni el TransactionManager como claramente definiste en los ejemplos, pues ya en este contexto se encuentran definidos.

    Sin más gracias adelantadas…

    Disculpa si más adelante en el libro aparece definido este tópico

    Armando.

  46. Armando says:

    I think the community would appreciate very much a standard Java EE integration with BPM, out-of-the-box without any special setting.

    I think it’s still complex an integration of this type…

    This integration should be part of standard Java EE.

    As a module that is part of the whole package and you install it and you use it according to your needs or business requirements, but the integration should be complete, sharing everything: including benefits management context by the container, JTA, JPA, etc…

    Regards

    • salaboy says:

      Hi Armando,
      If you take a look at the new version of jbpm (jBPM6) you will see that a lot of effort has being put into providing the jBPM JBoss Modules for the integration that you mention. As you can imagine the java EE specification doesn’t include anything related to BPM, and for that reason jBPM cannot be part of the specification. It will be nice to see that in the future.

      You need to remember that jBPM is agnostic to the platform (Java SE, Java EE, Java ME) so if you want to use the core of the framework you will need to provide your own “adapters” or resources to make it work in your environment.
      For now you can take a look at the jBPM JBoss Modules which will give what you need.

      Hope this helps.

      • Armando says:

        Thanks for your response…

        Salaboy, today for many enterprises the Java EE technologies are not enough in order to manage its business processes. They demand BPM solutions very frecuently. When this happens you immediately can imagine the nightmare that represent the integration of a solution like this.

        That’s why when you looking for a BPM solution, the target is the Java EE & BPM integration.

        Another problem is to change the default H2 DB that comes with JBPM version 5.x is not as simple as it used to be with the 4.x version, especially if the database is not on your local PC, as in my case particularly, Oracle database server.

        I dream of the day when you can use a BPM solution within a Java EE project as naturally as resources such as JPA, EJB, etc. are used. Or at time of installation / configuration you may have the ability to select the option to use the JBPM module if necessary.

        Regards

        Armando.

  47. sandra says:

    hi Salaboy, I am new to jbpm6. I have to design a workflow which is a basic customer registration ,initialy a request is created and then it goes for two level approval.MY queries are
    1)How can I assign the human task to a group.
    2)This workflow is going to be integrated with jsp and Informatica MDM.I just know MDM ‘s work is to load the data in the database without duplication.The query I have is how can I integrate this Informatica MDM with my jbpm.
    3)This is regarding users,if I want to add 100 users who will be in respective groups for the Approval purpose in the workflow.How can I add them in jbpm.The way which I know is adding them in users file.But if I want to add multiple users,how can I add them.

    I hope you have got my queries .It will be a great help if you can give your comments.

    • salaboy says:

      Hi Sandra,
      Regarding your questions:
      1) you can assign a task to a group of people but setting the GroupId property in the web designer
      2) If you can access MDM(no idea what MDM is) via the database you will need to write a service to get the data from there and send that to the processes, maybe as process variables or you can write that code inside a WorkItemHandler (which is basically an external connector for external systems)
      3) You can integrate jBPM with a database.. so then you can add all your users in a table of the database and configure jBPM to access those users.

      Hope this helps.

  48. Bill says:

    I was wondering if it was possible to drive a web site from JBPM anonymously? Specifically, i’d like to develop the logic and task forms within the designer. In my use case a user is not explicitly named, but can be uniquely identified at run time (cookie). I understand the Task services are plug-able but don’t really understand how that works. Any ideas or examples you can point me to?

    Thanks!

    • salaboy says:

      Hi, you should take a look at the examples, maybe you don’t need to use User Tasks and instead just create a new WorkItemHandler to represent your “pages”.
      Do you want to define the flow of a web application or something like that?
      Regards

      • Bill says:

        Defining the flow of a web application is exactly what I’m looking to do. Since it’s not a ‘new’ idea, do you know of any sample apps that may have done this already? i’m looking to build a quick prototype.

        Thanks!

  49. Buenos dìas Mauricio, soy de La Plata y compré tu libro sobre jBPM5 que está muy bueno y me resultó muy util.
    Te hago una consulta, estoy trabajando en un proyecto y estoy usando jBPM5 con JBOSS 7, es una aplicación industrial, donde los procesos se ejecutan y avanzan por eventos externos, al estilo de tu ejemplo del Emergency Hospital, de manera que tengo concurrencia todo el tiempo. Por cada “unidad bajo fabricación” en una linea de producción, creammos una instancia del proceso, y luego los evento van evolucionando el proceso a medida que el proceso de fabricación avanza.
    Estamos experimentando problemas que se producen solo cuando hay concurrencia, da excepciones aleatorias de varios tipos (entity closed, que la transacciòn ya fué previamente comiteada, etc.), y te digo que es solo cuando hay concurrencia, porque si semaforeo el procesamiento de los eventos, de manera de procesarlos secuencialmente, el problema desaparece. He leído en Internet que el jBPM5 tiene “issues” con el manejo concurrente de las transacciones. Es esto así? Si fuera así, que podemos hacer en el mientras tanto se corrige?. Porque como te podrás imaginar, no puedo poner esta app. en producción porque no tiene un comportamiento estable.
    Desde ya muchas gracias por tu ayuda, estamos un tanto desesperados!

    • salaboy says:

      Buenas Macerlo,
      Gracias por escribir. No es que jBPM tenga problema con la concurrencia, es que por lo general las implementaciones se hacen sin conocer mucho como funciona la infraestructura. Para aislar los contextos de los procesos solo tienes que crear distintas instancias de las sesiones que los hostean. En jBPM6 ya se provee un mecanismos que maneja esto de manera automática, pero si estas en jBPM5 vas a tener que crear un mecanismos que se adapte a tus requerimientos particulares.
      Eso debería solucionar todo tipo de problemas.

      Saludos por alla.

      PD: estaria muy bueno que escribiéramos un articulo de lo que están haciendo. Suena a un buen caso de uso, ya que los sectores industriales por lo general se ven beneficiados por estas herramientas.

      • Hola Mauricio, muchas gracias por la rapidez de tu respuesta. Con muchísimo gusto escribiremos ese artículo cuando lo tengamos productivo, es una aplicación muy interesante, porque son todos eventos “de campo”. Quedo comprometido para escribir el artículo y compartirlo contigo.
        Yendo a la implementación, nosotros recibimos eventos que tienen internamente el identificador de la unidad bajo fabricación, ese businessKey nos funciona como nuestra “BusinessEntity”. La primera vez que llega un evento con un businessKey nuevo, creamos la sesión de conocimiento, y persistimos la BusinessEntity cuyos fields son:

        private int sessionId;
        private long processId;
        private String businessKey;
        private String processName;

        Cuando viene un evento que tiene una businessKey existente, hacemos un load de la instancia del proceso y lo ejecutamos. Osea que como tu dices, estamos ejecutando los procesos en sesiones separadas. Los eventos vienen de una interfase REST, de manera que cuando un HTTP request entra, el thread que atiende ese request es el mismo que crea a sesión para crear un proceso o para recuperarlo en caso de que exista, y en ese thread context se corre el proceso. Yo ni siquiera creo el thread, porque eso lo maneja el contenedor WEB sobre el que funciona la interfase REST. Todo corre en un JBOSS 7.

        Hay que hacer algo mas diferente que esto que brevemente te he mencionado?

        Muchas gracias y saludos!

  50. salaboy says:

    Eso que describís cubre bastante, pero el problema va a ser si muchos eventos llegan para la misma session. Cada cuanto llegan esos eventos? O sea para cada “unidad bajo fabricación” que tipo de eventos estas recibiendo y cada cuanto?

    • salaboy says:

      En el caso en que los eventos lleguen mas rápidos de lo que el evento anterior se tarde en procesar (levantar de la db, ejecutar y commitear los cambios), vas a tener que usar algo como el executor para manejar los eventos, es decir, crear un job que se encargue de hacer el signal y hacer retry en caso de que algo vaya mal.

    • Hola Mauricio, eso está controlado, no puede haber mas de un evento con la misma businessKey al mismo tiempo, porque eso indiicaría que la unidad bajo fabricación (por ejemplo un televisor) está en dos puestos distintos, y eso es físicamente imposible. Pero además, por si de todas maneras ocurriera, hay un semáforo que serializa el acceso. O sea que llega un evento con una businessKey y el próximo llegara 20 o 30 segundos después; si hay concurrencia de eventos con distintas businessKey porque, por ejemplo, hay varios televisores ensamblándose en la linea de producción.

      • Cuando sometemos a la aplicación a una prueba de stress con JMeter metiendole eventos en forma periódica, aparece el siguiente tipo de error:
        javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not delete: [org.jbpm.persistence.processinstance.ProcessInstanceInfo#65838]

      • Esto pasa cuando hacemos el commit de los cambios al finalizar el procesamiento del evento:

        public class JbpmEventManager implements StatefulEventProcessor {

        public void execute(StatefulEvent event) {

        UserTransaction utx = jtaTransactionManager.getUserTransaction();
        try {
        if(utx.getStatus()==Status.STATUS_NO_TRANSACTION && utx.getStatus()!=Status.STATUS_ACTIVE){
        utx.begin();
        }else{
        throw new BusinessException(“Error”);
        }
        //knowledgeSessionService.processEvent(event) llama signalEvent!!
        StatefulKnowledgeSession ksession = (StatefulKnowledgeSession) knowledgeSessionService.processEvent(event);
        utx.commit();
        }catch(InterruptedException ie){

        throw new BusinessException(“Ha ocurrido un error.Si el problema persiste, comuniquese con el Area de Sistemas”);
        }
        }
        }

  51. salaboy says:

    Podes usar pastebin.net y pegar toda la exception esta: javax.persistence.PersistenceException: org.hibernate.exception.LockAcquisitionException: could not delete: [org.jbpm.persistence.processinstance.ProcessInstanceInfo#65838]

    Para ver donde esta ocurriendo el problema, en que lugar quiere borrar ProcessInstanceInfo

    • salaboy says:

      Pregunta: porque están haciendo el manejo de las transacciones manualmente? si están dentro de un contenedor?

      • Hola Mauricio, lo del locking lo encontré en Internet, es un problema cuando usas Oracle, se soluciona creando un índice en la tabla EVENTYPES en la columna INSTANCEID, Te paso el link https://access.redhat.com/site/solutions/202953 .
        Con eso hemos solucionado el problema del locking.
        Igualmente, seguimos teniendo problemas a la hora de hacer dispose(), nos dice algo asi como que no se puede hacer dispose() de una sesion que fué “dispuesta2 previamente.

      • Lo de las transacciones lo acabamos de sacar, el tema es que estamos usando jBPM5 con Spring, no debería haber problemas no?

  52. salaboy says:

    Porque están usando spring adentro de jboss? No se como habran configurado spring para que funcione con jBPM5 pero hay que tener cuidado ahi.
    Igualmente si estas con el problema de que una session se esta tratando de disposear dos veces, es bastante inofensivo, no debería causarte ningún problema a nivel aplicación ni runtime. Podes ver rápidamente quienes están tratando de disposear la session? Como para estar seguros de que no hay ningún comportamiento extraño?

  53. Hola Mauricio, probé el jBPM5 fuera de JBOSS, en una app.de consola con bitronix como manejador de transacciones, y lo sometí a una prueba de stress levantandole 100 threads, y cada uno de ellos crea una sesion y luego una instancia del proceso, y funciona perfecto, no se me presentó ningún problema de concurrencia.

    Ahora, dentro de JBOSS seguía teniendo problemas, con excepciones raras (no se puede hacer dispose de una sesion previamente “disposed”, que no puede completar la transaccion, etc.)

    Entonces bajamos y miramos el código de DROOLS, y encontramos que en uno de los test aparece la siguiente linea de programa:

    PersistenceContextManager pcm = (PersistenceContextManager)ksession.getEnvironment().get(EnvironmentName.PERSISTENCE_CONTEXT_MANAGER);
    ksession.dispose();
    pcm.dispose();

    Aparentemente con el agregado del pcm.dispose() se arregló el tema, y te digo aparentemente porque tendríamos que dejarlo mas tiempo y probarlo en condiciones aún mas estresantes como para hacer una aseveración definitiva.

    La pregunta del millón es, que hace el agregado de esa linea de código, y si es tan clave porqué no está documentada en los ejemplos, incluso en tu libro, y si vos crees que la falta de esta linea puede provocar problemas a la hora de someter a jBPM5 a una alta carga transaccional concurrente.
    .
    Un abrazo.

    • salaboy says:

      Marcelo, hace ya dos años que no trabajo con la version 5, asi que habría que revisar.
      Por lo unico que me preocuparía es por el uso de timers or cosas asíncronas que haga uso del persistenceContextManager de alguna manera y vos se lo estés cerrando a la fuerza.
      SI el problema que estabas enfrentando era que no se podia hacer dispose de una session que ya había sido disposeada, como te dije anteriormente puedes ignorar ese problema. Si tenias algún otro problema por concurrencia, un mecanismo de retry debería solucionar el problema (como por ejemplo el componente executor).
      Abrazo

      • Justamente Mauricio, una de las ramas del proceso tiene un WorkItemHandler, que no se finaliza a propósito, para que el flujo quede detenido ahí (no se llama a completeWorkItem), y se persiste el workItemId. Luego en otra rama del proceso, cuando llega un evento, desde otro WorkItemHandler, se recupera en workItemId y se hace el completeWorkItem, para que el flujo de la otra rama continúe y termine el proceso.
        De manera que claramente tenemos un handler asincrónico.
        Porque vinculas el tema de cosas asíncronas con el persistenceContextManager, no entiendo la relación entre ambas y por lo tanto los cuidados que habrìa que tener.
        Un abrazo.

  54. Ricardo Riveros says:

    Hi Salaboy: I would like to get your opinion on the following:
    I have a web service that needs to run rules built on Business Central, there seems to be 2 options:
    1) fetch the remote rules on Business Central thru the maven interface and execute them within the program (web service)
    2) run the rules directly on Business Central using the RemoteRestRuntimeFactory()

    I’m trying to decide what would be the better aproach to run rules?
    In terms of performance, scalability and simplicity
    What would be the biggest pro’s and cons of both approaches?

    Your comments would be greatly appreciated

    Thanks

    • salaboy says:

      Hi Ricardo,
      first of all thanks a lot for writing here.
      I will definitely recommend you to go for the first option, because you will have full control of the execution environment and configurations.
      The second option RemoteRestRuntimeFactory is currently supporting all the jBPM use cases which cannot be enough for running your rules in the best way possible.
      As we speak, there is being developed a Drools Rule Engine server which will be delivered in the next release of the community project. it will be similar to the RemoteRestRuntimeFactory but it will support most of the Drools use cases. Until that time you should just get the rules and create your environments based on your requirements.

      Hope this helps.

      Regards

  55. Ricardo Riveros says:

    Gracias Mauricio por tus recommendaciones,

    Buena suerte mañana con el partido con Suiza ….

  56. Germán Muñoz says:

    Hola Mauricio, estoy trabajando con JBPM y me gustaría poder integrar el editor en una web externa, no he encontrado ejemplos para poder hacer esto y se me esta haciendo complicado, cualquier sugerencia o ayuda será muy bien recibida, de antemano gracias por tu atención.

    • salaboy says:

      German, gracias por escribir, estoy 100% seguro de que se puede, no se que tan fácil sera en la practica, pero la misma consola esta embebiendo al modelador de procesos como si fuera una aplicación externa, asi que tu aplicación debería hacer algo similar.
      Te recomendaria revisar el repositorio: github.com/droolsjbpm/jbpm-designer para ver como esta hecha la integracion con nuestra plataforma web.
      Espero que sirva.
      Saludos

  57. Germán Muñoz says:

    Gracias Mauricio por tu recomendación, te cuento como me fue cuando tenga algo armado, de nuevo muchas gracias por darte el tiempo para responder.

    Saludos.

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

Follow

Get every new post delivered to your Inbox.

Join 944 other followers

%d bloggers like this: