JBPM与Spring整合

Spring与Jbpm的整合

1,整合的必要性:
流程中对业务数据操作与流程操作需要在同一个事务中实现

例如:请假流程——请假人提交请假申请,流程跳转到下一个节点任务(JBPM数据);记录请假人信息到用户表(业务数据)

一个操作,可能会同时涉及到JBPM数据和业务数据,如果用两个事务,可能会导致业务与流程的数据不一致。

2,整合图

JBPM与Spring整合

整合原理:

(1)使用Spring容器IOC提供的BeanFactory功能初始化JBPM的configuration。

(2)使业务数据与JBPM公用sessionFactory。

3,Spring与Jbpm整合的核心:
 (1)由Spring容器产生processEngine

 (2)Jbpm的事务交给spring处理

4,整合步骤
  * 导入jbpm的jar包

  * 删除db和hibernate的jar包

  * 在config下创建一个配置文件

        config/jbpm

                jbpm.cfg.xml

                jbpm.hibernate.cfg.xml

  * jbpm.cfg.xml文件中

<import resource="jbpm.tx.hibernate.cfg.xml" />

改为

 <import resource="jbpm.tx.spring.cfg.xml" />

统一由spring处理事务,由右边的配置可以看出是通过创建新的session从而开启事务的

* jbpm.hibernate.cfg.xml文件中

* 数据库的连接配置

<propertyname="current_session_context_class">thread</property>

这行配置不能写,不能从当前线程中获取session

* OA项目本身的表的映射文件

* jbpm的表的映射文件

* spring的配置文件

* hibernate配置文件的路径修改

 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="configLocation">
          <value>classpath:jbpm/jbpm.hibernate.cfg.xml</value>
      </property>
 </bean>

* 让spring产生processEngine

 <bean id="springHelper"class="org.jbpm.pvm.internal.processengine.SpringHelper">
      <property name="jbpmCfg"value="jbpm/jbpm.cfg.xml"></property>
 </bean>
 <bean id="processEngine" factory-bean="springHelper"
      factory-method="createProcessEngine" />

注意jbpm.cfg.xml配置文件的路径

5,总结:

JBPM与SSH整合——让Spring管理生成ProcessEngine,让Hibernate生成JBPM实体数据库表。

JBPM 的详细介绍:请点这里
JBPM 的下载地址:请点这里

相关推荐