4 Replies Latest reply on Dec 26, 2007 4:22 PM by Marcus Schmidke

    Seam 2.0.CR1, jBPM and custom entity process variables

    Marcus Schmidke Newbie

      Hello all,

      now that I've understood how to bootstrap Seam's jBPM support, I'm immediately facing the next problem.

      The root of the problem is that I want to use my own EJB3 entites as jBPM process variables. I've done some research before, because this is not very well documented yet, but finally I was successful.

      But now I fear that my way how to use jBPM interferes with Seam's way how to support jBPM.

      What I have done with respect to jBPM:

      - in my own persistence.xml, I reference jBPM's hibernate.cfg.xml so that my EntityManager knows about jBPM's entity
      - in the same file, I tell Hibernate to register a Session Factory in JNDI
      - in jbpm.cfg.xml I tell jBPM to use a JtaDbPersistenceServiceFactory, referencing my Hibernate Session Factory JNDI name
      - in every JbpmContext I create, I inject a Hibernate Session from my EJB3 EntityManager (jbpmContext.setSession()).

      The result is that jBPM uses the EJB3 entity manager for it's work, and there is absolutely no problem in mixing jBPM entities and my own entities, for example as process variables.

      Now the point where Seam comes into play. Since Seam has some support for jBPM, I wanted to try it, but was unsuccessful. I configured:

      <bpm:jbpm>
       <bpm:process-definitions>
       <value>Argos3Freigabeprozess/processdefinition.xml</value>
       </bpm:process-definitions>
      </bpm:jbpm>
      


      , but on startup I get:

      09:17:28,787 ERROR [[/Argos3Web]] Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener
      java.lang.RuntimeException: could not deploy a process definition
      [...]
      Caused by: org.hibernate.TransactionException: Could not register synchronization for container transaction
      at org.hibernate.transaction.CMTTransaction.begin(CMTTransaction.java:45)


      I am accustomed to this error message; it usually shows up if I forget to inject the Hibernate Session into a jBPM context. This tells me that my way of configuring jBPM is not compatible with Seam's way of using jBPM.


      Any ideas??


      Marcus.