Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现
前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现。默认的分支类型是静态定义好的。本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关,便于用户业务流程的审批过程实现。
1. 业务过程描述
并行评审需求是在多个部门同时发生,此时会有多个并行分支的实例【员工填表->组长审批】。各个分支序列独立执行,直到所有并行分支序列全部执行完毕后才达到汇合条件。然后流程经过汇合网关继续向下执行流程。
并行评审的实例数据:
A部门:员工填表-->组长审批
B部门:员工填表-->组长审批
C部门:员工填表-->组长审批
...
在Split网关阶段,根据员工填表节点上定义的角色数据,获取人员列表,然后动态产生并行分支数据。即同时产生多个员工填表的实例数据,以此实现多实例模式。分支的数目就是选取员工填表节点上的人员数目。
2. 模式说明
模式名称:并行分支多实例
1) 与分支(多实例):AndSplitMI
表示可以产生多实例的并行分支数据。
2) 与合并(多实例):AndJoinMI
表示需要合并并行多实例分支数据。
属性定义:在网关属性页面完成分支和合并节点的类型定义。
3. 程序开发实践
增加NodeMediator的子类型,用于实现并行分支网关的业务逻辑。程序架构设计类图如下:
4. 总结
Slickflow 引擎产品遵循工作流模式架构设计的原则,编码实践始终保持产品新功能的可控开发,这样实践的好处是:产品功能扩展逻辑清晰,现有代码重构目标明确,降低引擎功能扩展带来的程序复杂性。
Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现的更多相关文章
- Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合
前言: 流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见 ...
- Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务模块的交互
集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...
- Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成
集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...
- Slickflow.NET 开源工作流引擎基础介绍(五) -- 会签加签高级特性介绍
前言:会签和加签是常见审批流程模式,在引擎中,对这两种流程模式做了分别定义和实现,其中也用到了Workflow Pattern的Multiple Instance(多实例) . 1. 会签和加签的定义 ...
- Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践
前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好 ...
- Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍
1. 工作流术语图示 图1 流程图形的BPMN图形元素表示 1) 流程模型定义说明流程(Process):是企 ...
- Slickflow.NET 开源工作流引擎基础介绍(九) -- .NET Core2.0 版本实现介绍
前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...
- Slickflow.NET 开源工作流引擎基础介绍(八) -- 自动化任务调度实现介绍
前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发.因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块. 1. 任务调度框架选择 Hangfi ...
- Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)
前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...
随机推荐
- git add .添加不成功
情景: 我首先在一个有许多文件的文件夹中 git init 创建一个git管理仓库 之后 git add . 之后 git commit -m "提交" 发现提交不成功,文件没 ...
- 利用koa打造jsonp API
概述 最近学习利用koa搭建API接口,小有所得,现在记录下来,供以后开发时参考,相信对其他人也有用. 就目前我所知道的而言,API有2种,一种是jsonp这种API,前端通过ajax来进行跨域请求获 ...
- 在express3里用ejs模版引擎时,如何使其支持'.html'后缀
①express 默认jade模板,改为ejs模板,需执行以下命令: express -e --ejs ②在app.js中,将 app.set('view engine', 'jade'); 替换为 ...
- 设计模式《JAVA与模式》之状态模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述状态(State)模式的: 状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为 ...
- 09-04 java 接口
接口的引出 继续回到我们的猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯兽师,可以训练出:猫钻火圈,狗跳高,狗做计算等. 而这些额外的动作,并不是所有猫 ...
- Android开发艺术探索学习笔记(一)
第一章 Activity的生命周期和启动模式 1.1Activity的生命周期全面解析 1.1.1典型情况下的生命周期分析 (1)在两个Activity进行切换时,当前的Activity的onPaus ...
- Javac中的方法
例1: interface IA{ void m(int a); } abstract class AC implements IA{ // 这个抽象方法覆盖了 IA中的方法m public abst ...
- 获取Javascript 滚动条距离顶部的距离(兼容IE6+,火狐,谷歌,其它没测)
document.body.scrollTop || document.documentElement.scrollTop
- canvas实现涂鸦板
实现思路:监听鼠标按下.移动.松开事件,将鼠标按下的值赋值给moveTo的x和y值,作为起始位置.在移动事件中,将鼠标距离可视区x和y值赋给lineTo,再将路径闭合.以下是具体的代码 <!DO ...
- 从Java进程里dump出类的字节码文件
想要查看一些被增强过的类的字节码,或者一些AOP框架的生成类,就需要dump出运行时的Java进程里的字节码. 从运行的java进程里dump出运行中的类的class文件的方法: 用agent att ...