spring和jbpm的详细配置

转载自:http://superleo.iteye.com/blog/323400

Spring 和 jbpm 整合还是挺复杂的,我把整合的过程以及遇到的一些问题和大家共同分享一下,有不当之处,希望大家指正。我的开发环境是xp3,我所用到的框架版本如下:

 

struts2.0.11并且降级支持JDK1.4

spring2.0,

spring-modules-jbpm31-0.6.jar
jbpm3.1.4

hibernate.3.2.3

 

 

附件就是源码,请参照里面的readme.txt进行相应的配置。

 

 

在 Spring 中配置 jbpm 所使用的 SessionFactory

 

Spring 其它该怎么配还是怎么配置,对于 jbpm 所依赖的 sessionFactory ,我是这么配置的:

 

 

 

Xml代码 
  1. <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  2.         <property name="dataSource">  
  3.             <ref bean="dataSource" />  
  4.         </property>  
  5.         <property name="mappingLocations">  
  6.             <list>         
  7.                 <!-- jbpm's hbm.xml -->  
  8.                     <value>classpath*:/org/jbpm/**/*.hbm.xml</value>  
  9.                   
  10.                 <!-- other hbm.xml -->  
  11.             <value>classpath*:/com/resoft/system/domain/*.hbm.xml</value>        
  12.             </list>  
  13.         </property>  
  14.         <property name="hibernateProperties">  
  15.             <props>  
  16.                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>  
  17.                 <prop key="show_sql">true</prop>  
  18.                 <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>  
  19.             </props>  
  20.         </property>  
  21.     </bean>  

 

 

我看有的喜欢将配置

 

 

Xml代码 
  1. <property name="mappingLocations">  
  2.             <list>         
  3.                 <!-- jbpm's 的hbm.xml -->  
  4.                     <value>classpath*:/org/jbpm/**/*.hbm.xml</value>  
  5.                   
  6.                 <!-- 其它地方自己配置的 hbm.xml -->  
  7.                     <value>classpath*:/com/resoft/system/domain/*.hbm.xml</value>        
  8.             </list>  
  9.         </property>  
 

 

 

配置成:

 

 

Xml代码 
  1. <property name="configLocations">         
  2.              <list>         
  3.                     <value>classpath:/hibernate.cfg.xml</value>    
  4.                 ......  
  5.             </list>         
  6.         </property>  
 

 

 

其实也行,不过hibernate.cfg.xml 文件对于后续的 spring 和 jbpm 整合也没有多大用处,尽量争取统一在一处配置即可。下面还会有详细说明。

还有一点就是本 demo 是一个很简单的整合实例,所以其它的 PO 对象所对应的表也和 jbpm 放在一起。实际用的时候,可能需要配置多个数据源,多个 sessionFactory ,并用 JTA 来进行全局事务处理。

 

 

 

开始在 Spring 中配置 jbpm

 

请注意,现在才是配置的开始,继续在spring的xml中配置

 

 

 

 

Xml代码 
  1. <!-- 关于jbpmConfiguration的配置 -->  
  2.     <bean id="jbpmConfiguration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">  
  3.         <property name="sessionFactory" ref="sessionFactory" />  
  4.         <property name="configuration" value="classpath:jbpm.cfg.xml" />  
  5.         <!-- 第一处需要注意的地方 -->  
  6.         <property name="processDefinitions">  
  7.             <list>  
  8.                 <ref local="holidayWorkflow" />  
  9.             </list>  
  10.         </property>  
  11.         <!-- 没什么好说的,是否需要重新建表 -->  
  12.         <property name="createSchema" value="${jbpmConfiguration.createSchema}" />  
  13.     </bean>  
  14.   
  15.   
  16. <bean id="holidayWorkflow" class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">  
  17.     <!-- 第二处需要注意的地方 -->  
  18.         <property name="definitionLocation" value="classpath:jbmp/workflow/holiday/holiday.zip" />  
  19.     </bean>  
  20.   
  21.     <bean id="holidayTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">  
  22.         <constructor-arg index="0" ref="jbpmConfiguration" />  
  23.         <!-- 第三处需要注意的地方 -->  
  24.         <constructor-arg index="1" ref="holidayWorkflow" />  
  25.     </bean>  

 

 

 

先看

 

 

Xml代码 
  1. <!-- 第一处需要注意的地方 -->  
  2.         <property name="processDefinitions">  
  3.             <list>  
  4.                 <ref local="holidayWorkflow" />  
  5.             </list>  
  6.         </property>  

 

 

这样配置后,每次重新启动的时候,都会重新发布 list 里的流程,开发的时候建议这么做。

 

再看

 

 

Java代码 
  1. <!-- 第二处需要注意的地方 -->  
  2.     <property name="definitionLocation" value="classpath:jbmp/workflow/holiday/holiday.zip" />  
 

 

 

以前整合过的人非常奇怪我这个地方怎么是一个 zip ,而不是什么 processdefinition.xml 文件之类的。最开始的时候,我下载了 javaeye中某个人写的代码,里面说流程发布一定要通过插件发布,不能通过代码, 后来慢慢在自己摸索中发现,这是 springmodule 的一个不完善的地方。所谓的插件形式发布,我看了代码,就是调用一个执行上传 zip 包的 servlet 。然后再通过 jbpm 的 API 将 zip 包中的gpd.xml , processdefinition.xml , processimage.jpg 解析发布,最后可以在页面使用 jbmp 自带的 jsp tag 标签 ( 可以随便修改 ) ,将 processimage.jpg 所在流程的正确位置显示出来。

 

好了,下载 spring-module-jbmp3.1 的源码打开

org.springmodules.workflow.jbpm31.definition. ProcessDefinitionFactoryBean 类,大概在第 56 行左右的地方,将

 

 

Java代码 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值