使用Jbpm进行软件开发,最终不可避免的与Java软件应用开发框架的老大ssh完成整合。
这里整合使用的各个框架的版本:
Spring 2.5
hibernate 3.2
Struts 2.1
jbpm 4.4
整合过程并不复杂。
1.在ssh框架中加入jbpm所需jar文件
在ssh框架基础添加jar文件的话,需要的jar文件不多,主要是drools系列和jbpm核心jar包。
另外jbpm使用的el解析jar包juel系列jar包,在加入工程jar环境后,jsp页面解析el出现文件,造成该问题的原因为与tomcat自带的el解析jar文件冲突混淆,所以讲juel系列jar文件加入了tomcat服务器环境jar目录中,文件就解决了。
2.创建jbpm框架资源数据库
这点和之前提到的jbpm安装方式差不多,不过可以更简单的用jbpm中提供的对应数据库版本的sql文件,直接创建。
在实际开发中,有的表的字段长度得进行适当调整,比如变量中字符串变量值得长度,有时候255就有点少了,容易造成数据存储数据异常。
3.jbpm与ssh的配置文件的整合,其实主要就是与spring框架的整合。
整合方式,首先就是jbpm数据库资源配置与spring容器配置文件整合。
这里建议jbpm使用数据库与业务系统使用数据库一致,不要再spring资源容器中配合两个数据库资源信息。查看jpbm源码,如果使用了spring整合方式,jbpm是按照bean 的class type进行容器资源检索,取出第一个符合要求的数据库资源配置对象,就是sessionFactory对象,这第一个到底是不是jbpm资源数据库,就不一定了,除非你保证它是第一个被加入spring容器中的。
数据库资源配置就不多说了,和普通的spring数据库资源配置一样。jbpm配置信息如下:
<bean id="jbpmSpringHelper" 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="jbpmProcessEngine" factory-bean="jbpmSpringHelper"
factory-method="createProcessEngine"></bean>
<bean id="jbpmRepositoryService" factory-bean="jbpmProcessEngine"
factory-method="getRepositoryService"></bean>
<bean id="jbpmExecutionService" factory-bean="jbpmProcessEngine"
factory-method="getExecutionService"></bean>
<bean id="jbpmTaskService" factory-bean="jbpmProcessEngine"
factory-method="getTaskService"></bean>
<bean id="jbpmHistoryService" factory-bean="jbpmProcessEngine"
factory-method="getHistoryService"></bean>
<bean id="jbpmManagementService" factory-bean="jbpmProcessEngine"
factory-method="getManagementService"></bean>
<bean id="jbpmIdentityService" factory-bean="jbpmProcessEngine"
factory-method="getIdentityService"></bean>
主要是SpringHelper对象,这是jbpm为了与spring实现方便整合,设置的对象。
另外需要加入jbpm.cfg.xml配置文件与jbpm.mail.templates.xml文件,这两个文件不需要做太多的改动。jbpm.cfg.xml文件整合内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<jbpm-configuration>
<import resource="jbpm.default.cfg.xml" />
<import resource="jbpm.businesscalendar.cfg.xml" />
<import resource="jbpm.tx.spring.cfg.xml" />
<import resource="jbpm.jpdl.cfg.xml" />
<import resource="jbpm.bpmn.cfg.xml" />
<import resource="jbpm.identity.cfg.xml" />
<!-- Job executor is excluded for running the example test cases. -->
<!-- To enable timers and messages in production use, this should be included. -->
<!-- <import resource="jbpm.jobexecutor.cfg.xml" /> -->
<process-engine-context>
<string name="spring.cfg" value="config/spring/applicatioinContext-jbpm.xml"></string>
</process-engine-context>
</jbpm-configuration>
红色注明的部分,就是在默认的jbpm.cfg.xml文件基础上,改动的部分。