Spring與Jbpm的整合
1,整合的必要性:
流程中對業務數據操作與流程操作需要在同一個事務中實現
例如:請假流程——請假人提交請假申請,流程跳轉到下一個節點任務(JBPM數據);記錄請假人信息到用戶表(業務數據)
一個操作,可能會同時涉及到JBPM數據和業務數據,如果用兩個事務,可能會導致業務與流程的數據不一致。
2,整合圖
整合原理:
(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實體數據庫表。
JBPM4.4部署在Tomcat6以上的版本jar包沖突 http://www.linuxidc.com/Linux/2014-04/99476.htm
JBPM工作流開發指南 PDF http://www.linuxidc.com/Linux/2014-06/103823.htm
JBPM流程實例(PV)Process Variables http://www.linuxidc.com/Linux/2014-06/102859.htm
JBPM流程實例(PI)Process Instance http://www.linuxidc.com/Linux/2014-06/102858.htm
JBPM流程部署校驗 http://www.linuxidc.com/Linux/2014-06/102860.htm
JBPM 的詳細介紹:請點這裡
JBPM 的下載地址:請點這裡