驰骋工作流引擎JFlow与activiti的对比之4种高级分支同步模式

  1. 多重选择(Multiple Choice)

在流程中,当一个活动完成后,有多个分支进行选择,可以选择执行其中的一个或者N个分支。

例子:比如去世博园玩,在门口检票后,可以选择A-E个片区中的N个进行观光。

 

ACTIVITI 中的支持情况:

1.JPDL方式不支持先定义好这里的几种,然后根据条件去筛选其中的几种进行,但是ACTIVITI.4之后支持一种叫foreach的节点,允许我们在运行时指定几种特定的任务,比如上面例子中的片区,我们可以在选定后再去循环。

2.BPMN方式支持根据条件执行多个子分支。

 

JFLOW中的支持情况:

1.通过定义流程为异表单分合流来实现。

a通过条件控制发起子线程数量。设置方向条件的时候,可以根据需要,选择不通的条件设置,比如:岗位条件、部门条件、表单条件等。

b通过节点树形中设置手工选择方向控制,可以控制发起子线程的发起数量。

2.通过父子流程也可以实现。

  1. 同步聚合(Synchronizing Merge)

在流程中的某个聚合点,流程会等待所有的分支到来,才能激活后续的活动。如果分支只有一个,那么就变成简单聚合模式;如果存在2个以上分支,那就是同步模式。

这种模式的关键在于能够动态的根据分支的多少进行聚合。

 

ACTIVITI 中的支持情况:

可以通过设置ACTIVITI 的join节点属性multiplicity的值为某个变量,并在程序中动态的修改变量的值来制定分支的数量。

JFLOW中的支持情况:

分合流中合流操作。无论分支有多少,都可以进行汇总,并且可以对汇总的子线程进行删除操作、完成率控制等。

 

JFLOW的多重选择与同步聚合实例图:

结束为聚合点,中间的为分支。

 

  1. 多重聚合(Multiple Merge)

在流程中的多个分支,都可以激活后续的活动,也就是会产生多个实例。

例子:游客观光完N个片区之后,每个片区各自的系统可以对游客在自己片区的信息进行存储。

 

ACTIVITI 与JFLOW的支持请参考 同步聚合。

  1. 鉴别器(Discriminator)

在流程的某个聚合点,N个分支的第一个分支到达后,就立刻激活后续活动;与此同时,流程仍然要等待其余的分支完成并忽略完成。

注意:在其余分支未全部完成前,第一个到达的分支所激活的后续节点是无法执行的。

例子:个人申请提交后,并行提交给第一导师审批、第二导师审批、第三导师审批,他们中只要有一个完成了,那么就可以提交给学院审批。

N-out-of-M鉴别器模式:

跟鉴别器模式一样的,只是这种模式是N个到达后,激活后续节点,而剩下的M-N个节点未完成前,新激活的后续节点一样无法被执行。

ACTIVITI 中的支持情况:

没有直接支持这种模式,但是通过自定义节点,应该是可以处理这种模式的。

JFLOW中的支持情况:

有两个属性的控制,可以实现功能,就是上面所说的子线程完成路和子线程删除规则。

第1个:子线程完成率。 该规则可以决定是否可见

第2个:子线程删除规则。该规则决定那些子线程可以被删除以及他们的删除方式。

 

原文地址:https://www.cnblogs.com/mengjuan/p/10124284.html