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

 1. 业务过程描述

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

并行评审的实例数据:

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

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

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

...

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

2. 模式说明

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

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

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

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

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

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

 3. 程序开发实践

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

4. 总结

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

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

  1. Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合

    前言:  流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见 ...

  2. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务模块的交互

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  3. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  4. Slickflow.NET 开源工作流引擎基础介绍(五) -- 会签加签高级特性介绍

    前言:会签和加签是常见审批流程模式,在引擎中,对这两种流程模式做了分别定义和实现,其中也用到了Workflow Pattern的Multiple Instance(多实例) . 1. 会签和加签的定义 ...

  5. Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践

    前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好 ...

  6. Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍

    1. 工作流术语图示                                              图1 流程图形的BPMN图形元素表示 1) 流程模型定义说明流程(Process):是企 ...

  7. Slickflow.NET 开源工作流引擎基础介绍(九) -- .NET Core2.0 版本实现介绍

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

  8. Slickflow.NET 开源工作流引擎基础介绍(八) -- 自动化任务调度实现介绍

    前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发.因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块. 1. 任务调度框架选择 Hangfi ...

  9. Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

随机推荐

  1. HttpInvokerUtils

    package com.sprucetec.tms.utils; import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java ...

  2. flask的变量和函数

    flask 中有内置的的变量函数 ,那些特殊的变量可以实现某些功能 config :可以从模板中直接访问Flask当前的config对象:{{config.SQLALCHEMY_DATABASE_UR ...

  3. 在MySQL Workbench查看表,表结构,索引,函数,存储过程,触发器,重连

    表 表结构 索引 触发器 存储过程 函数 重新连接 出现Error Code: 2006 MySQL server has gone away时

  4. Python语法基础练习

  5. centOS7.10 KDE桌面字体设置推荐

    安装完centOS7.10的KDE桌面后,第一次使用觉得字体太难看了,特别是终端,看着很难受,调整多次后觉得如下设置舒服很多,分享出来以供参考. 其中等宽字 这样整体看着就会舒服很多 ******** ...

  6. elasticsearch+logstash+redis+kibana 实时分析nginx日志

    1. 部署环境 2. 架构拓扑 3. nginx安装 安装在192.168.176.128服务器上 这里安装就简单粗暴了直接yum安装nginx [root@manager ~]# yum -y in ...

  7. POJ 2636

    #include<iostream> #include<stdio.h> using namespace std; int main() { //freopen("a ...

  8. Vue2.5开发去哪儿网App 第四章笔记 上

    一 .  组件细节知识点 1.  解决组件在h5中编码规范 例如 : table , ul , ol  等等 <table> <tbody> <row></r ...

  9. donet core 应用 部署到CentOS

    创建应用 新建一个Asp.net core Web API 应用 在program里指定监听端口 public static IWebHost BuildWebHost(string[] args) ...

  10. 牛客网Java刷题知识点float数据在内存中是怎么存储的

    不多说,直接上干货! float类型数字在计算机中用4个字节存储. 遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e (1)底数部分 使用二进制数来表示此浮点数的实际值 (2)指 ...