<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

        <hibernate-session-factory />
      -->
       注釋的部分是在jBPM4中創建了sessionFactory,而我們只需要一個sessionFactory。既然要將jBPM4與Spring的整 合,那就希望由Spring來統一管理sessionFactory和事務,在Spring的配置文件中構造一個sessionFactory。 ProcessEngine是jBPM4的Facade模式,一切由它與外部交互,
      第2步:在Spring配置文件中寫一個bean:
    <bean id="processEngine" class="com.family168.jbpm.ProcessEngineFactoryBean">
            <property name="sessionFactory" ref="sessionFactory"/>
    </bean>
    第3步:在ProcessFactoryBean中注入SessionFactory:
      public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
      }
    第4步:在ProcessFactoryBean中創建一個SpringConfiguration,然后將sessionFactory放入 SpringConfiguration中,再從SpringConfiguration得到processEngine,代碼如下:
         public void afterPropertiesSet() {
            SpringConfiguration cfg = new      SpringConfiguration(jbpmConfigurationLocation);
            cfg.setApplicationContext(applicationContext);

            cfg.setSessionFactory(sessionFactory);
            this.processEngine = cfg.buildProcessEngine();
        }
    然后我們的工作就可以開展了,可以從processEngine得到所有的service。比如:
        ProcessEngine processEngine = (ProcessEngine) ctx.getBean("processEngine");
        RepositoryService repositoryService = processEngine.getRepositoryService();。
    第2種:獲得Hibernate的SessionFactory。
      第1步:與第一種方式的第1步一樣。
      第2步:更改jbpm.tx.spring.cfg.xml配置文件:
      將     
         <standard-transaction-interceptor/>
      改成    <spring-transaction-interceptor current="true" />
      然后將
        <transaction/>
        <hibernate-session/>
      改成 <hibernate-session current="true"/>
    這部分修改是將jBPM4創建的spring事務和hibernate的session改成從當前的ThreadLocal中獲得session和事務。
    第3步:在Spring配置文件中寫bean,processEngine和template:
    <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主要是控制事務,在processEngine外面創建事務,這樣使用的時候會先調用jbpmTemplate,再調用processEngine,否則它會說事務沒有啟動。在jbpmTemplate中注入processEngine:
        public void setProcessEngine(ProcessEngine processEngine) {
            this.processEngine = processEngine;
        }
        這里我的理解是我們在上面已經將事務改成從當前的Threadlocal中獲得,所以jBPM4是必須當前有事務,如果我沒有創建事務的話,在使用 processEngine時就會說事務沒有啟動。所以我們就封裝了一個jbpmTemplate,如果我的理解有誤還請大家指出。
       第1種整合方式的例子下載http://www.family168.com/,第2種整合方式之后可以看我們的jBPM-Side里的控制臺。

    posted on 2009-06-29 13:27 卡宴 閱讀(1488) 評論(0)  編輯  收藏 所屬分類: jBPM
    主站蜘蛛池模板: 永久在线观看www免费视频| 国产亚洲视频在线观看网址 | 国产精品亚洲精品日韩已方| 亚洲精品456人成在线| 亚洲国产精品无码成人片久久| 亚洲国产一区在线观看| 3d成人免费动漫在线观看| 亚洲美女aⅴ久久久91| 污污视频免费观看网站| 曰批视频免费40分钟试看天天| 亚洲va在线va天堂va不卡下载| 免费毛片在线看不用播放器| 亚洲精品无码Av人在线观看国产| 中文字幕免费在线观看动作大片| 狠狠亚洲婷婷综合色香五月排名 | 亚洲精品福利视频| 18禁止看的免费污网站| 亚洲一区二区影视| 日韩黄色免费观看| 免费国产黄网站在线观看动图| 亚洲七七久久精品中文国产| 免费a级毛片无码a∨免费软件| 久久久久亚洲AV片无码| 青草草色A免费观看在线| 亚洲JIZZJIZZ妇女| 亚洲国产精品成人一区| 国产免费拔擦拔擦8X高清在线人| 亚洲AV人无码激艳猛片| 18禁超污无遮挡无码免费网站国产| 亚洲色一区二区三区四区| 亚洲国产一区二区三区| 一级毛片在线免费观看| 亚洲人成77777在线播放网站不卡 亚洲人成77777在线观看网 | 免费激情网站国产高清第一页| 亚洲精品卡2卡3卡4卡5卡区| 精品免费久久久久久久| 偷自拍亚洲视频在线观看| 亚洲AV无码专区亚洲AV伊甸园| 亚洲性线免费观看视频成熟| 免费国产黄网站在线观看动图| 精品日韩亚洲AV无码一区二区三区 |