码迷,mamicode.com
首页 > 其他好文 > 详细

总结回退和自由跳转的场景和实现方法

时间:2014-12-12 16:10:59      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   sp   on   数据   2014   log   bs   

回退的具体场景:

   例如请假,员工a由于某些原因需要请假,上面是组长b,假设b审核通过了,组长b上面是主管c,需要主管c审核,但c感觉a员工提出的请假理由不够充分,那么这是退回就开始发挥它的作用了,现在可以画一个简单的图a->b->c,c点发起回退退到的事b(注意不是直接退回到a)。

 bubuko.com,布布扣

 

 

我们可以看上面的流程图进行具体解析:

以上流程包括了多种流程节点,如分支,并行节点,多实例任务,子流程,假设现在流程产生了B,C,E任务,而e点进行回退,则回退到A,既然回退到A了,那么是不是B,C,E任务就应该销毁(因为退回到了A任务,只要A通过就会又产生B,C,E任务);若此时产生了B,C,F任务,F回退,则应该产生E任务,B、C则正常运行,继续往下执行后,将会产生I任务,再者是J任务。若在I任务回退,则应该回退至F。

那么应该怎么具体实现回退呢,我想应该先建立一个数据结构,如下图:

bubuko.com,布布扣

有了这样的一个数据结构,记录了每个任务节点的产生顺序,我们在任何一个节点上,都能有效回退至上一任务节点,并且包括自由跳转的方式,如在I节点,若我们回退至E,就把F节点从这个记录顺序中去掉,然后产生E任务出来。

 

下面,我们应该着重讨论这个数据结构怎样建立,

我们可以建立一张表,将该数据结构的每条分支都记录进去,任何与流程图进行绑定,意思是这样的流程启动就会与这个表进行绑定,

流程启动,就会产生A任务,A通过就会产生B,C,E任务,任务E通过,满足一定条件就会产生F任务,进而任务I,进而产生任务J,那意思岂不是说D任务产生就一定有A->B->DA->C->D这两条链存在,同理J任务产生,就会产生A->E->F-I-JA->E->G->I-J(若是条件有重合的地方两条链都存在),那么怎么才能确定到底是那一条链呢,我想可以用着中方法在历史任务中查找是否存在G任务,若存在就有这条链的存在,将存在的链设置一个状态,表示着这个链确实存在。

 

自由跳转,

自由跳转意思就是想跳到那就跳到那,当然用上面的数据结构也行,但我想既然要跳转,肯定会知道现在的任务id和要跳转到的任务id,那么可不可以将要跳转到的任务对现在的任务进行覆盖。

总结回退和自由跳转的场景和实现方法

标签:style   blog   http   sp   on   数据   2014   log   bs   

原文地址:http://www.cnblogs.com/junluoyu/p/4159662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!