黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

jBPM4與Spring整合的2種方式

系統(tǒng) 2181 0

要知道如何將jBPM4與Spring整合,可以先了解jBPM4的IOC容器,如果不了解的可以先看ronghao的這篇文章 http://www.iteye.com/topic/381607 ,是介紹jBPM4的IOC容器的。下面我們介紹jBPM與Spring整合的2種方式:
?? 第一種:手工將SessionFactory放入jBPM4中。
?? 第1步:更改jbpm.spring.default.cfg.xml配置文件,將下面的部分注釋掉

Xml代碼?
  1. <!-- ??
  2. ??? < hibernate-configuration > ??
  3. ????? < cfg ? resource = "jbpm.hibernate.cfg.xml" ? /> ??
  4. ??? </ hibernate-configuration > ??
  5. ??
  6. ??? < hibernate-session-factory ? /> ??
  7. ?-- > ??
      部分是在jBPM4中創(chuàng)建了sessionFactory,而我們只需要一個sessionFactory。既然要將jBPM4與Spring的整合,那就希望由Spring來統(tǒng)一管理sessionFactory和事務(wù),在Spring的配置文件中構(gòu)造一個sessionFactory。ProcessEngine是jBPM4的Facade模式,一切由它與外部交互, 
? 第2步:在Spring配置文件中寫一個bean:
    
Xml代碼
  1. < bean ? id = "processEngine" ? class = "com.family168.jbpm.ProcessEngineFactoryBean" > ??
  2. ???????? < property ? name = "sessionFactory" ? ref = "sessionFactory" /> ??
  3. ? </ bean > ??
      <bean id="processEngine" class="com.family168.jbpm.ProcessEngineFactoryBean">
        <property name="sessionFactory" ref="sessionFactory"/>
 </bean>
    


第3步:在ProcessFactoryBean中注入SessionFactory:

Java代碼?
        public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
  }
    


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

Java代碼?
      public void afterPropertiesSet() {
        SpringConfiguration cfg = new      SpringConfiguration(jbpmConfigurationLocation);
        cfg.setApplicationContext(applicationContext);

        cfg.setSessionFactory(sessionFactory);
        this.processEngine = cfg.buildProcessEngine();
    }
    


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

Java代碼?
       ProcessEngine processEngine = (ProcessEngine) ctx.getBean("processEngine");
    RepositoryService repositoryService = processEngine.getRepositoryService();。
    


第2種:獲得Hibernate的SessionFactory。
? 第1步:與第一種方式的第1步一樣。
? 第2步:更改jbpm.tx.spring.cfg.xml配置文件:
? 將?????
????

?
Xml代碼 復(fù)制代碼
  1. < spring-transaction-interceptor ? current = "true" ? /> ??
      <spring-transaction-interceptor current="true" />
    


? 然后將
??

Xml代碼 復(fù)制代碼
       <transaction/>
    <hibernate-session/>
    


? 改成

Xml代碼
       <hibernate-session current="true"/>
    


這部分修改是將jBPM4創(chuàng)建的spring事務(wù)和hibernate的session改成從當(dāng)前的ThreadLocal中獲得session和事務(wù)。
第3步:在Spring配置文件中寫bean,processEngine和template:

Xml代碼
      <bean id="jbpmConfiguration" class="org.jbpm.pvm.internal.cfg.SpringConfiguration">
        <constructor-arg value="jbpm/jbpm.cfg.xml" />
    </bean>

    <bean id="processEngine" factory-bean="jbpmConfiguration" factory-method="buildProcessEngine" />

    <bean id="jbpmTemplate" class="com.family168.jbpm.JbpmTemplate">
        <property name="processEngine" ref="processEngine"/>
        <property name="dataSource" ref="dataSource"/>
    </bean>
    


processEngine直接使用factory-bean指向jbpmConfiguration,也就是org.jbpm.pvm.internal.cfg.SpringConfiguration,并從SpringConfiguration的buildProcessEngine中獲得。
jbpmTemplate主要是控制事務(wù),在processEngine外面創(chuàng)建事務(wù),這樣使用的時候會先調(diào)用jbpmTemplate,再調(diào)用processEngine,否則它會說事務(wù)沒有啟動。在jbpmTemplate中注入processEngine:
???

Java代碼?
      public void setProcessEngine(ProcessEngine processEngine) {
        this.processEngine = processEngine;
    }
    


??? 這里我的理解是我們在上面已經(jīng)將事務(wù)改成從當(dāng)前的Threadlocal中獲得,所以jBPM4是必須當(dāng)前有事務(wù),如果我沒有創(chuàng)建事務(wù)的話,在使用processEngine時就會說事務(wù)沒有啟動。所以我們就封裝了一個jbpmTemplate,如果我的理解有誤還請大家指出。
?? 第1種整合方式我會提供一個例子,第2種整合方式之后可以看我們的jBPM-Side里的控制臺。

jBPM4與Spring整合的2種方式


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論