paulwong

          jbpm4.3與spring集成

          jbpm4.2與spring集成有點問題,直接跟據它自己的“開發指南”提供的方法是不能集成的。在官網查到的信息是發布4.2時,忘記更新集成spring的文件。不過4.3已經把該bug改過來了。下面是集成方法。

          版本:
          jbpm4.3
          spring2.5.6
          mysql5.1.40

          直接從jbpm4.3自帶的文件到src目錄:
          從jbpm-4.3"install"src"cfg"hibernate"jdbc復制mysql.hibernate.cfg.xml到src目錄,文件名改為hibernate.cfg.xml。
          從jbpm-4.3"install"src"cfg"spring復制applicationContext.xml到src目錄。
          從jbpm-4.3"install"src"cfg"jbpm復制spring.jbpm.cfg.xml到src目錄,文件名改為jbpm.cfg.xml。
          修改applicationContext.xml、hibernate.cfg.xml的數據庫配置信息,jbpm4.3與spring的集成就完成了,可以自己寫測試文件測試,集成非常容易。

          不過在applicationContext.xml和hibernate.cfg.xml兩個文件都要改數據庫信息有點麻煩,所以只復制applicationContext.xml、spring.jbpm.cfg.xml兩個文件到src目錄,把hibernate.cfg.xml的配置整進spring的配置文件applicationContext.xml中。
          applicationContext.xml
          <beans xmlns="http://www.springframework.org/schema/beans" 
                   xmlns:aop
          ="http://www.springframework.org/schema/aop" 
                   xmlns:context
          ="http://www.springframework.org/schema/context"
                    xmlns:p
          ="http://www.springframework.org/schema/p"
                   xmlns:tx
          ="http://www.springframework.org/schema/tx"
                 xmlns:xsi
          ="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation
          ="
                    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
                    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
          >
           
           
          <context:annotation-config />

          <bean
            
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
            p:location
          ="hibernate.properties"
            p:ignoreUnresolvablePlaceholders
          ="true" />
            
          <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" />
            
          <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
            
          <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
              
          <property name="dataSource" ref="dataSource" />
              
          <property name="mappingResources">
                  
          <list>
                      
          <value>jbpm.repository.hbm.xml</value>
                      
          <value>jbpm.execution.hbm.xml</value>
                      
          <value>jbpm.history.hbm.xml</value>
                      
          <value>jbpm.task.hbm.xml</value>
                      
          <value>jbpm.identity.hbm.xml</value>
                  
          </list>
              
          </property>
              
          <property name="hibernateProperties">
                  
          <props>
                          
          <prop key="hibernate.dialect">${dataSource.dialect}</prop>
                          
          <prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop>
                      
          </props>
              
          </property>
            
          </bean>
            
          <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
              
          <property name="sessionFactory" ref="sessionFactory" />
              
          <property name="dataSource" ref="dataSource" />
            
          </bean>
            
          <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
              
          <property name="driverClassName" value="${dataSource.driverClassName}" />
              
          <property name="url" value="${dataSource.url}" />
              
          <property name="username" value="${dataSource.username}" />
              
          <property name="password" value="${dataSource.password}" />
            
          </bean>
          </beans>


          新建文件hibernate.properties,主要用來配置連接數據庫信息

          dataSource.password=123
          dataSource.username
          =root
          dataSource.databaseName
          =jbpmdb
          dataSource.driverClassName
          =com.mysql.jdbc.Driver
          dataSource.dialect
          =org.hibernate.dialect.MySQLInnoDBDialect
          dataSource.serverName
          =localhost:3306
          dataSource.url
          =jdbc:mysql://${dataSource.serverName}/${dataSource.databaseName}
          dataSource.properties
          =user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password}
          dataSource.hbm2ddl.auto=update

          以后要改數據庫配置信息也只在這個文件修改就可以了。

          測試用的流程swing.jpdl.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <process name="swing" xmlns="http://jbpm.org/4.3/jpdl">
             
          <start g="94,64,48,48" name="start1">
                
          <transition g="-52,-22" name="A" to="A"/>
             
          </start>
             
          <task assignee="A" g="73,195,92,52" name="A">
                
          <transition g="-52,-22" name="B" to="B"/>
             
          </task>
             
          <task assignee="B" g="266,192,92,52" name="B">
                
          <transition g="-40,-21" name="end" to="end1"/>
             
          </task>
             
          <end g="290,327,48,48" name="end1"/>
          </process>


          測試代碼

          public class Main {
              
          public static void main(String[] args)  {
                  ClassPathXmlApplicationContext applicationContext 
          = new ClassPathXmlApplicationContext("applicationContext.xml");
                  applicationContext.start();
                  ProcessEngine processEngine 
          = (ProcessEngine)applicationContext.getBean("processEngine");
                  ExecutionService executionService 
          = processEngine.getExecutionService();
                  TaskService taskService 
          = processEngine.getTaskService();

                  
          //發布流程
                  String deploymentId = processEngine.getRepositoryService().createDeployment()
                  .addResourceFromClasspath(
          "resource/swing.jpdl.xml").deploy();
                  System.out.println(
          "流程發布ID:"+deploymentId);
                  
                  
          //啟動一個流程實例
                  ProcessInstance processInstance = executionService.startProcessInstanceByKey("swing");
                  System.out.println(
          "流程實例ID:" + processInstance.getId());

                  
          //A處理任務
                  List<Task> taskList_A = taskService.findPersonalTasks("A");
                  System.out.println(
          "A待處理任務數:" + taskList_A.size());
                  
          if(taskList_A.size() > 0){
                      Task task 
          = taskList_A.get(0);
                      taskService.completeTask(task.getId());
                  }

                  
                  
          //B處理任務
                  List<Task> taskList_B = taskService.findPersonalTasks("B");
                  System.out.println(
          "B待處理任務數:" + taskList_B.size());
                  
          if(taskList_B.size() > 0){
                      Task task 
          = taskList_B.get(0);
                      taskService.completeTask(task.getId());
                  }

                  
              }

          }


          附件是完整的集成文件和測試代碼,僅在spring2.5.6測試過,要運行該部分代碼,需要添加jbpm4.3和spring的相關庫文件。
          源代碼:jbpm4.3-spring

          posted on 2010-01-08 12:40 paulwong 閱讀(840) 評論(0)  編輯  收藏 所屬分類: JBPM

          主站蜘蛛池模板: 兴山县| 大邑县| 乌恰县| 兴安盟| 洛宁县| 大方县| 右玉县| 博爱县| 巴彦淖尔市| 商丘市| 伽师县| 南昌市| 景宁| 上饶市| 望城县| 大渡口区| 孟连| 巢湖市| 溆浦县| 武陟县| 龙山县| 兴化市| 五常市| 屯留县| 蓬安县| 阳东县| 安义县| 永昌县| 岗巴县| 连城县| 黄梅县| 浮山县| 景洪市| 广安市| 福安市| 义马市| 会理县| 北京市| 宁阳县| 潮州市| 工布江达县|