自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談jBPM4與Spring整合的2種方式

開發(fā) 后端
要知道如何將jBPM4與Spring整合,可以先了解jBPM4的IOC容器,本文將簡(jiǎn)單介紹下jBPM4與Spring整合的2種方式。

如果不了解jBPM4的IOC容器,可以先看ronghao的這篇文章http://www.javaeye.com/topic/381607,是介紹jBPM4的IOC容器的。下面我們介紹jBPM與Spring整合的2種方式:

第一種:手工將SessionFactory放入jBPM4中。

第1步:更改jbpm.spring.default.cfg.xml配置文件,將下面的部分注釋掉

  1. <!--  
  2. <hibernate-configuration> 
  3. <cfgresourcecfgresource="jbpm.hibernate.cfg.xml"/> 
  4. </hibernate-configuration> 
  5.  
  6. <hibernate-session-factory/> 
  7. --> 

注釋的部分是在jBPM4中創(chuàng)建了sessionFactory,而我們只需要一個(gè)sessionFactory。既然要將jBPM4與Spring的整合,那就希望由Spring來(lái)統(tǒng)一管理sessionFactory和事務(wù),在Spring的配置文件中構(gòu)造一個(gè)sessionFactory。ProcessEngine是jBPM4的Facade模式,一切由它與外部交互,

第2步:在Spring配置文件中寫一個(gè)bean:

  1. <beanidbeanid="processEngine"class="com.family168.jbpm.ProcessEngineFactoryBean"> 
  2. <propertynamepropertyname="sessionFactory"ref="sessionFactory"/> 
  3. </bean> 

第3步:在ProcessFactoryBean中注入SessionFactory:

  1. publicvoidsetSessionFactory(SessionFactorysessionFactory){  
  2. this.sessionFactory=sessionFactory;  

第4步:在ProcessFactoryBean中創(chuàng)建一個(gè)SpringConfiguration,然后將sessionFactory放入SpringConfiguration中,再?gòu)腟pringConfiguration得到processEngine,代碼如下:

  1. publicvoidafterPropertiesSet(){  
  2. SpringConfigurationcfg=newSpringConfiguration(jbpmConfigurationLocation);  
  3. cfg.setApplicationContext(applicationContext);  
  4.  
  5. cfg.setSessionFactory(sessionFactory);  
  6. this.processEngine=cfg.buildProcessEngine();  

然后我們的工作就可以開展了,可以從processEngine得到所有的service。比如:

  1. ProcessEngineprocessEngine=(ProcessEngine)ctx.getBean("processEngine");  
  2. RepositoryServicerepositoryService=processEngine.getRepositoryService();  


第2種:獲得Hibernate的SessionFactory。

第1步:與第一種方式的第1步一樣。

第2步:更改jbpm.tx.spring.cfg.xml配置文件:

將<standard-transaction-interceptor/>改成<spring-transaction-interceptorcurrent="true"/>然后將<transaction/><hibernate-session/>改成<hibernate-sessioncurrent="true"/>這部分修改是將jBPM4創(chuàng)建的spring事務(wù)和hibernate的session改成從當(dāng)前的ThreadLocal中獲得session和事務(wù)。

第3步:在Spring配置文件中寫bean,processEngine和template:

  1. <beanidbeanid="jbpmConfiguration"class="org.jbpm.pvm.internal.cfg.SpringConfiguration"> 
  2. <constructor-argvalueconstructor-argvalue="jbpm/jbpm.cfg.xml"/> 
  3. </bean> 
  4.  
  5. <beanidbeanid="processEngine"factory-bean="jbpmConfiguration"factory-method="buildProcessEngine"/> 
  6.  
  7. <beanidbeanid="jbpmTemplate"class="com.family168.jbpm.JbpmTemplate"> 
  8. <propertynamepropertyname="processEngine"ref="processEngine"/> 
  9. <propertynamepropertyname="dataSource"ref="dataSource"/> 
  10. </bean> 

processEngine直接使用factory-bean指向jbpmConfiguration,也就是org.jbpm.pvm.internal.cfg.SpringConfiguration,并從SpringConfiguration的buildProcessEngine中獲得。

jbpmTemplate主要是控制事務(wù),在processEngine外面創(chuàng)建事務(wù),這樣使用的時(shí)候會(huì)先調(diào)用jbpmTemplate,再調(diào)用processEngine,否則它會(huì)說(shuō)事務(wù)沒(méi)有啟動(dòng)。在jbpmTemplate中注入processEngine:

  1. publicvoidsetProcessEngine(ProcessEngineprocessEngine){  
  2. this.processEngine=processEngine;  

這里我的理解是我們?cè)谏厦嬉呀?jīng)將事務(wù)改成從當(dāng)前的Threadlocal中獲得,所以jBPM4是必須當(dāng)前有事務(wù),如果我沒(méi)有創(chuàng)建事務(wù)的話,在使用processEngine時(shí)就會(huì)說(shuō)事務(wù)沒(méi)有啟動(dòng)。所以我們就封裝了一個(gè)jbpmTemplate,如果我的理解有誤還請(qǐng)大家指出。

第1種整合方式我會(huì)提供一個(gè)例子,第2種整合方式之后可以看我們的jBPM-Side里的控制臺(tái)。

【編輯推薦】

  1. Struts2教程:攔截器概述
  2. Struts2教程:上傳任意多個(gè)文件
  3. Struts2教程:在Action類中獲得HttpServletResponse對(duì)象
  4. Struts2教程:使用Validation框架驗(yàn)證數(shù)據(jù)
  5. Struts2教程:使用validate方法驗(yàn)證數(shù)據(jù)
責(zé)任編輯:彭凡 來(lái)源: javaeye
相關(guān)推薦

2009-06-24 14:57:03

jBPM4架構(gòu)

2009-06-25 17:13:51

jBPM與Spring

2009-06-26 13:51:49

jBPM4高級(jí)圖形執(zhí)行

2009-06-26 09:32:35

jBPM4基本活動(dòng)

2009-06-26 09:15:31

jBPM4基本活動(dòng)

2009-06-23 15:30:20

jBPMMySQL

2009-03-06 14:34:31

StrutsHibernateSpring

2009-06-01 10:28:03

SpringOSGi整合

2009-06-23 18:18:13

SpringHibernate

2011-11-25 10:25:27

SpringJava

2009-06-19 18:26:38

Spring事務(wù)配置

2012-07-17 09:16:16

SpringSSH

2011-02-28 13:51:30

Spring事物配置

2009-07-14 14:41:33

Webwork與Spr

2011-02-28 11:19:12

雙絞線布線

2009-07-09 18:24:00

WebWork與Spr

2014-12-31 14:09:23

xml解析

2018-04-28 15:51:33

Mybatis方式傳遞

2020-05-11 13:03:03

SR-TEIP路由器

2020-02-10 15:50:18

Spring循環(huán)依賴Java
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)