要解决的问题
spring与jbpm的整合
* 由spring容器产生processEngine
* jbpm的事务交给spring处理
整合步骤:
* 导入jbpm的jar包
* 删除db和hibernate的jar包
* 在config下创建一个配置文件
config/jbpm
jbpm.cfg.xml
jbpm.hibernate.cfg.xml
* jbpm.cfg.xml文件中
<importresource="jbpm.tx.hibernate.cfg.xml" />改为
<importresource="jbpm.tx.spring.cfg.xml" />
统一由spring处理事务,由下边的配置可以看出是通过创建新的session从而开启事务的
* jbpm.hibernate.cfg.xml文件中
* 数据库的连接配置
<propertyname="current_session_context_class">thread</property>
这行配置不能写,不能从当前线程中获取session 否则报如下图错误
* OA项目本身的表的映射文件
* jbpm的表的映射文件
* spring的配置文件
* hibernate配置文件的路径修改
<beanid="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<propertyname="configLocation">
<value>classpath:jbpm/jbpm.hibernate.cfg.xml</value>
</property>
</bean>
* 让spring产生processEngine
<bean id="springHelper"class="org.jbpm.pvm.internal.processengine.SpringHelper">
<propertyname="jbpmCfg"value="jbpm/jbpm.cfg.xml"></property>
</bean>
<beanid="processEngine" factory-bean="springHelper"
factory-method="createProcessEngine" />
注意jbpm.cfg.xml配置文件的路径
测试public void testProcessEngine(){
ProcessEngine processEngine=(ProcessEngine) context.getBean("processEngine");
}