`
Kyll
  • 浏览: 104888 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Jbpm 4.2 + Spring 配置

    博客分类:
  • Java
阅读更多
Spring 配置文件
<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jee="http://www.springframework.org/schema/jee"
       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/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

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

	<!-- ibatis START ====================================================== -->
	<bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close">
		<property name="uniqueResourceName" value="mysql/ns"/>
		<property name="xaDataSourceClassName" value="${jdbc.xa.driverClassName}"/>
		<property name="xaProperties">
			<props>
				<prop key="URL">${jdbc.url.ns}</prop>
				<prop key="user">${jdbc.username}</prop>
				<prop key="password">${jdbc.password}</prop>
			</props>
		</property>
		<property name="maxPoolSize" value="30"/>
		<property name="minPoolSize" value="5"/>
		<property name="maxIdleTime" value="10"/>
		<property name="testQuery" value="select 1"/>
	</bean>

	<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"
	      p:dataSource-ref="dataSource"
	      p:configLocation="classpath:sqlmap-config.xml"
		/>

	<bean id="sqlMapClientTemplate" class="org.springframework.orm.ibatis.SqlMapClientTemplate"
	      p:sqlMapClient-ref="sqlMapClient"
		/>
	<!-- ibatis END ======================================================== -->

	<!-- jbpm3 START ======================================================= -->
	<bean id="jbpm3DataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" destroy-method="close">
		<property name="uniqueResourceName" value="mysql/jbpm3"/>
		<property name="xaDataSourceClassName" value="${jdbc.xa.driverClassName}"/>
		<property name="xaProperties">
			<props>
				<prop key="URL">${jdbc.url.jbpm3}</prop>
				<prop key="user">${jdbc.username}</prop>
				<prop key="password">${jdbc.password}</prop>
			</props>
		</property>
		<property name="maxPoolSize" value="30"/>
		<property name="minPoolSize" value="5"/>
		<property name="maxIdleTime" value="10"/>
		<property name="testQuery" value="select 1"/>
	</bean>

	<bean id="jbpm3SessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="jbpm3DataSource"/>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
				<prop key="hibernate.query.substitutions">true 'Y', false 'N'</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="mappingLocations" value="classpath*:/org/jbpm/**/*.hbm.xml"/>
	</bean>

	<bean id="jbpm3Configuration" class="org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean"
	      p:sessionFactory-ref="jbpm3SessionFactory"
	      p:configuration="classpath:jbpm3.cfg.xml"
	      p:createSchema="false"
		/>

	<bean id="jbpmTemplate" class="org.springmodules.workflow.jbpm31.JbpmTemplate">
		<constructor-arg index="0" ref="jbpm3Configuration"/>
	</bean>
	<!-- jbpm3 END ========================================================= -->

	<!-- jbpm4 START ======================================================= -->
	<bean id="jbpm4DataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" destroy-method="close">
		<property name="uniqueResourceName" value="mysql/jbpm4"/>
		<property name="xaDataSourceClassName" value="${jdbc.xa.driverClassName}"/>
		<property name="xaProperties">
			<props>
				<prop key="URL">${jdbc.url.jbpm4}</prop>
				<prop key="user">${jdbc.username}</prop>
				<prop key="password">${jdbc.password}</prop>
			</props>
		</property>
		<property name="maxPoolSize" value="30"/>
		<property name="minPoolSize" value="5"/>
		<property name="maxIdleTime" value="10"/>
		<property name="testQuery" value="select 1"/>
	</bean>

	<!-- jbpm4SessionFactory -->
	<bean id="jbpm4SessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
		<property name="dataSource" ref="jbpm4DataSource"/>
		<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>
			</list>
		</property>
	</bean>

	<bean id="jbpm4Configuration" class="org.jbpm.pvm.internal.cfg.SpringConfiguration">
		<constructor-arg value="jbpm42.spring.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 END ========================================================= -->

	<!-- transaction START ================================================= -->
	<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"
		  p:forceShutdown="true"
		/>

	<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp" p:transactionTimeout="300"/>

	<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"
	      p:transactionManager-ref="atomikosTransactionManager"
	      p:userTransaction-ref="atomikosUserTransaction"
		/>

	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="get*" read-only="true" rollback-for="java.lang.Exception"/>
			<tx:method name="*" rollback-for="java.lang.Exception" propagation="REQUIRED"/>
		</tx:attributes>
	</tx:advice>

	<aop:config>
		<aop:advisor pointcut="execution(* org.kyll.ns.*..*Facade.*(..))" advice-ref="txAdvice"/>
	</aop:config>
	<!-- transaction END =================================================== -->

</beans>



Jbpm 4.2 配置文件
<?xml version="1.0" encoding="UTF-8"?>

<jbpm-configuration>

	<process-engine-context>

		<command-service name="txRequiredCommandService">
			<skip-interceptor/>
			<retry-interceptor/>
			<environment-interceptor/>
			<spring-transaction-interceptor/>
		</command-service>

		<command-service name="newTxRequiredCommandService">
			<retry-interceptor/>
			<environment-interceptor policy="requiresNew"/>
			<spring-transaction-interceptor/>
		</command-service>

		<repository-service/>
		<repository-cache/>
		<execution-service/>
		<history-service/>
		<management-service/>
		<identity-service/>
		<task-service/>

		<!--<hibernate-session-factory/>-->

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

		<!--<job-executor/>-->

		<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/>

		<business-calendar>
			<monday hours="9:00-12:00 and 12:30-17:00"/>
			<tuesday hours="9:00-12:00 and 12:30-17:00"/>
			<wednesday hours="9:00-12:00 and 12:30-17:00"/>
			<thursday hours="9:00-12:00 and 12:30-17:00"/>
			<friday hours="9:00-12:00 and 12:30-17:00"/>
			<holiday period="01/07/2008 - 31/08/2008"/>
		</business-calendar>

	</process-engine-context>

	<transaction-context>
		<hibernate-session factory="jbpm4SessionFactory" current="true"/>
		<repository-session/>
		<db-session/>
		<message-session/>
		<timer-session/>
		<history-session/>
	</transaction-context>

</jbpm-configuration>

这篇配置文件包括 Spring + iBatis + Jbpm3 + Jbpm4.2 和跨数据源的事务, 留作自己备忘^_^。

注意:  Jbpm4.2 配置中的 <hibernate-session factory="jbpm4SessionFactory" current="true"/> 这行, factory="jbpm4SessionFactory" 和 current="true" 不加的时候, 会引起异常, factory 指定使用哪个 SessionFactory, 查了源码才知道是这个属性, 唉~~~~~~ Jbpm 的源码就不能再好好写吗?不看源码鬼才知道是这个属性!
分享到:
评论

相关推荐

    jbpm4.2开发文档

    #### 二、jbpm4.2安装与配置 - **环境要求**: - **JDK**: JDK 1.5 或更高版本。 - **服务器**: 支持Tomcat 6.x/7.x、JBoss AS 5.x/6.x 等应用服务器。 - **安装步骤**: 1. **下载源码包**:从官方网站下载jbpm...

    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.1入门学习

    4.3.8 Struts和spring的配置 52 4.4 部署和运行 54 4.4.1 启动Demo Human Task Service 54 4.4.2 启动Tomcat 54 4.4.3 运行Demo 55 附录A:MySql安装图解 59 一、MySQL5.1安装 59 二、配置MySQL Server 63

    JBPM5入门学习.doc

    - **4.3.5 Jbpm相关配置文件更新**: 更新JBPM相关的配置文件,如persistence.xml、jbpm.cfg.xml等。 - **4.3.6 Java服务器端编码**: 编写Java代码实现服务器端逻辑。 - **4.3.7 Jsp客户端编码**: 编写JSP页面作为...

    jbpm4.4学习笔记

    配置Spring相关文件: 42 二、配置Hibernate相关文件: 44 三、整合需要jbpm提供的jar包: 44 17 HelloWorld 45 Xml: 45 Code: 45 18 从数据库中取出xml文件和png图片 48 19 向页面输出图片 49 20 页面显示图片 50 ...

    JBPM开发实战教程

    通过本教程的学习,读者可以全面了解JBPM的基本概念、安装配置过程以及如何基于JBPM开发实际项目中的工作流应用。无论是初学者还是有一定经验的开发者,都能够从中获得有价值的信息和技术指导。希望读者能够在实践中...

    JBPM5权威指南

    4.2. Knowledge-based API 21 第五章 核心引擎:基础 21 5.1 创建一个流程 21 5.1.1 Eclipse BPMN2.0图形编辑器插件 22 5.1.2 使用XML定义流程 22 5.1.3使用流程API定义流程 24 5.2 不同流程构造的细节概述 25 5.3 ...

    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 流程定义打包部署 ...

    JBoss jBPM jPDL中文指南

    #### 三、jBPM jPDL安装与配置 ##### 3.1 下载包概述 - **jPDL 3.12**:这是jPDL的一个具体版本,包含了核心库和工具。 - **jPDL流程设计器**:用于可视化地创建和编辑业务流程。 ##### 3.2 JBoss jBPM项目目录 - *...

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

    4.2 将Spring Bean注入脚本中 157 4.2.1 问题 157 4.2.2 解决方案 157 4.2.3 工作原理 157 4.3 从脚本中刷新Bean 160 4.3.1 问题 160 4.3.2 解决方案 160 4.3.3 工作原理 160 4.4 定义内联脚本源码...

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

    4.2 将Spring Bean注入脚本中 157 4.2.1 问题 157 4.2.2 解决方案 157 4.2.3 工作原理 157 4.3 从脚本中刷新Bean 160 4.3.1 问题 160 4.3.2 解决方案 160 4.3.3 工作原理 160 4.4 定义内联脚本源码...

    JBPM_用户指南

    #### 十八、和Maven,OSGi,Spring的整合 - **18.1 Maven** - 介绍了如何将JBPM与Maven项目进行整合。 - **18.2 OSGi** - 介绍了如何将JBPM与OSGi环境进行整合。 以上内容概括了JBPM用户指南的主要知识点,为...

    Activiti6.0教程例子下载

    至于与Spring的集成,一定要熟悉基于Spring配置Activiti,以及事务的处理。 3. 入门示例(参考手册中10分钟教程) 3.1. 概述 下面开始编写一个示例。这个Demo为一个“月度报表申请”流程。由“sales(销售)”组的...

    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