`
Kyll
  • 浏览: 101731 次
  • 性别: 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 的源码就不能再好好写吗?不看源码鬼才知道是这个属性!
分享到:
评论

相关推荐

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

    配置说明见: http://panyongzheng.iteye.com/blog/1872035

    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

    jbpm4.4学习笔记

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

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

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

    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 定义内联脚本源码...

    jBPM5 用户指南-中文

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

    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 定义内联脚本源码...

    Spring3 Hibernate4 Ecache整合

    这个是在整合JBPM前,先集成SpringMVC3.2和Hibernate4.2的代码,并配置了二级缓存。

    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