spring和jbpm事务整合有关问题

spring和jbpm事务整合问题

 

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

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

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


比如执行下面的代码,会发现order1并没有被提交,符合期望
但在数据库中可以看到这个processInstance被创建,而且执行正常,相关history表中也有相应记录
而我期望的是jbpm的数据要和业务的数据统一提交或回退
public class OrderServiceImp extends HibernateDaoSupport implements OrderService{
    public void takeOrder(Order order1, Order order2) {
        getHibernateTemplate().save(order1);
        
        ProcessInstance processInstance = executionService
                .startProcessInstanceByKey("StateSequence");
        Execution executionInA = processInstance.findActiveExecutionIn("a");
        processInstance = executionService.signalExecutionById(executionInA
                    .getId());

        if(true)
            throw new RuntimeException();

        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这些jbpm service时重新new了一个ApplicationContext,这样就搞了两个容器,当然事务不能整合了
第一次用spring,汗。。。