Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现

时间:2022-06-01 19:22:35

前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现。默认的分支类型是静态定义好的。本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关,便于用户业务流程的审批过程实现。

 1. 业务过程描述

并行评审需求是在多个部门同时发生,此时会有多个并行分支的实例【员工填表->组长审批】。各个分支序列独立执行,直到所有并行分支序列全部执行完毕后才达到汇合条件。然后流程经过汇合网关继续向下执行流程。

并行评审的实例数据:

A部门:员工填表-->组长审批

B部门:员工填表-->组长审批

C部门:员工填表-->组长审批

...

在Split网关阶段,根据员工填表节点上定义的角色数据,获取人员列表,然后动态产生并行分支数据。即同时产生多个员工填表的实例数据,以此实现多实例模式。分支的数目就是选取员工填表节点上的人员数目。

Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现

2. 模式说明

模式名称:并行分支多实例

1) 与分支(多实例):AndSplitMI 

表示可以产生多实例的并行分支数据。

2) 与合并(多实例):AndJoinMI

表示需要合并并行多实例分支数据。

属性定义:在网关属性页面完成分支和合并节点的类型定义。

Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现

 3. 程序开发实践

增加NodeMediator的子类型,用于实现并行分支网关的业务逻辑。程序架构设计类图如下:

Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现

4. 总结

Slickflow 引擎产品遵循工作流模式架构设计的原则,编码实践始终保持产品新功能的可控开发,这样实践的好处是:产品功能扩展逻辑清晰,现有代码重构目标明确,降低引擎功能扩展带来的程序复杂性。