jbpm4.3自由流程(动态路由)的实现

来源:互联网 发布:qemu源码分析 编辑:程序博客网 时间:2024/06/11 10:25

      jbpm是老外开发的,更是和国外的工作流需求,但是要想真正适用于咱中国,可能需要我们自己去探索一些东西,比如任意回退、会签(包括加、减签,补签)、撤销(又叫回退)、自由流(又叫动态路由)。此处之所以叫做灵活的临时动态性需求,就是因为这些需求,存在着很强的人为性因素(呵呵,此处才是真正的中国特色)。现业务需求方提出能不能够发起人在发起单据时,自由选择下个审批节点,现提供一种解决办法就是动态创建transition转移。先贴上相关代码:

这是在dao实现层进行动态创建transition,但要注意,创建好了transition后,我们需要指定流转到新的transition中

经过以上操作后,流程实例应流到我们指定的审批节点,但是在审批节点审批时可能会发生以下错误:

No unnamed transitions were found for the task for‘C’类似的错误,这是因为所有的activity的外向transition都有自己的name,所以我们在completeTask时应该指定对应的transition名称,如completeTask(taskId, "transitionName")。如果调用completeTask(taskId)就会报上述错误。这里大家要注意一下。

 

创建使用后,当然我们需要remove掉之前create的transition,否则,线就会很乱

 

至此,大致主要的代码和注意点都列出来了,但是这种方法有一定的弊端就是:

动态创建transition,在多线程同时访问时,可能会出现很多问题,所以自由流程慎用!

如果大家有更好的解决自由流程的方法,也希望能给我留下一些指点,谢谢~共同进步

原创粉丝点击