什么叫做分合流,分合流是一种什么流程模式
发布时间: 2022-04-28 预览次数:

一、分合流

BPM中,大家可能听过线性流程、子流程等等,分合流这种叫法可能是第一次听说,也不理解其模式与意义,那么下面我们讲一讲什么是分合流,它是怎么来的,是一种什么样的场景模式。

1.1分合流的定义

在一个流程中,通过设置与配置几个有关联关系的实例,被主流程节点调起使用,来辅助主流程实现某个或多个特定业务的活动或事件,我们将之称之为分合流。

具体点讲就是我们将多实例的分叉活动称之为分流,多实例同步活动称之为合流,分叉之后生成的分支多实例称之为子线程。如果在一个流程中存在分叉、多实例并行与多实例同步,则称之为分合流。

也可以理解为,在某一个流程中,可以同时发起、并行多个线性流程的流程模式。

1.2分合流与线性流程的区别

线性流程,即按照流程设计的步骤顺序或条件呈线性方式,一步步的向下运行,这样的模式下每个节点有先后顺序,就是每个节点只有一个节点是活动的。

分合流与线性流程的不同之处在于,分合流可以产生多个分支,分合分支可以并行流转,也可以在指定环节进行合流同步。

相比较线性流程而言,分合流可以实现更为复杂的业务逻辑,在某些场景下,可以尽量少的配置线程流程,实现统一、有序、业务相近的业务流程。

1.3分合流的来源

JBPM4中存在5种基本流程控制模式、4种高级分支同步模式与4种包含多实例的模式,分合流就来源于以上几种模式的相互配置与综合应用。但是以上的配置与模式过于繁多,我们将以上模式重新梳理并整理后,衍生出新的一种流程模式,即分合流。它几乎支持以上所有模式的组合与应用,并且将各种模式的组合分成同表单分合流与异表单分合流,简化了开发与配置。

分合流整合的JBPM中的几种模式:

1.并行分叉(ParallelSplit:流程在某个活动(节点、步骤)之后产生多个分支,并且并行流转。

image.png

2.同步(Synchronization):在流程中的某个点,多个并行的子流程或者活动,合并成一个流程。流程必须等待所有的分支都执行完成后,才能激活后续活动。

image.png

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

image.png

4.同步聚合(Synchronizing Merge在流程中的某个聚合点,流程会等待所有的分支到来,才能激活后续的活动。如果分支只有一个,那么就变成简单聚合模式;如果存在2个以上分支,那就是同步模式。这种模式的关键在于能够动态的根据分支的多少进行聚合。

image.png

5.多重聚合(Multiple Merge在流程中的多个分支,都可以激活后续的活动,也就是会产生多个实例。

image.png

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

7.无同步的多实例(MIwithout在流程中,一个活动可以激活多个实例,每个实例相互独立,并不需要在后面进行同步。

image.png

8.设计时确定的多实例(MIwith  a  Priori  Design  Time  Knoledge在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候就已经知晓率。

image.png

9.运行时确定的多实例(MI with a Priori RunTime Knoledge在流程中,被激活的多个实例需要在某个聚合点聚合,而实例的个数在设计的时候并不知道,只有在运行时根据条件来决定需要激活多少个实例。

image.png

二、分合流的使用场景

场景一:设备巡检

制定巡检计划(包括日常巡检计划与定期巡检计划),巡检计划包括巡检内容、巡检时间、巡检人员、巡检确认人等,巡检人员按照计划内容对巡检区域内设备进行日常检查或定期检查,并将检查情况汇报确认人,当所有设备巡检完成之后,负责人可以查看此次巡检的完成情况。

在进行设备巡检时,每个人负责巡检的设备、内容、区域可能都不相同,而且确认人也可能不一样,此场景下可以使用分合流,将计划内容分发给各个巡检人员进行巡检。

场景二:处理工单

客服组接到工单之后,按照工单的类型将工单指派给相关工单处理小组的组长,并由组长根据工单内容进行任务分配,接到任务的工程师在完成各自的工作之后,将工单处理情况汇总并交给组长进行确认,组长确认完成之后,反馈给客服人员。

在此处流程中,可能存在多个工程分别处理不同任务的情况,我们可以将组长接单环节,设置成分流点,工程师处理环节及步骤设置成子线程,组长确认环节设置成合流点,通过分合流的方式完成工单的流程。

场景三:项目评审

某证卷公司打算某公司进行增资,须由基金经理、风控总监及运营总监,同时分别填写或上传基金报告、风控报告及运营报告,然后由副总安排上会讨论,与会人员需要根据上传的三份报告进行评审与讨论,最终根据会议结果决定是否对该公司进行增投。

此案例中,除了某公司的基本信息之外,还需要填写3份报告,每份报告都是不同的人分别填写,且都填写完成之后,才能进行下一步的会议评审环节,此种场景也符合分合流的应用。

 

以上场景只是分合流模式应用的几个场景之一,何种情况下使用分合流,其实主要看该业务流程是否符合以下几种特点即可:

1. 多实例,但并不是会签。

2. 每个实例都有独立的业务,比如,同时发给ABA处理完给张三,B处理完给李四。

3. 是否需要汇总。

三、设计示例

本示例以CCFlow为平台进行设计一个工单流程。在ccflow中,分合流分为两种模式: 第一种为同表单分合流,即子线程中挂在的表单都是相同的。

第二种为异表单分合流,即子线程中挂载的表单可以是不相同的,子线程的数量也是固定设置好的。

image.png

处理工单同表单分合流流程设计步骤:

第一步:设计好流程。

image.png

第二步,设置分流节点。

image.png

第三步,设置子线程节点。

image.png

第四步:设置合流点。

image.png

四、完结

了解更多的流程业务与设计模式,可以关注公众号:chichengsoft,或登录网站:www.ccfast.cc