网络上针对相关的配置已经有很多说明,本文没有针对springmodules.jar包。
1. spring上下文的配置,!注意spring中要配置事务信息
<!-- jbpm.cfg.xml -->
<jbpm-configuration>
......
<process-engine-context>
<string name="spring.cfg" value="applicationContext.xml" />
</process-engine-context>
</jbpm-configuration>
2. 关于自定义的identity配置,即权限管理的几个数据表,如下
在配置sessionFactory的时候,需要添加自定义identity.hbm.xml文件(自己配置,不再说明),在jbpm.cfg.xml中配置你自定义的IdentitySession的实现
<!-- jbpm.cfg.xml -->
<jbpm-configuration> ......
<!--<import resource="jbpm.identity.cfg.xml" />-->
<transaction-context>
<hibernate-session current="true" />
<object class="your.IdentitySessionImpl"></object>
</transaction-context>
</jbpm-configuration>
3. 通过spring.xml配置好sessionFactory之后,jbpm.hibernate.cfg.xml文件可以不放到classpath下了,不过需要jbpm的特殊用途的时候,没有做验证。这里请配置的朋友们,自行研究一下。
4. 在spring的上下文XML配置文件内,配置好jbpm的提供的Service的Bean就可以了
<!-- JBPM 4.4 -->
<bean id="springHelper" class="org.jbpm.pvm.internal.processengine.SpringHelper">
<property name="jbpmCfg" value="jbpm.cfg.xml" />
</bean>
<bean id="processEngine" factory-bean="springHelper"
factory-method="createProcessEngine" />
<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService"></bean>
<bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService"></bean>
<bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService"></bean>
<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService"></bean>
<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService"></bean>
<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService"></bean>
5. 配置完毕后,我的程序还出现了一个很头疼的问题
开发环境:JDK1.6,Spring 3.0,JBPM 4.4,Hibernate 3.0,MySQL 5.0
问题描述:当我通过taskService.completeTask(taskId, translateName);,但是当任务为流程的最后一个结点的时候,出现了一个Execution外键的错误,不能删除当前的Execution这条记录。查看sql的执行日志是因为在删除Execution这条记录之前,有一条更新操作的sql没有执行。
问题原因:是因为hibernate的方言配置错误,应该采用 org.hibernate.dialect.MySQLInnoDBDialect ,而我使用的是org.hibernate.dialect.MySQLDialect