第一种配置:src下提供jbpm.cfg.xml、jbpm.hibernate.cfg.xml、bean.xml
jbpm.cfg.xml
jbpm.cfg.xml
jbpm.cfg.xml
<jbpm-configuration>
<import resource="jbpm.default.cfg.xml" />
<imp ort resource="jbpm.tx.spring.cfg.xml" />
<import resource="jbpm.jpdl.cfg.xml" />
<import resource="jbpm.bpmn.cfg.xml" />
<import resource="jbpm.identity.cfg.xml" />
<import resource="jbpm.businesscalendar.cfg.xml" />
<import resource="jbpm.console.cfg.xml" />
<!-- <import resource="jbpm.jobexecutor.cfg.xml" /> -->
<process-engine-context>
<string name="spring.cfg" value="beans.xml" /><!-- spring.cfg的默认值为"applicationContext.xml" -->
</process-engine-context>
</jbpm-configuration>
jbpm.hibernate.cfg.xml</jbpm-configuration>
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost/jbpm</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.format_sql">true</property>
<!--<property name="hibernate.current_session_context_class">thread</property>-->
<mapping resource="jbpm.repository.hbm.xml" />
<mapping resource="jbpm.execution.hbm.xml" />
<mapping resource="jbpm.history.hbm.xml" />
<mapping resource="jbpm.task.hbm.xml" />
<mapping resource="jbpm.identity.hbm.xml" />
</session-factory>
</hibernate-configuration>
bean.xml</hibernate-configuration>
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:jbpm.hibernate.cfg.xml" />
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionMana ger">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/jbpm" />
<property name="username" value="root" />
<property name="password" value="123" />
</bean>
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionMana
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
</bean>
需要说明:
第二种配置:src下只提供jbpm.cfg.xml和bean.xml
- jbpm.cfg.xml文件中引入<imp
ort resource="jbpm.tx.spring.cfg.xml" />意思是把jBPM4.3的事务交由Spring来管理,这时你不能再引入<imp ort resource="jbpm.tx.hibernatecfg.xml" />。 - jbpm.cfg.xml文件中spring.cfg值是你配置sessionFactory的Spring文件,默认applicationContext.xml。
- jbpm.hibernate.cfg.xml 文件中hibernate.dialect中设置为org.hibernate.dialect.MySQLInnoDBDialect,关于这一点网上其它帖子说的已经很清楚了。
- jbpm.hibernate.cfg.xml 文件中不要配置这个属性:<property name="hibernate.current_session_context_class">thread</property>笔者一开始就是因为配置了这个选项,导致集成的时候总是报出各种异常,弄的笔者糊里糊涂的。最后在jBPM的社区中看到了一个帖子才知道怎么回事:原来在Hibernate集成Spring的时候hibernate.current_session_context_class的值必须被设置为SpringSessionContext的相应值,而这 个工作,LocalSessionFactoryBean自动的就帮我们完成了,所以我们不必再额外配置了。
jbpm.cfg.xml
<jbpm-configuration>
<imp
ort resource="
jbpm.default.cfg.xml" />
<imp ort resource="jbpm.tx.spring.cfg.xml" />
<imp
ort resource="
jbpm.jpdl.cfg.xml" />
<imp
ort resource="
jbpm.bpmn.cfg.xml" />
<imp
ort resource="
jbpm.identity.cfg.xml" />
<imp
ort resource="
jbpm.businesscalendar.cfg.xml" />
<imp
ort resource="
jbpm.console.cfg.xml" />
<!--
<imp
ort resource="
jbpm.jobexecutor.cfg.xml" />
-->
<process-engine-context>
<string name="
spring.cfg" value="
beans.xml" /><!--
spring.cfg的默认值 为"applicationContext.xml" -->
</process-engine-context>
</jbpm-configuration>
beans.xml
</jbpm-configuration>
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="
hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<!--<prop key="hibernate.current_session_context_class">thread</prop>-->
</props>
</property>
<property name="mappingResources">
<list>
<value>jbpm.repository.hbm.xml</value>
<value>jbpm.execution.hbm.xml</value>
<value>jbpm.history.hbm.xml</value>
<value>jbpm.task.hbm.xml</value>
<value>jbpm.identity.hbm.xml</value>
</list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionMana ger">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/jbpm" />
<property name="username" value="root" />
<property name="password" value="123" />
</bean>
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionMana
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
</bean>
需要说明:
- 第二种配置的目的就是把第一种配置中jbpm.hibernate.cfg.xml中配置放进bean.xml中。其它的说明同上。