jBPM and Seam

Version 1

    We want to share our experience with jBpm combined with Seam in this forum. You can find almost the same text in the Seam 2 forum:


    We are using Seam 2.2 with jBPM 3.3  in our traffic management project and we have included different workflows and decisions handled  by the jBPM/Drools modules.

    Hopefully the following observations are useful to others:


    1. The quality of the jBPM documentation isn't at the same level as the Seam  documentation, so you need a lot of additional Googling to get your  stuff working. The additional (free) Seam in Action chapter helps a lot,  but see warning 4
    2. if you're doing something which is not really PersonTask related,  it's better to work directly with the jBpm API, because it saves you a  lot of headache; The integration of Seam with the jBpm non-Task stuff isn't that good  and - to be honest - the jBPM API's are very easy to use.
    3. Never (I mean never) use the jBPM core to store domain  objects/values, Searching for them in the database is very slow (tables  are NOT indexed). You can do different things to solve the problem of  retrieving processes based on domain object; (a) change some core  classes of jBPM (b) add indexes to the tables yourself, (c) add simple searchtableswhich contains the relation between the domain object and the  process/task.
      1. Replace or remove the default logging of jBPM, all examples of  jbpm.cfg.xml include this (even Seam in Action), but it is  the worst thing you can have in your production environement. We found  that out the hard way.
      2. Try to use the workflow as asynchronous as practically possible, jBpm  is not really fast, and slows down your rerender process if it's in the  normal requiest/response chain. Combine it with Seam events and  rich.push and you see miracles happen.