首页 > 代码库 > OA第七天---转向简单一个的jbpm项目

OA第七天---转向简单一个的jbpm项目

为了解决上一章提出的问题,现在去编写一个简单类似的jbpm代码!!

这个项目没有使用到spring,碰到第一个问题是sessionfactory应该怎么持久化呢??

在jbpm的配置文件jbpm.cfg.xml文件中:如下,可以看到其实就是简单的导入一些配置文件,这些配置文件都是jbpm自己的东西(当然除了下面标注的),

jbpm-configuration>

  import resource="jbpm.default.cfg.xml" /> 

import resource="jbpm.businesscalendar.cfg.xml" />
  import resource="jbpm.tx.hibernate.cfg.xml" />  //这个文件是自己写的
import resource="jbpm.jpdl.cfg.xml" />
  import resource="jbpm.bpmn.cfg.xml" />
  import resource="jbpm.identity.cfg.xml" />

 /jbpm-configuration>

如果需要整合spring的话,需要加上:很好记的东西

<import resource="jbpm.tx.spring.cfg.xml" />

整合spring的一个很重要的类springHelper,放到spring中去管理吧,

springHelper实现了ApplicationContextAware接口,springHelper可以从spring容器中获得ApplicationContext,

     然后springHelper可以利用ApplicationContext和jbpm.cfg.xml(jbpm的配置文件)一起生成伟大的processEngine。

<!-- 配置ProcessEngine -->
 <bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
  <property name="jbpmCfg" value=http://www.mamicode.com/"jbpm.cfg.xml"></property>
 </bean>
 <bean id="processEngine" factory-bean="springHelper" factory-method="createProcessEngine" />
上面标红的地方直接写的jbpm的配置文件,因为jbpm默认的就认为配置文件放在classpath下(也就是eclipse目录的src下),如果你要在src下建立一个文件夹话,那么就请加上这个文件的路径吧 !!看到网友的总结好像最好不要放在WEB-INF下(可以参考官方的开发指南,默认提供的SpringHelper只支持从classpath下读取配置。http://www.family168.com/tutorial/jbpm4devguide/html/springIntegration.html如果你想放在WEB-INF下,需要自己创建Configuration,然后设置jbpm.cfg.xml的位置,参考http://www.family168.com/tutorial/jbpm4.0/html/services.html,创建Configuration可以指定xml的位置,参考jbpm-api的javadoc)

如果整合了spring的话,发现jbpm的配置文件变为了这样,其实没有什么别的区别,只是herbinate的那个导入没有了,但是也咩有发现有jbpm.tx.spring.cfg.xml这个文件,难道又是jbpm自己有的(我觉得这两个文件都是jbpm自己所含的,你需要进行覆盖,因为要使用hibernate的话必须要写配置数据库的代码,当仅仅整合hibernate的话,那么就拿出这个文件来写一下,如果还整合了spring的话那么数据库的信息就在spring中进行编写了,也是就datasource)也就是:将jbpm.cfg.xml文件中<import resource="jbpm.tx.hibernate.cfg.xml" />一行,修改为 <import resource="jbpm.tx.spring.cfg.xml" />

在spring的配置文件中:appl;icationContext.xml,注意:   此处千万不要忘记了 ,这5个映射关系会在spring容器初始化的时候persistent到数据库中,如果没有,肯定会报exception,如果单独配置hibernate的话就写在jbpm.tx.hibernate.cfg.xm中

  1. <property name="mappingResources">  
  2.             <list>  
  3.                 <value>jbpm.repository.hbm.xml</value>  
  4.                 <value>jbpm.execution.hbm.xml</value>  
  5.                 <value>jbpm.history.hbm.xml</value>  
  6.                 <value>jbpm.task.hbm.xml</value>  
  7.                 <value>jbpm.identity.hbm.xml</value>  
  8.             </list>  
  9.         </property>