JBPM与SPRING事务框架完全整合
|
betafox
2007-11-27
经过一段事件的摸索终于将jpbm与spring完全整合,主要是事务处理的整合,工作流代码与业务代码在一个事务上下文进行; ========================================================
spring modules中包含了spring集成JBPM的机制,在使用的发现其并没有彻底解决两者的事务处理统一的问题,经过一段事件的摸索终于将jpbm与spring完全整合,主要是事务处理的整合,工作流代码与业务代码在一个事务上下文进行; 使用了springmodules的封装,对jbpm稍有修改,稍后附上解决办法及代码; -------------------------------------------------姗姗来吃---------------o(∩_∩)o...哈哈,害得帖子被隐藏了 第一步:首先引入spring-modules-jbpm31.jar,同时将jbpm包含的所有hibernate映射文件解压出来,集成到spring配置文件中,可以使用类路径下的目录形式简化,如下:
xml 代码
经测试在这种方式在weblogic上不能正常加载,从jar包加载也有问题必须解压到目录; xml 代码
xml 代码
第三步:配置spring modules,通过 springmodules 初始化jbpmConfiguration; xml 代码 <!-- jBPM configuration-->
<bean id="jbpmConfiguration"
class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean">
<property name="sessionFactory" ref="sessionFactory" />
<property name="configuration" value="classpath:/conf/jbpm.cfg.xml" />
<!--<property name="configuration" value="classpath:/org/jbpm/default.jbpm.cfg.xml" />-->
<!--<property name="processDefinitions">-->
<!--<list>-->
<!--<ref local="demoWorkflow" />-->
<!--</list>-->
<!--</property>-->
<!--<property name="createSchema" value="true"/>-->
</bean>
xml 代码(/conf/jbpm.cfg.xml) <jbpm-configuration>
<jbpm-context>
<!--<service name="persistence" factory="org.jbpm.persistence.db.DbPersistenceServiceFactory" />-->
<service name="persistence">
<factory>
<bean class="org.jbpm.persistence.db.DbPersistenceServiceFactory">
<field name="isTransactionEnabled">
<false />
</field>
<field name="isCurrentSessionEnabled">
<true />
</field>
</bean>
</factory>
</service>
<service name="message" factory="org.jbpm.msg.db.DbMessageServiceFactory" />
<service name="scheduler" factory="org.jbpm.scheduler.db.DbSchedulerServiceFactory" />
<service name="logging" factory="org.jbpm.logging.db.DbLoggingServiceFactory" />
<service name="authentication" factory="org.jbpm.security.authentication.DefaultAuthenticationServiceFactory" />
</jbpm-context>
<!--<string name="resource.hibernate.cfg.xml" value="hibernate.cfg.xml" />-->
<string name="resource.business.calendar" value="org/jbpm/calendar/jbpm.business.calendar.properties" />
<string name="resource.default.modules" value="org/jbpm/graph/def/jbpm.default.modules.properties" />
<string name="resource.converter" value="org/jbpm/db/hibernate/jbpm.converter.properties" />
<string name="resource.action.types" value="org/jbpm/graph/action/action.types.xml" />
<string name="resource.node.types" value="org/jbpm/graph/node/node.types.xml" />
<string name="resource.parsers" value="org/jbpm/jpdl/par/jbpm.parsers.xml" />
<string name="resource.varmapping" value="org/jbpm/context/exe/jbpm.varmapping.xml" />
<long name="jbpm.msg.wait.timout" value="5000" singleton="true" />
<int name="jbpm.byte.block.size" value="1024" singleton="true" />
<string name="mail.smtp.host" value="localhost" />
<bean name="jbpm.task.instance.factory" class="org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl"
singleton="true" />
<bean name="jbpm.variable.resolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true" />
<bean name="jbpm.mail.address.resolver" class="org.jbpm.identity.mail.IdentityAddressResolver" singleton="true" />
</jbpm-configuration>
第四步:修改JBPM自带的过滤器(web.xml),初始化当前请求线程的JBPM Context时从spring获取我们上面配置的jbpmConfiguration;其自带过滤器是通过JbpmConfiguration.getInstance获取的,不能公用spring事务上下文的hibernate session;
xml 代码
java 代码(JbpmContextHolderfilter.java)
|
|
|
yeshucheng
2007-11-27
期待中
|
|
|
sijianzuo
2007-11-28
look forword to ....
|
|
|
d_watson
2007-11-30
??????????
|
|
|
vikingjw
2008-01-24
非常期待啊~~~~
|
|
|
kayzhan
2008-02-26
8) 这么久咋还不贴出来看下呢,非常期待啊!
|
|
|
looxiaohu
2008-02-26
这么久咋还不贴出来看下呢,非常期待啊!
|
|
|
kencool
2008-02-26
betafox 写道 经过一段事件的摸索终于将jpbm与spring完全整合,主要是事务处理的整合,工作流代码与业务代码在一个事务上下文进行;
使用了springmodules的封装,对jbpm稍有修改,稍后附上解决办法及代码; 08年啦,快来吧,已经春暖花开了 |
|
|
mill_lmq
2008-02-27
就是,说过的话要兑现哦,期待Ing
|
|
|
差沙
2008-03-06
跑计划任务的单独线程中 如何取得context
|

