ActionHandler中:我们将业务在JBPM的回调接口ActionHandler实现中处理,将业务表单对象通过 ContextInstance的setTransientVariables()传入,在ActionHandler中持久化,也就是 说,ActionHandler是我们的业务处理主体,可以通过在Task实例中记录业务表单ID。另外,数据库的Connection可以通过 ActionHandler的ExecuteContext 参数来取得!
在Business Service中呢:这个Service就对应于用Spring框架时的Service,我们可以在service方法里面调用JBPM的API,如 JbpmConfiguration.getInstance().createJbpmContext(); TaskInstance ti = jContext.getTaskInstance(tiid); 将业务数据都持久化到JBPM的活表里,这样只在一个数据库Conntection上,可以避免分布式事务的问题。
上面的这两种方式,第一种是我推荐的,其基本思想是将工作流引擎当成一个集成框架,一切以流程为主线。第二种是将工作流引擎当成辅助的第三方库。两种方式对系统的侵入性都非常大,无侵入性我则认为不太现实。