Jbpm4实现会签

阅读更多
说实话,之前对会签是没有具体概念的,查过jbpm3实现会签的例子,没有太大的体会。
这次有个系统一定要用到会签,用大家的话说,工作流要支持串行和并行;所以准备写一个demo实现一下简单的会签例子。

思路是这样的,流程有两个节点:申请和会签。在会签节点任务创建后,通过程序按会签人数创建出对应的会签子任务,对应到具体的审批人上。

这里有3种情况退回流程:1) 会签中某一个人不同意,就马上退回节点到申请;2) 全部会签结束后,如果有不同意的,则退回节点到申请;3) 全部会签结束后,超过半数不同意的,退回节点到申请。

关键点在于什么时候去创建子任务。
1)我试用了,这个时候task还没有创建出来。
2)使用了,可能成功,有两种不同的结果:
  2.1) 如果jbpm的所有事务,都是有spring来管理,即jbpm.cfg.xml中是这样的设置话,在AssignmentHandler的assign中,是可以创建出subtask的。这里注意不要申明式调用saveTask,让hibernate判读是否去保存。
2.2) 如果jbpm自己管理事务,即去掉current="true"属性,那么就无法保存创建出的subtask,因为在保存的时候,要用到parent task的historytask,而historytask这个时候还没有创建。
当然,针对2.2,我在想,是否可以使用另一个线程来处理创建subtask。类似于会签task全部创建结束后,再触发监听,去创建subtask。所以继续尝试下面的实现方法。
3) 使用好像也不行,至少我使用job后,调试遇到了一点问题。

突然回过头来一想,我想这么多方法,无非就是想要实现在恰当的时候去createtask,那么我在“申请”提交后,得到“会签”task,这个时候去create sub task,不就可以了?
不接管jbpm的事务,我还是搞不定。
接下来只能通过接管事务再来试试了。

接管事务,在AssignmentHandler的assign中实现subtask,测试通过。

demo暂时不上传了,如果确实有需要的,再说了。

你可能感兴趣的:(JBPM,Spring,Hibernate,工作)