一、父子流程的含义
子流程是某个流程在流转过程中可以自动或手动创建一个新流程实例,并辅助主流程或执行主流程中的某一部分业务的流程。所以子流程在BPM中,是一个可以包含活动、网关、事件等等的,可以被重复使用或者独立启用的一个新的流程。
子流程根据业务场景不同,又可以分为两种模式,嵌入式子流程与调用式子流程:
嵌入式子流程:即在主流程元素<process>中嵌入子流程元素<subProcess>,作为主流程中的一部分,不可独立发起。
调用式子流程:也可以称为复用型子流程,与嵌入式子流程不同的是,调用式子流程是一个新的流程,一个可以被重复使用或独立发起的流程,类似于一个普通流程。
通过以上两种子流程的模式分析可以看得出,嵌入式子流程更多的特点与分合流相似,可以作为主流程中的几个步骤,来实现主流程特定的业务,其大多数业务场景都可以通过分合流来实现。
而调用式子流程,本身就可以作为一个独立的流程启动,完成某个业务,在作为子流程时,根据主流程的业务,可以更好、更灵活的配置业务,来辅助主流程。主流程与子流程,存在上下级关系,业务实现上更像上阵父子兵一样,所以,我们将一个主流程可以调用一个或多个子流程的这种模式,称之为父子流程,而将嵌入式子流程划分到了分合流模式中。
父子流程,更像是多个流程组合而成的,根据指定规则运转的流程组。
二、父子流程的应用场景
比如,我们做一个项目管理流程,整个项目管理流程的主要步骤包括立项、施工、试运行与验收组成。在立项环节包括上报、审核、会审、评审等步骤;在施工环节包括施工建设方案编制、审核、评审、施工进度监控等;在验收环节,包括验收报告的上报、审核、待批准等步骤。通过项目列表,即可查看项目的整体进度及详细进度,可根据实际情况调整项目计划。
整个流程配置下来存在步骤过多,在查看项目整体的进度显得不直观,每个大环节都存在不同的业务,表单配置复杂等等问题。
如果我们采用父子流程,将立项、施工、试运行与验收作为主流程,用于查看监督项目整体进度,分别将立项、施工与验收作为独立的子流程,各自负责各自的业务逻辑,配合主流程完成整个项目流程管理,则显得更加有条理性,业务完整性也没有因此受到影响。而且子流程,还可以独立用于其他也的审批,提高流程的复用性。
三、父子流程与分合流有什么异同
通过以上对父子流程含义的解释以及上一期对分合流含义的解释,我们整理出两者的不同点与相同点,仅供大家参考。
相同点:
- 都可以理解成流程多实例,分合流中每一条子线程代表一个实例,父子流程中每个子流程代表一个实例。
- 都可以处理复杂的复合型业务。
- 都可以通过配置实现数据的汇总与整合。
- 都可以实现对多实例的实时控制。
- 都是一对多的关系。
不同点:
- 流程模式不同。分合流是一个流程;而父子流程是多个流程组成,分为一主多副。父流程或子流程都可以是线性流程模式、分合流模式,甚至是父子流程模式。
- 启动方式不同。分合流在分流点启动多个实例时,是自动而且必须发起的;而父子流程既可以自动发起也可以手动发起,也可以不发起。
- 同样是多实例的一种新型流程模式,分合流中的子线程不可以独立启动,不可以重复调用(除非是驳回到分流点,重新启动子线程);父子流程中的子流程,则可以作为独立的流程使用,也可以被多次调用,重复使用。
四、父子流程与分合流如何抉择
流程的应用场景是千变万化的,每个行业,甚至同行业的相同业务,流程都是不一样。各有各的处理方式,各有各的特色,如何决定一个流程业务是使用父子流程实现,还是分合流实现,其实最主要的还是要具体业务具体分析,站在实用性、统一性、易用性、完整性、易维护性、易扩展性的角度,深度分析才行。
但是也有几点可以帮助分析与决策:
- 如果一个业务,可能需要涉及到独立的多个业务配合完成,那么选择父子流程。如果涉及不独立的业务,可选择分合流。
- 业务复杂性不高,又需要多实例,可以选择分合流。
- 如果要显示、突出业务的层次性、过程,可以选择父子流程。