`
kxmd2008
  • 浏览: 4525 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JBPM4.2与spring集成

阅读更多

修改jbpm提供的spring.jbpm.cfg.xml,application.xml,jbpm.tx.spring.cfg.xml,jbpm.tx.hibernate.cfg.xml来做spring与jbpm的集成,
首先修改jbpm.tx.spring.cfg.xml的名字为jbpm42.spring.cfg.xml讲内容改为

<jbpm-configuration>

	<process-engine-context>
<!--结合jbpm.tx.hibernate.xml-->
		<command-service name="txRequiredCommandService">
			<skip-interceptor />
			<retry-interceptor />
			<environment-interceptor />
<!--使用spring管理transaction-->
			<spring-transaction-interceptor />
		</command-service>

		<command-service name="newTxRequiredCommandService">
			<retry-interceptor />
			<environment-interceptor policy="requiresNew" />
			<spring-transaction-interceptor current="true"/>
		</command-service>
<!--下面为jbpm.default.cfg.xml中的配置,由于jbpm.default.cfg.xml中需要引入jbpm.hibernate.cfg.xml,所以将配置改写到这里,或改jbpm.hibernate.cfg.xml源码,将引入jbpm.hibernate.cfg.xml注掉-->
		<repository-service />
		<repository-cache />
		<execution-service />
		<history-service />
		<management-service />
		<identity-service />
		<task-service />

		<object class="org.jbpm.pvm.internal.id.DatabaseDbidGenerator">
			<field name="commandService">
				<ref object="newTxRequiredCommandService" />
			</field>
		</object>

		<object class="org.jbpm.pvm.internal.id.DatabaseIdComposer"
			init="eager" />

		<script-manager default-expression-language="juel"
			default-script-language="juel">
			<script-language name="juel"
				factory="org.jbpm.pvm.internal.script.JuelScriptEngineFactory" />
		</script-manager>

		<types resource="jbpm.variable.types.xml" />

		<address-resolver />

	</process-engine-context>

	<transaction-context>
<!--强制从当前线程中获取, 删掉了原来的<transaction />-->
		<hibernate-session factory="hibernateSessionFactory"  current="true" />
<!--jbpm.default.cfg.xml中的配置-->
		<repository-session />
    	        <db-session />
   		<message-session />
   	 	<timer-session />
   	 	<history-session />
	</transaction-context>
</jbpm-configuration>

接下来将spring.jbpm.cfg.xml改为

 

<jbpm-configuration>

  <import resource="jbpm.jpdl.cfg.xml" />
  <import resource="spring/jbpm42.spring.cfg.xml" />
  <import resource="jbpm.identity.cfg.xml" />
  <import resource="jbpm.businesscalendar.cfg.xml" />
  <import resource="jbpm.console.cfg.xml" />
  
<!--  <import resource="jbpm.jobexecutor.cfg.xml" />-->

</jbpm-configuration>

 最后将applicationContext.xml改为

 

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
	default-autowire="byName">

	<context:property-placeholder location="classpath:jdbc.properties" />


	<!-- Configure DB data source -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
		destroy-method="close">
		<property name="driverClass">
			<value>${jdbc.driver}</value>
		</property>
		<property name="jdbcUrl">
			<value>${jdbc.url}</value>
		</property>
		<property name="user">
			<value>${jdbc.username}</value>
		</property>
		<property name="password">
			<value>${jdbc.password}</value>
		</property>
		<!--
			<property name="maxActive" value="2" /> <property name="maxIdle"
			value="2" /> <property name="maxWait" value="10000" />
		-->
		<!--连接池中保留的最小连接数。-->
		<property name="minPoolSize">
			<value>5</value>
		</property>
		<property name="maxPoolSize">
			<value>5000</value>
		</property>
		<property name="maxIdleTime">
			<value>60</value>
		</property>
		<property name="idleConnectionTestPeriod">
			<value>60</value>
		</property>
		<property name="acquireIncrement">
			<value>10</value>
		</property>
		<property name="checkoutTimeout">
			<value>0</value>
		</property>
	</bean>

	<!-- Configure hibernate session factory -->
	<bean id="hibernateSessionFactory"
		class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
		<property name="hibernateProperties">
			<props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>  
                <prop key="hibernate.cache.use_second_level_cache">true</prop>  
                <prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>  
                <prop key="hibernate.show_sql">false</prop>  
                <prop key="hibernate.format_sql">true</prop>  
            </props>
		</property>
		<property name="mappingResources">
			<list>
				<value>jbpm.repository.hbm.xml</value>
				<value>jbpm.execution.hbm.xml</value>
				<value>jbpm.history.hbm.xml</value>
				<value>jbpm.task.hbm.xml</value>
				<value>jbpm.identity.hbm.xml</value>
			</list>
		</property>
	</bean>
	
	<!--  =========jbpm4.2 configuration=========  -->
	<bean id="jbpm4Configuration" class="org.jbpm.pvm.internal.cfg.SpringConfiguration">
		<constructor-arg value="spring/spring.jbpm.cfg.xml" />
	</bean>

	<bean id="processEngine" factory-bean="jbpm4Configuration" factory-method="buildProcessEngine" />

	<bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" />
	<bean id="executionService" factory-bean="processEngine" factory-method="getExecutionService" />
	<bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" />
	<bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" />
	<bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" />
	<!--  =========jbpm4.2 end=========  -->

	<!-- Transaction management-->
	<bean id="transactionManager"
		class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="hibernateSessionFactory" />
		</property>
	</bean>

	<tx:annotation-driven transaction-manager="transactionManager" />

</beans>

 修改完成。

途中出现的错误:

exception while executing command org.jbpm.pvm.internal.cmd.DeployCmd@

java.lang.NullPointerException

开始在网上找原因说是因为少了这么两句:

<deployer-manager>
<jpdl-deployer />
</deployer-manager>

但我是引入了jbpm.jpdl.cfg.xml的,不需要加这两句,后来跟代码发现repositorySession 为null

是由于没有加入<repository-session />所致。

 

分享到:
评论
2 楼 fengchao723 2009-12-21  
楼主你好。。我按照你的方法配置出现错误,org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jbpm4Configuration' defined in ServletContext resource [/WEB-INF/dataSource.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.jbpm.pvm.internal.cfg.SpringConfiguration]: Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org.w3c.dom.Element.setUserData(Ljava/lang/String;Ljava/lang/Object;Lorg/w3c/dom/UserDataHandler;)Ljava/lang/Object

我更换了好几个版本的Xerces和XML-APIS.JAR 都不行。从JBPM4.2包里自带的也试了。还是有这个错误。请问你做的时候出现这个错误了么。
1 楼 小开ye 2009-12-08  
谢谢了,下午试着更新了一下,无法保持的同一个事务中,呵呵。
用下面这个就好了。
<hibernate-session factory="hibernateSessionFactory" current="true" /> 

相关推荐

    jbpm4.2开发文档

    #### 五、jbpm4.2与Java Web集成 - **Spring框架集成**:利用Spring的依赖注入特性简化jbpm组件的配置。 - **Web应用示例**:提供了一个基于Tomcat的应用示例,展示了如何在Web环境中使用jbpm进行流程管理。 - **...

    jbpm4.2jar

    jbpm4.2jar是一个与Java业务流程管理(BPM)相关的库文件,它属于jbpm框架的第4.2版本。jbPM是开源的企业级BPM解决方案,它提供了全面的功能来支持工作流自动化、业务规则管理和组织内业务流程的建模、执行和监控。 ...

    Spring 3.1.x + Hibernate 4.2.x+JBPM 5.2 + Ecache例子源码

    标题中的"Spring 3.1.x + Hibernate 4.2.x + JBPM 5.2 + Ecache例子源码"代表了一个集成开发环境,其中包含了四个关键的技术组件: 1. **Spring 3.1.x**:这是一个开源的应用框架,主要用于简化Java企业级应用的...

    Spring 3.1.x + Hibernate 4.2.x+JBPM 5.2 + Ecache例子

    标题 "Spring 3.1.x + Hibernate 4.2.x + JBPM 5.2 + Ecache 例子" 涉及的是一个集成多种技术的Java应用开发示例。这个项目可能是一个完整的业务流程管理系统,它整合了Spring、Hibernate、JBPM和Ecache等关键组件。...

    JBPM5入门学习.doc

    - **4.2.1 修改jbpm相关的数据库配置**: 更新数据库连接参数,确保与MySql兼容。 - **4.2.2 第二次运行时注释掉以下代码**: 为了避免不必要的错误,需要根据实际情况注释掉部分代码。 **4.3 移植WFproject** - **...

    JBPM4工作流应用开始指南.rar

    jBPM4与Spring框架集成 296 18.1 集成的目标 297 18.2 为集成配置jBPM4 297 18.3 为集成配置Spring 299 18.4 使用 301 18.5 测试 302 18.6 小结 302 第19章 jBPM4与JBoss应用服务器集成 303 19.1 流程定义打包部署 ...

    jBPM-4.0开发手册

    Spring集成 本章介绍了如何将jBPM 4与Spring框架集成,这对于希望利用Spring特性的开发者来说非常重要。 ### 总结 jBPM-4.0开发手册全面而详细地介绍了jBPM 4.0的各项功能和技术细节,为开发者提供了宝贵的参考...

    Spring攻略(第二版 中文高清版).part1

    第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...

    JBPM_用户指南

    - 介绍了如何将任务管理组件与JBPM引擎集成。 - **12.2.3 启动任务管理组件** - 介绍了如何启动任务管理组件。 - **12.2.4 和任务管理组件的交互** - 介绍了如何与任务管理组件进行交互。 - **12.3 人工任务...

    Spring攻略(第二版 中文高清版).part2

    第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...

    工作流引擎-选型 (各工作流对比)

    Camunda不仅能够与多种工作流技术兼容,还支持与其他多种工作流引擎进行集成,包括但不限于: - Active BPEL - Alfresco Activiti - Appian BPM - Bonitasoft - JBoss jBPM - IBM WPS / IBM BPM / IBM MQ Workflow /...

    Activiti6.0教程例子下载

    在编写这个Demo之前,至少要了解Activiti与Spring如何集成、XxxService各自的任务与作用,并完成上一章的Demo。 3.2. 流程文件xxx.bpmn20.xml 首先,我们就来编写这个流程的bpmn20.xml文件。 targetNamespace=...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................

Global site tag (gtag.js) - Google Analytics