28.7. Configuring jBPM in Seam

Seam's jBPM integration is not installed by default. To enable jBPM, you must install a built-in component. You must also explicitly list your process and pageflow definitions. In components.xml:
<bpm:jbpm> 
  <bpm:pageflow-definitions> 
    <value>createDocument.jpdl.xml</value> 
    <value>editDocument.jpdl.xml</value> 
    <value>approveDocument.jpdl.xml</value> 
  </bpm:pageflow-definitions> 
  <bpm:process-definitions> 
    <value>documentLifecycle.jpdl.xml</value> 
  </bpm:process-definitions> 
</bpm:jbpm>
If you only have pageflows, no further configuration is required. If you have business process definitions, you must provide a jBPM configuration, and a Hibernate configuration for jBPM. The Seam DVD Store demo includes example jbpm.cfg.xml and hibernate.cfg.xml files that will work with Seam:
<jbpm-configuration> 
  <jbpm-context> 
    <service name="persistence"> 
      <factory> 
        <bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory"> 
          <field name="isTransactionEnabled"><false/></field> 
        </bean> 
      </factory> 
    </service> 
    <service name="tx" factory="org.jbpm.tx.TxServiceFactory" /> 
    <service name="message" 
     factory="org.jbpm.msg.db.DbMessageServiceFactory" /> 
    <service name="scheduler" 
             factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" /> 
    <service name="logging" 
             factory="org.jbpm.logging.db.DbLoggingServiceFactory" /> 
    <service name="authentication" 
             factory="org.jbpm.security.authentication
                          .DefaultAuthenticationServiceFactory"/> 
  </jbpm-context> 
</jbpm-configuration>
Note that jBPM transaction control is disabled — JTA transactions should be controlled by either Seam or EJB3.

28.7.1. Packaging

There is no well-defined packaging format for jBPM configuration and process or pageflow definition files. While other standard packaging formats may be developed, the Seam examples are packaged into the root of the EAR, and follow this structure:
my-application.ear/
    jboss-seam.jar
    lib/
       jboss-el.jar
       jbpm-jpdl.jar
    META-INF/
        MANIFEST.MF
        application.xml
    my-application.war/
        META-INF/
            MANIFEST.MF
        WEB-INF/
            web.xml
            components.xml
            faces-config.xml
            lib/
                jsf-facelets.jar
                jboss-seam-ui.jar
        login.jsp
        register.jsp
        ...
    my-application.jar/
        META-INF/
            MANIFEST.MF
            persistence.xml
        seam.properties
        org/
            jboss/
                myapplication/
                    User.class
                    Login.class
                    LoginBean.class
                    Register.class
                    RegisterBean.class
                    ...
    jbpm.cfg.xml
    hibernate.cfg.xml
    createDocument.jpdl.xml
    editDocument.jpdl.xml
    approveDocument.jpdl.xml
    documentLifecycle.jpdl.xml