spring和jbpm事务整合问题

binggege 2010-09-13

 

标题:spring和jbpm事务整合问题

1楼
xunclapton 发表于:2010-9-10 21:31:21
 按照手册中整合了jbpm,可以运行,但是测试发现事务没有整合到一起

比如用spring声明了OrderServiceImp中takeOrder采用事务管理,如果手工地抛出一个runtimeException,只有我自己管理的数据库事务会回滚,但jbpm的事务没有被回滚。

比如执行下面的代码,会发现order1并没有被提交,符合期望

但在数据库中可以看到这个processInstance被创建,而且执行正常,相关history表中也有相应记录

而我期望的是jbpm的数据要和业务的数据统一提交或回退

publicclassOrderServiceImpextendsHibernateDaoSupportimplementsOrderService{

publicvoidtakeOrder(Orderorder1,Orderorder2){

getHibernateTemplate().save(order1);

ProcessInstanceprocessInstance=executionService

.startProcessInstanceByKey("StateSequence");

ExecutionexecutionInA=processInstance.findActiveExecutionIn("a");

processInstance=executionService.signalExecutionById(executionInA

.getId());

if(true)

thrownewRuntimeException();

getHibernateTemplate().save(order1);

}

}
2楼
xyz20003 发表于:2010-9-11 8:31:13
 需要使用aop,将tx配置在takeOrder()方法这一层,而不是让hibernateTemplate自动管理,为每次save()打开一个tx。
3楼
xunclapton 发表于:2010-9-12 0:55:09
是在takeOrder上配置了tx的,所以才很疑惑

最后发现是犯了一个低级错误,初始化executionService这些jbpmservice时重新new了一个ApplicationContext,这样就搞了两个容器,当然事务不能整合了

第一次用spring,汗。。。

相关推荐