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.
相关推荐
《基于Hibernate Spring Struts Shiro Activiti EasyUI的物流系统详解》 在信息化时代,物流系统的建设对于企业管理、效率提升至关重要。本项目采用了一系列主流的Java企业级开发框架,包括Hibernate、Spring、...
在这个“java mvc基于struts和hibernate整合的一个简单的OA系统”中,Struts作为控制器框架,负责处理用户请求并调度应用流程;Hibernate则作为持久层框架,用于对象关系映射(ORM),简化数据库操作。 **Struts...
Spring Boot与Activiti的整合是企业级应用中常见的工作流管理解决方案。Spring Boot以其"约定优于配置"的理念,简化了Spring应用的初始化和配置过程,而Activiti则是一款功能强大的开源工作流引擎,用于处理业务流程...
这些jar包涵盖了核心的Activiti引擎、数据库连接、持久化框架(如Hibernate)、依赖注入容器(如Spring)等关键组件。 首先,我们要理解Activiti的核心jar包。这些文件通常包括`activiti-engine.jar`,它是执行流程...
7. **集成能力**:Activiti可以方便地与Spring框架集成,提供了一套全面的Spring配置,同时支持JPA、Hibernate等持久层技术,便于与现有应用系统无缝对接。 8. **插件系统**:Activiti提供了插件机制,允许开发者...
- **Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set**:这个错误通常是因为Hibernate方言未设置,需要在配置文件中指定数据库方言。 - **工作流编辑界面异常**:可能是...
Activiti 是一个开源的工作流程引擎,它主要用于自动化业务流程。这个源码包是 Activiti 5.22.0 版本,包含了整个框架的源代码,为开发者提供了深入理解 Activiti 内部机制的机会。以下是一些关于 Activiti 的核心...
8. **持久化(Persistence)**:Activiti使用Hibernate作为默认的持久化机制,保存流程实例和相关数据到数据库。源码会展示如何配置和使用这一特性。 通过研究这个"activiti web 例子 源码",开发者可以深入理解...
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 ...
3. ** persistence层**:Activiti 使用Hibernate作为持久化框架,将流程实例、任务等数据存储在数据库中。通过Entity、SessionFactory和Session接口,实现与数据库的交互。 4. **流程执行**:Activiti 使用基于活动...
Activiti Designer是基于Eclipse的一款流程建模工具,主要用于设计和管理Activiti工作流引擎的业务流程。在 Activiti Designer 5.18 版本中,它为开发者提供了直观的图形化界面,使得创建、修改和理解业务流程模型变...
Activiti 适配达梦数据库教程 activiti 是一个开源的 Workflow 和 BPM system,它提供了强大的工作流引擎和业务流程管理功能。然而,activiti 默认支持的数据库只有 MySQL、 PostgreSQL、Oracle 等少数几种,而达梦...
Activiti 是一个开源的工作流和业务自动化引擎,它在Java平台上运行,并且与Spring框架高度集成。这个"activiti5.22jar包"是Activiti 5.22版本的打包文件,其中包含了所有运行Activiti所需的核心库和依赖。在本文中...
《Spring-Activiti在Ruoyi框架中的应用与二次开发》 在当今的企业级应用开发中,工作流管理系统已经成为不可或缺的一部分。Spring-Activiti作为一款强大的工作流引擎,结合Spring Boot框架,为开发者提供了便捷、...
Jeecg集成activiti.docx Jeecg集成activiti是一个关于如何将activiti集成到Jeecg平台上的指南。下面是从给定的文件中提取的相关知识点: 1. activiti项目结构:activiti项目是一个Maven项目,包含了数据库文件,...
SSH Activiti是一个集成开发环境,其中SSH代表Spring、Struts和Hibernate,这三大框架是Java Web开发中的常用组件。Activiti则是一个业务流程管理(BPM)系统,它提供了工作流引擎,用于处理企业的业务流程自动化。...
10. **集成实践**:通过案例分析,展示Activiti7与其他Java框架(如Spring Boot、Hibernate等)的集成,以及在实际项目中的应用策略。 《Activiti7开发指南》不仅适合初学者了解和掌握Activiti7的基本操作,也适合...
activiti-6.0.0.zip 工作流官网包 (如果没有积分可以直接Q我:499384808,免费分享) 1. database里放着各种数据库的建表、删表、升级语句数据库包括db2、h2、hsql、mssql、mysql、oracle、postgres 2. libs 相关...
Activiti 是一个开源的工作流程和业务自动化引擎,它在企业级应用中被广泛使用来管理业务流程。这个压缩包 "activiti-explorer.war" 是 Activiti 的一个版本,具体是 5.22 版本。WAR 文件是 Web 应用程序档案(Web ...