http://forums.activiti.org/en/viewtopic.php?f=6&t=4360
I have solved the problem for our needs.
Now Activiti uses the HibernateTransactionManager and with
Now Activiti uses the HibernateTransactionManager and with
that we can make a full rollback!
Its not important that Activiti uses MyBatis,
because after a small research about MyBatis I found out that
MyBatis support the HibernateTransactionManager.
ApplicationCotext:
ApplicationCotext:
Code:
<!-- DataSource Definition -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/activiti"/>
<property name="username" value="root" />
<property name="password" value="root" />
<property name="poolPreparedStatements" value="true" />
<property name="maxActive" value="50" />
<property name="maxIdle" value="10" />
</bean>
<!-- Session Factory Definition -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
...
</bean>
<!-- Hibernate Transaction Manager Definition -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<!-- Process Engine Definition -->
<bean id="processEngineConfiguration"
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/activiti"/>
<property name="username" value="root" />
<property name="password" value="root" />
<property name="poolPreparedStatements" value="true" />
<property name="maxActive" value="50" />
<property name="maxIdle" value="10" />
</bean>
<!-- Session Factory Definition -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
...
</bean>
<!-- Hibernate Transaction Manager Definition -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
<property name="dataSource">
<ref local="dataSource" />
</property>
</bean>
<!-- Process Engine Definition -->
<bean id="processEngineConfiguration"
class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
</bean>
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="transactionManager" />
<property name="databaseSchemaUpdate" value="true" />
<property name="jobExecutorActivate" value="false" />
</bean>
Methods for start and commit a transation
(all Transactions done after startTransaction are commit after call commit Transaction):
Code:
protected TransactionStatus startTransaction() {
PlatformTransactionManager manager = getTransactionManager();
DefaultTransactionDefinition d = new DefaultTransactionDefinition();
d.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
transaction = manager.getTransaction(d);
return transaction;
}
protected void commit(TransactionStatus transaction) {
PlatformTransactionManager manager = getTransactionManager();
manager.commit(transaction);
}
protected void rollback(TransactionStatus transaction) {
PlatformTransactionManager manager = getTransactionManager();
manager.rollback(transaction);
}
private PlatformTransactionManager getTransactionManager() {
return (PlatformTransactionManager) this.appContext
.getBean("transactionManager");
}
PlatformTransactionManager manager = getTransactionManager();
DefaultTransactionDefinition d = new DefaultTransactionDefinition();
d.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
transaction = manager.getTransaction(d);
return transaction;
}
protected void commit(TransactionStatus transaction) {
PlatformTransactionManager manager = getTransactionManager();
manager.commit(transaction);
}
protected void rollback(TransactionStatus transaction) {
PlatformTransactionManager manager = getTransactionManager();
manager.rollback(transaction);
}
private PlatformTransactionManager getTransactionManager() {
return (PlatformTransactionManager) this.appContext
.getBean("transactionManager");
}
I hope this helps anyone who have a problem
to integrate activiti in a hibernate environment.
P.S.: I think it would be great if this method (or something like that)
P.S.: I think it would be great if this method (or something like that)
is also found in the activiti doucumentation,
because lots of projects currently using hibernate for persitences and in the activit
documentation doesn't exist a guide to integrate activiti in an hibernate environment.
相关推荐
java mvc基于struts和hibernate整合的一个简单的OA系统,包含数据库-mysql
基于hibernate spring struts shiro activiti easyui框架的物流系统,可做毕业设计代码自己看着视频手打的,可以运行,内涵数据库 说明等,适合做毕业设计和课程答辩
Spring Boot整合Activiti引擎,实现工作流相关基本操作
A practical guide to designing and developing ...Chapter 8: Integrating Activiti with Third-party Services 187 Chapter 9: Implementing Advanced Workflows 213 Summary 252 Pop Quiz Answers 253 Index 255
Jeecg集成activiti.docx Jeecg集成activiti是一个关于如何将activiti集成到Jeecg平台上的指南。下面是从给定的文件中提取的相关知识点: 1. activiti项目结构:activiti项目是一个Maven项目,包含了数据库文件,...
activiti的jar包
with the Activiti project. My enthusiasm grew even more and I offered my time to start working on a first version of the Activiti Designer. Together with my former col- leagues, Tiese Barrell, Yvo ...
activiti 5.22 explorer的war包
《Activiti实战》 一共四个部分:准备篇(1~2章)介绍了Activiti的概念、特点、应用、体系结构,以及开发环境的搭建和配置;基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细...
系统采用Ext+spring+hibernate或jdbc ,带工作流activiti,用户,角色,权限,机构功能完善,工作流分 经办 - 审批 - 复核 - 确认 通用则往下节点,不同意则打回更正,更正可以终止,可以再次审批,带有审批轨迹
activiti工作流的 PPT 大致讲了一下activiti的常用API
activiti designer 5.18 eclipse eclipse插件 activiti插件 activiti设计
activiti-5.22.0zip下载
Activiti工作流中文开发帮助API文档说明。 Activiti工作流表结构文档说明。
Activiti 5.22.0 全部源码,帮助分析Activiti 工作原理!
赠送jar包:activiti-engine-5.21.0.jar; 赠送原API文档:activiti-engine-5.21.0-javadoc.jar; 赠送源代码:activiti-engine-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-engine-5.21.0.pom; 包含...
activiti modeler 编辑器
忙活了一个星期左右,查找各种资料,终于将Activiti的流程设计器分离出来,与SpringMVC,spring整合了起来,先把工程分享出来,等有时间了在慢慢讲解具体的整合步骤。工程下载之后直接可以运行,只需要改一下数据库...
Activiti6最大的变化点就是对代码进行了重构,该版本修复以往的Bug并不多,但内部实现相对来说变化比较大。其突出的变化如下所示: 新增两款新引擎,Form引擎和DMN引擎(动态引擎)。其中DMN引擎允许开发人员创建...
工作流引擎activiti-5.22.0,流程定义插件Activiti-activiti-5.22.0