jbpm4.4集成入SSH项目中

第一步:在工程的pom.xml文件中加入repository

    <repositories>
        <repository>
            <id>appfuse-snapshots</id>
            <url>http://oss.sonatype.org/content/repositories/appfuse-snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
        <!--JBPM依赖包 maven2资源库  -->  
        <repository>
           <id>Jboss-JBPM-Repositories</id>
           <name>JbossJBPM</name>
           <url>http://repository.jboss.org/nexus/content/groups/public</url>
        </repository>
    </repositories>

第二步:在工程的pom.xml文件中加入dependency,版本是4.4

        <!-- JBPM 依赖包  -->
        <dependency>
            <groupId>org.jbpm.jbpm4</groupId>
            <artifactId>jbpm-api</artifactId>
            <version>${jbpm.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jbpm.jbpm4</groupId>
            <artifactId>jbpm-jpdl</artifactId>
            <version>${jbpm.version}</version>
     </dependency>
        <dependency>
            <groupId>org.jbpm.jbpm4</groupId>
            <artifactId>jbpm-pvm</artifactId>
            <version>${jbpm.version}</version>
             <exclusions>
                  <exclusion>
                       <groupId>juel</groupId>
                       <artifactId>juel-api</artifactId>
                   </exclusion>
                   <exclusion>
                     <groupId>juel</groupId> 
                     <artifactId>juel-impl</artifactId>
                   </exclusion>
                   <exclusion>
                     <groupId>juel</groupId> 
                     <artifactId>juel-engine</artifactId>
                   </exclusion>
             </exclusions>      
        </dependency>
        <dependency>
            <groupId>org.jbpm.jbpm4</groupId>
            <artifactId>jbpm-log</artifactId>
            <version>${jbpm.version}</version>
        </dependency>
        <!-- JBPM 依赖包  -->

第三步:复制jbpm.cfg.xml(必须),jbpm.mail.properties(可选),jbpm.mail.templates.xml(可选)到工程的classpath路径下面。

jbpm.cfg.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>

 

   <!-- jbpm4.4与spring集成的配置-->
  <import resource="jbpm.default.cfg.xml" />
  <import resource="jbpm.jpdl.cfg.xml" />
  <import resource="jbpm.identity.cfg.xml" />
  <import resource="jbpm.businesscalendar.cfg.xml" />
  <import resource="jbpm.console.cfg.xml" />
  <!-- <import resource="jbpm.jobexecutor.cfg.xml" />-->

 

  <import resource="jbpm.tx.spring.cfg.xml" />      <!-- 事务管理器-->

<!--jBPM4逻辑实现采用了Command模式,jBPM4对CommandService构造拦截器(Interceptor)链,配置在jbpm.cfg.xml的process-engine-context里,用的是<standard-transaction-interceptor />-->
<!--jBPM4原有的事务通过StandardTransactionInterceptor实现,在CommandService执行Command之前打开事务(实际委派Hibernate的事务管理),完成后提交/回滚。jBPM4的事务是基于Command的-->
            
<!--Spring的事务是基于服务调用的,使jBPM4使用Spring提供的事务,用的是<spring-transaction-interceptor current="true" />-->
<!--拦截器换用SpringTransactionInterceptor,从environment 提供的Spring IOC获取PlatformTransactionManager,使用事务模板回调Command,事务传播模式强制加入当前事务。-->
<!--spring-transaction-interceptor默认会查找PlatformTransactionManager的实现,通过类型在定义好的bean中查找。在有多个事务管理器的情况, 可以使用属性transaction-manager来指定使用哪一个-->
  
   <process-engine-context>  
       <command-service>  
            <retry-interceptor />  
            <environment-interceptor /> 
            <spring-transaction-interceptor current="true" transaction-manager="transactionManager" />  
        </command-service>  
    </process-engine-context>  
 
 <!-- 同时,对hibernate session的配置(jbpm.cfg.xml的transaction-context)强制从当前线程中获取:<hibernate-session current="true"/>-->
    <!-- hibernate-session需要使用属性current="true",取决于是否使用了spring的current session策略,而且,<transaction/>必须从transaction-context中删除,如果你希望 事务只由spring进行管理-->

     <transaction-context>  
        <hibernate-session current="true" />  
    </transaction-context>  

 

</jbpm-configuration>

 

jbpm.mail.properties文件内容如下:

 

mail.smtp.host mail.xxx.cn
mail.from  
yxue@xxx.cn
mail.username yxue@xxx.cn
mail.password xxx

 

jbpm.mail.templates.xml文件内容如下:

 

<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>

  <process-engine-context>

 

     <mail-template name="problemReported">
      <to addresses="${ mailTemplate.receiver }" />
      <subject>${mailTemplate.subject}</subject>
      <text>您好:有问题需要处理 !</text>
    </mail-template>


  </process-engine-context>

</jbpm-configuration>

邮件模板中的参数对象需要在程序中赋值。

 

第四步:在spring的xml文件中加入下边内容。

 

<!-- hibernate.cfg.xml文件中配置的都是基于注解的实体-->

    <!-- Hibernate SessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:hibernate.cfg.xml"/>
        <property name="hibernateProperties">
            <value>
                hibernate.dialect=${hibernate.dialect}
                hibernate.query.substitutions=true 'Y', false 'N'
                hibernate.cache.use_second_level_cache=true
                hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
                hibernate.hbm2ddl.auto=update
            </value>
            <!-- Turn batching off for better error messages under PostgreSQL -->
            <!-- hibernate.jdbc.batch_size=0 -->
        </property>


        <!--JBPM 集成 -->
        <!--jBPM4的environment(运行期环境)提供Engine IOC(process-engine-context)和Transaction IOC(transaction-context)。要想在运行期方便地访问到Spring里所配置的服务,最直接的方法就是在environment里加入Spring IOC(applicationContext)的引用。SpringConfiguration是如何做到的呢?简单,实现Spring的ApplicationContextAware接口,自动持有applicationContext,然后openEnvironment时将其加入environment。environment.setContext(new SpringContext(applicationContext));SpringContext是对applicationContext的简单封装      -->


        <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>


    </bean>
   
    <!--JBPM 集成(将服务配置到Spring的IOC容器里) -->
    <!--
       一是通过Spring暴露出服务,将服务配置到Spring的IOC容器里;
      二是在自己的运行环境里访问到Spring的IOC容器,能够轻松使用Spring容器里所配置的服务;
      三是对于具有事务管理特性的项目来说,将事务管理与Spring的事务管理进行合并。
   -->
   <!--注意,SpringHelper的jbpmCfg属性是可选的。 如果默认的jbpm.cfg.xml存在在classpath下 --> 


    <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper" 
            lazy-init="default" autowire="default" dependency-check="default"> 
          <property name="jbpmCfg">  
             <value>jbpm.cfg.xml</value>  
          </property>  
    </bean>  
   
   
<bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
 
    <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
    <bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService" />
    <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
    <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
    <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
    <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" />
   
    <!--JBPM 集成 -->

注意:新加入的jbpm4.4的jar包如何加入工程中呢?

运用mvn eclipse:clean清除eclipse项目的配置文件,在运用mvn eclipse:eclipse重新生成.classpath和.project两个文件。

到此,SSH项目中就集成了jbpm4.4,同时jbpm4.4的事务使用spring中的事务,我们在action或是manager层就可以以bean的方式注入processEngine以及五个服务了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值