`

JBPM 与 Spring 结合

    博客分类:
  • Java
阅读更多

今天尝试了将jbpm和spring进行结合,主要参考http://betafox.iteye.com/blog/177649来进行。

版本:

jbpm          3.1.4

struts2       2.0.11

spring        2.5.1

hibernate   3.2.5.ga

配置文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:lang="http://www.springframework.org/schema/lang"
	xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd"
	default-autowire="byName">

	<bean id="workflow1"
		class="org.springmodules.workflow.jbpm31.definition.ProcessDefinitionFactoryBean">
		<property name="definitionLocation"
			value="classpath:jbpm/processes/processdefinition.xml" />
	</bean>

	<!-- jBPM configuration-->
	<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="workflow1" />
			</list>
		</property>
		<!-- 
			<property name="createSchema" value="true" />
			<property name="dropSchema" value="true" />
		-->
	</bean>

	<!-- jBPM template -->
	<bean id="jbpmTemplate"
		class="org.springmodules.workflow.jbpm31.JbpmTemplate">
		<constructor-arg index="0" ref="jbpmConfiguration" />
		<constructor-arg index="1" ref="workflow1" />
	</bean>

</beans>

 在casspath下添加了jbpm.cfg.xml,内容是从default.jbpm.cfg.xml中复制过来的:

<jbpm-configuration>

	<jbpm-context name="default.jbpm.context">

		<service name="persistence"
			factory="org.jbpm.persistence.db.DbPersistenceServiceFactory" />
		<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" />

</jbpm-configuration>
 

在配置过程中也遇到了一些问题。

问题一:系统报找不到 default.jbpm.context。

解决方法:在自己的jbpm.cfg.xml中设置

jbpm-context name="default.jbpm.context"

问题二:系统报找不到hibernate.cfg.xml。

解决方法:我的系统里hibernate配置放在spring的配置文件里,没有使用hibernate.cfg.xml。跟踪DbPersistenceServiceFactory和LocalJbpmConfigurationFactoryBean.afterPropertiesSet发现问题出在jbpmContext构建时需要获取持久层,如果sessionFactory存在则不会去读取hibernate.cfg.xml,除了在配置jbpmConfiguration时要设置sessionFactory外,如果jbpm的数据库表已经存在,则不要设置createSchema和dropSchema否则会报错。按上面的配置文件设置后,不会再去读取hibernate.cfg.xml,可以注释掉jbpm.cfg.xml中的resource.hibernate.cfg.xml。

注意:如果使用这种配置方式,省略了hibernate.cfg.xml文件,但如果调用jbpmConfiguration.createSchema();jbpmConfiguration.dropSchema();等方法还是会出错,跟踪源码可以发现这些方法都会调用DbPersistenceServiceFactory.getConfiguration()方法,这个方法会去读取hibernate.cfg.xml。我们可以使用jbpm-db\build\mysql\scripts\下的脚本手工创建或删除数据库,这在做单元测试时稍显麻烦。

问题三:jbpm-identity中有User.hbm.xml,这个名称与我系统中原有的User.hbml.xml冲突,尽管他们不在同一个包中,但还是产生了冲突。只能调整一下自己的代码了。

spring配置文件中配置流程定义的xml有些多余,反而使系统在启动的时候更新数据库里的流程定义。完全可以将流程部署到数据库。JbpmTemplate有无参数的构造器,可以不使用构造器注入,只需要在spring配置文件中注它的jbpmConfiguration属性就可以了。

 

另,没有添加参考文章里说的过滤器,暂时没发现问题。

分享到:
评论
1 楼 jinguizi 2008-08-04  
sessionFactory怎么配的?

相关推荐

    JBPM4.3 Spring会签 实例

    当将JBPM与Spring结合时,可以充分利用Spring的特性来管理JBPM的工作流实例,提高系统的可维护性和可扩展性。 在这个实例中,我们将探讨如何在JBPM4.3中实现基于Spring的会签功能。会签是一种常见的业务流程操作,...

    jbpm+spring的web简单借款工作流实例项目

    当jbPM与Spring结合时,可以实现业务流程与应用服务的无缝集成,提供强大的工作流支持。 本项目是基于jbPM和Spring构建的一个简单的Web借款工作流实例,旨在帮助开发者理解如何在实际项目中运用这两项技术。数据库...

    jbpm与spring集成

    【jbpm与Spring集成】是企业级应用中常见的技术整合,旨在利用jbpm(Java Business Process Management)的流程管理能力,结合Spring框架的灵活服务管理,实现高效、可扩展的业务流程自动化。jbpm是一个开源的工作流...

    jbpm+spring配置

    【jbpm+spring配置】是将业务流程管理(Business Process Management, BPM)框架jbpm与企业级应用开发框架Spring相结合的实践。jbpm是一个开源的BPM解决方案,它提供了流程定义、执行、监控和管理的一整套工具。而...

    jbpm4.3与spring整合

    在企业级应用开发中,流程管理引擎JBPM(JBoss Business Process Management)与Spring框架的结合使用是常见的一种技术方案。JBPM是一个灵活、强大的业务流程管理工具,而Spring框架则以其优秀的依赖注入(DI)和...

    JBPM与Spring集成开发指南

    将JBPM与Spring集成,可以充分利用Spring的IoC(Inversion of Control)和AOP(Aspect Oriented Programming)特性,以及其丰富的生态系统,来管理和控制工作流的生命周期。 在集成JBPM与Spring时,首先需要理解...

    JBPM与Spring集成开发指南.docx

    - **集成意义**:结合JBPM的工作流引擎能力和Spring的灵活性,构建高效、可维护的业务流程管理系统。 - **集成要点**:包括Spring的依赖注入来管理JBPM组件,使用Spring的AOP支持工作流的事务管理,以及利用Spring...

    jbpm5.4 spring mvc 集成

    jbpm5.4与Spring MVC的集成是企业级应用开发中的常见组合,它结合了jbpm(业务流程管理)的强大功能和Spring MVC的灵活控制层架构。以下将详细阐述这一集成涉及的关键知识点: 1. **jbpm5.4**:jbpm是一个开源的...

    JBPM3.2与Spring结合时任务调度的实现.doc

    总结起来,JBPM3.2与Spring的结合主要涉及到以下几个关键点: 1. 使用`spring-modules-jbpm31.jar`进行集成。 2. 在`web.xml`中配置`JobExecutorServlet`。 3. 将任务调度的相关配置移到`jbpm.cfg.xml`。 4. 调整`...

    JBPM与Spring集成开发指导书.docx

    【JBPM与Spring集成开发】是企业信息化管理中的一项关键技术,它涉及到工作流管理系统与Spring框架的结合,以实现高效、灵活的业务流程自动化。JBPM是一个知名的开源工作流引擎,它允许开发者定义、执行和管理工作...

    JBPM5 Spring 例子

    将JBPM5与Spring结合,可以充分利用Spring的优秀特性,提高JBPM5应用的开发效率和可维护性。 首先,我们来看一下如何在Spring中配置JBPM5。在`JBPM5Spring`项目中,通常会有一个`spring-context.xml`配置文件,这里...

    JBPM4与Spring整合例子代码

    在"风中叶老师讲的JBPM4与Spring整合例子代码"中,我们可以了解到如何将这两个强大的工具结合在一起,以实现企业级工作流的自动化处理。下面将深入探讨这一整合的关键知识点: 1. **Spring配置JBPM4**:首先,我们...

    jBPM4与Spring整合的2种方式

    2. **配置jbpmContext**:创建一个jbpmContext的bean,它会自动配置jBPM4所需的服务,并与Spring的bean管理相结合。 3. **使用JBPM4Template**:Spring-JBPM4提供了JBPM4Template类,它可以简化与jBPM4的交互,如...

    工作流(JBPM)一些有用资料整合

    "JBPM 与 Spring 结合"讨论了两者结合的具体实践,可能包括配置步骤、依赖注入、事务策略等,帮助开发者在实际项目中更好地利用这两个强大的工具。通过Spring的AOP(面向切面编程)特性,可以轻松地将工作流服务与...

    jbpm4 集成 spring 的试用代码

    10. **国际化与本地化**:Spring提供了丰富的国际化支持,可以结合jbpm4的流程定义,实现多语言的流程任务名称和提示信息。 总的来说,jbpm4与Spring的集成可以提高流程管理的灵活性和可扩展性,使得开发者能够更好...

    Jbpm4.4 整合Spring Hibernate4

    在这个版本中,Jbpm与Spring框架和Hibernate ORM工具进行了整合,实现了更加灵活和高效的企业级应用开发。 **1. Jbpm简介** Jbpm4.4是Jbpm系列的一个版本,它主要负责处理业务流程的建模、执行、管理和监控。它支持...

    jbpm + spring + struts 项目

    【jbpm + spring + struts 项目】 这个项目是一个整合了jbpm(Java Business Process Management)、Spring框架和Struts框架的典型企业级应用。jbpm是用于业务流程管理的开源工具,Spring则提供了全面的后端服务...

    jbpm4.3-spring2.5整合

    总的来说,jbpm4.3-spring2.5整合是一项复杂但重要的任务,它将灵活的工作流管理与强大的应用框架结合在一起,为开发者提供了构建高效、可扩展的企业级应用的工具。在实践中,需要对Jbpm的工作原理、Spring的IoC和...

    JBPM5 整合Spring3经典案例

    - **事务管理**:Spring的事务管理器可以与JBPM的事务管理相结合,确保流程操作的原子性和一致性。 - **AOP集成**:Spring的AOP可以在流程执行的关键点添加拦截器,实现日志记录、权限检查等功能。 - **Bean管理**:...

    JBPM使用实例,sql spring

    通过上述文件,你可以学习到如何将JBPM、Spring和SQL结合,实现一个完整的业务流程管理系统。首先,你需要了解Spring环境下的配置,包括Spring与JBPM的集成方式。然后,你需要熟悉JBPM的流程定义语言和工具,创建...

Global site tag (gtag.js) - Google Analytics