我想在一个产品中用Activiti或jBPM-5替换自定义BPM实现,该产品使用Hibernate(No JPA)和Spring进行持久层实现。不幸的是,Activiti和jBPM5都需要JPA(根据他们的文档),并且不可能将所有现有的Hibernate实现迁移到产品中的JPA。
注意:我知道应用程序不符合JPA,并且不能使用其他JPA提供程序。
答案 0 :(得分:1)
关于交易,请参阅Activiti Spring Transaction文档。如果您无法移植应用程序以使用JPA,则另一个选项是在Hibernate域上层叠外观。 Activiti允许您在spring托管bean上调用方法,因此您可以创建外观或使用现有服务层。查看Activity附带的示例应用程序,了解spring集成的工作原理。
答案 1 :(得分:0)
首先启动Hibernate事务并执行您想要的任何业务逻辑
通过调用JBPM API启动进程或发送事件等来启动JBPM事务。
任何WorkItemHandler实现都需要使用会话工厂API加入外部事务
需要在每次WorkItemHandler执行结束时调用Hibernate flush(),以触发业务代码生成的大多数异常
WorkItemHandler应该捕获业务代码生成的任何异常并重新抛出它,以便JBPM事务也失败