spring跟jbpm的详细配置
spring和jbpm的详细配置转载自:http://superleo.iteye.com/blog/323400Spring?和?jbpm?整合还是挺复杂的,
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代码?
- <bean?id="sessionFactory"?class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">??
- ????????<property?name="dataSource">??
- ????????????<ref?bean="dataSource"?/>??
- ????????</property>??
- ????????<property?name="mappingLocations">??
- ????????????<list>?????????
- ????????????????<!--?jbpm's?hbm.xml?-->??
- ????????????????????<value>classpath*:/org/jbpm/**/*.hbm.xml</value>??
- ??????????????????
- ????????????????<!--?other?hbm.xml?-->??
- ????????????<value>classpath*:/com/resoft/system/domain/*.hbm.xml</value>????????
- ????????????</list>??
- ????????</property>??
- ????????<property?name="hibernateProperties">??
- ????????????<props>??
- ????????????????<prop?key="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</prop>??
- ????????????????<prop?key="show_sql">true</prop>??
- ????????????????<prop?key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>??
- ????????????</props>??
- ????????</property>??
- ????</bean>??
?
?
我看有的喜欢将配置
?
?
Xml代码?
- <property?name="mappingLocations">??
- ????????????<list>?????????
- ????????????????<!--?jbpm's?的hbm.xml?-->??
- ????????????????????<value>classpath*:/org/jbpm/**/*.hbm.xml</value>??
- ??????????????????
- ????????????????<!--?其它地方自己配置的?hbm.xml?-->??
- ????????????????????<value>classpath*:/com/resoft/system/domain/*.hbm.xml</value>????????
- ????????????</list>??
- ????????</property>??
?
?
?
配置成:
?
?
Xml代码?
- <property?name="configLocations">?????????
- ?????????????<list>?????????
- ????????????????????<value>classpath:/hibernate.cfg.xml</value>????
- ???????????????......??
- ????????????</list>?????????
- ????????</property>??
?
?
?
其实也行,不过hibernate.cfg.xml?文件对于后续的?spring?和?jbpm?整合也没有多大用处,尽量争取统一在一处配置即可。下面还会有详细说明。
还有一点就是本?demo?是一个很简单的整合实例,所以其它的?PO?对象所对应的表也和?jbpm?放在一起。实际用的时候,可能需要配置多个数据源,多个?sessionFactory?,并用?JTA?来进行全局事务处理。
?
?
?
开始在?Spring?中配置?jbpm
?
请注意,现在才是配置的开始,继续在spring的xml中配置
?
?
?
?
Xml代码?
- <!--?关于jbpmConfiguration的配置?-->??
- ????<bean?id="jbpmConfiguration"?class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">??
- ????????<property?name="sessionFactory"?ref="sessionFactory"?/>??
- ????????<property?name="configuration"?value="classpath:jbpm.cfg.xml"?/>??
- ????????<!--?第一处需要注意的地方?-->??
- ????????<property?name="processDefinitions">??
- ????????????<list>??
- ????????????????<ref?local="holidayWorkflow"?/>??
- ????????????</list>??
- ????????</property>??
- ????????<!--?没什么好说的,是否需要重新建表?-->??
- ????????<property?name="createSchema"?value="${jbpmConfiguration.createSchema}"?/>??
- ????</bean>??
- ??
- ??
- <bean?id="holidayWorkflow"?class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">??
- ????<!--?第二处需要注意的地方?-->??
- ????????<property?name="definitionLocation"?value="classpath:jbmp/workflow/holiday/holiday.zip"?/>??
- ????</bean>??
- ??
- ????<bean?id="holidayTemplate"?class="org.springmodules.workflow.jbpm31.JbpmTemplate">??
- ????????<constructor-arg?index="0"?ref="jbpmConfiguration"?/>??
- ????????<!--?第三处需要注意的地方?-->??
- ????????<constructor-arg?index="1"?ref="holidayWorkflow"?/>??
- ????</bean>??
?
?
?
先看
?
?
Xml代码?
- <!--?第一处需要注意的地方?-->??
- ????????<property?name="processDefinitions">??
- ????????????<list>??
- ????????????????<ref?local="holidayWorkflow"?/>??
- ????????????</list>??
- ????????</property>??
?
?
这样配置后,每次重新启动的时候,都会重新发布?list?里的流程,开发的时候建议这么做。
?
再看
?
?
Java代码?
- <!--?第二处需要注意的地方?-->??
- ????<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代码?
font-size: 1em; line-height: 1.4em; margin-top: 0px; marg