流程的回退是一个复杂的计算特别是在中国式的流程里,现实中的流程则相对简单如我把一个审批文件提交出去后,若由两个人(张三、李四)同时处理若张三或李四需要把文件退回来,文件直接打回到发起人我这里这样张三或李四手上不再存在审批文件,但对于JBPM或Activiti的流程回退则做不到这么简单
但原则上我们要符合这种现实的要求:流程由谁提交过来,则退回给谁
为了弄清这个关系,我们以一个稍为复杂一点Activiti流程为例
若F回退,则应该产生E任务B、C则正常运行,继续往下执行后将会产生I任务,再者是J任务若在I任务回退,则应该回退至F
同理,若B与C执行完荿后将会产生D。若我们记录任务的产生顺序将比较容易实现任务的回退,由于jbpm4或activiti5均不记录这种操作所以要实现回退均比较困难。
在此我们用一个有效的数据结构记录所有的任务产生的顺序如下所示:
有了这样的一个数据结构,记录了每个任务节点的产生顺序我们茬任何一个节点上,都能有效回退至上一任务节点并且包括自由跳转的方式,如在I节点若我们回退至E,就把F节点从这个记录顺序中去掉然后产生E任务出来。
这里还有一些问题尚没有得到有效解决:
发布了0 篇原创文章 · 获赞 0 · 访问量 121