Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合
前言: 流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern)。本文的重点就是介绍一种常见的由两种模式组合而成的新模式。
1. 工作流模式基本介绍
关于工作流模式,已经广泛被流程分析和设计人员认可,它非常有助于工作流系统的各类用户对业务过程的理解,也能帮助架构师对引擎功能的开发和扩展。更多工作流模式因为网上已经有比较多的资料,这里就不再详细说明了,比如以下的网络资源供大家学习和了解。
http://www.workflowpatterns.com
2. 工作流模式的组合
工作流模式是为了简化一些常见的业务规则,一些简单的模式大家容易理解,但是也有一些比较复杂的模式,通常就需要产品经理来通过组合的方式定制出来,而且可以作为一种通用的模式进行推广。
2.1 会签
常见的任务节点是一人办理就向下流转,会签是同一任务节点的多人多次审批办理,会签的方式有串行会签和并行会签两类。在Slickflow.Engine实现中,会签模式是按照多实例(Multiple Instance)模式进行实现。会签可以有通过率设置,表示会签任务可以向下流转的一个阈值。

2.2 并行分支容器
并行容器用于动态的多个并行分支的路由模式,相比于固定的分支不同,并行多实例是一种容器类型的模式,容器里面存在多个相同的分支实例运行。这些分支可以是由多个节点组成的一个串行流程片段。

2.3 组合
在实际业务过程中,并行分支容器里面的节点是否可以是会签节点呢?工作流模式的组合正好可以验证和实现这样的业务需求,引擎的目的就是满足客户不断提出的业务功能需求,所以利用并行分支容器和会签两种简单模式组合成一种更加实用的模式,而且可以推广给更多的客户,才是引擎功能持续不断开发的目的。
比如下图所示,小组分配项目,检验员录入和小组汇总审核,构成的流程片段是被包含在并行容器内部,表示是一种动态的流程执行策略,每次流程实例化后,小组的数目是动态变化的,所以不能用固定化的分支来设计流程图。而且检验员录入又是一个会签节点,表示多个检验员在这个任务节点上可以多次处理后,然后在由下一步的小组组长汇总审核。

在用并行分支容器嵌入会签节点的两种模式组合后,就能够顺利解决这样的这样问题。并行分支容器解决了每次小组数目动态变化的问题,而会签节点的处理是不受外部干扰的。所以模式的重新组合,是一种非常值得推广的应用。
3. 应用场景分析
在实际应用过程中,并行分支容器简化了动态分支的表示,在工作流模式中,是允许这种动态类型模式的普通存在,流程的动态响应能够适应业务的动态变化,并行分支容器也是工作流模式最经典的动态模式之一。
4. 快速测试
并行分支容器和会签组合的模式,产生的实例比较多,如果每次不断切换用户身份也是比较繁琐的,此处建议可以使用上一篇博客文章中提到的测试方法进行测试。
Slickflow.NET 开源工作流引擎高级开发(二) -- 流程快速测试和流程图形代码创建介绍
5. 总结
模式组合的产生是业务分析人员对业务过程的梳理和重构,也只有不断熟悉工作流模式和挖掘业务流程特征后,才可以找到解决新问题的办法。而业务经理和引擎产品负责人的交流探讨则是一种业务和技术的互动沟通,技术的本质是为业务服务,引擎产品的不断扩展的特性才是让工作流模式更加丰富的保证。
Slickflow.Engine产品正是基于这样的产品架构,不断增强工作流模式的应用。
Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合的更多相关文章
- Slickflow.NET 开源工作流引擎高级开发(六) -- WebTest 引擎接口模拟测试工具集
前言:引擎组件的接口测试不光是程序测试人员使用,而且也是产品负责人员需要用到的功能,因为在每一步流转过程中,就会完整模拟实际用户发生的场景,也就容易排查具体是程序问题还是业务问题,从而快速定位问题,及 ...
- Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现
前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现.默认的分支类型是静态定义好的.本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关, ...
- Slickflow.NET 开源工作流引擎高级开发(二) -- 流程快速测试增值服务工具介绍
前言:流程是由若干个任务节点组成,流转过程就是从一个节点转移到下一个节点,通常需要不断切换用户身份来完成流程的测试,这样使得测试效率比较低下,本文从实战出发,介绍常见的两种快速测试方法,用于提升流程测 ...
- Slickflow.NET 开源工作流引擎高级开发(五) -- 引擎和外部事件的交互
前言:引擎组件的基本职责是负责流程流转,但是在流转过程中,除了对内部控制逻辑进行实现外,也不可避免的要去调用或者响应外部事件.本文主要描述外部事件的类型,以及调用方法过程. 1. 外部事件的类型 外部 ...
- Slickflow.NET 开源工作流引擎高级开发(一) -- 流程外部事件的调用和变量存储实现
前言:流程实现基本流转功能外,通常也需要调用外部事件,用于和业务系统的交互,同时存储一些流程变量,用于追踪和记录业务数据变化对流程流转的影响. 1. 流程事件 流程执行过程中,伴随各种事件的发生,而且 ...
- Slickflow.NET 开源工作流引擎高级开发(四) -- 硬核编码:代码式快速构建流程图
前言:通过设计器交互来创建流程图是比较常见的方式,这种方式是比较方便业务人员对流程的操作.然而,在需要流程模板,或者技术开发阶段以及一些自动化流程的处理过程中,使用代码快速创建流程图也是一种非常有必要 ...
- .NET 开源工作流: Slickflow流程引擎高级开发(十) -- BpmnJS流程设计器集成
前言: 在Slickflow产品开发过程中,前端流程设计器经历了几个不同的版本(jsPlumb, mxGraph等),目的是为了在设计流程时的用户体验更加良好,得到客户的好评和认可.BpmnJS流程设 ...
- asp.net开源流程引擎API开发调用接口大全-工作流引擎设计
关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 一.程序调用开发接口二. 接口说明 所谓的驰骋工作流引擎的接口,在B ...
- .net工作流引擎ccflow开发平台属性功能的隐藏显示介绍
关键字: 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 表单引擎 工作流功能说明 工作流设计 工作流快速开发平台 业务流程管理 bpm工作流系统 java工 ...
随机推荐
- 第13月第16天 ios keywindow
1. 在弹出层弹出后keywindow已改变 http://www.jianshu.com/p/4695d7efa20b
- 《区块链100问》第13集:比特币和Q币有哪些不同?
比特币是一种去中心化的数字资产,没有发行主体.Q币是由腾讯公司发行的电子货币,类似于电子积分,其实不是货币. Q币需要有中心化的发行机构,Q币因为腾讯公司的信用背书,才能被认可和使用.使用范围也局限在 ...
- Manacher's Algorithm 马拉车算法
作用:求一个字符串中的最长子串,同时还可以求所有子串的长度. 题目链接: https://vjudge.net/contest/254692#problem/B 代码: #include<bit ...
- 恶意代码分析实战-确认EXE什么时候编译的
场景 确认开源的后门在中毒机器上是什么版本,具有什么功能. 思路 1.查看样本PE里的编译时间 2.对照开源后门里组件的编译时间 技术点 查看NT头-TimeDateStamp struct IMAG ...
- 【ARTS】01_06_左耳听风-20181217~1223
ARTS: Algrothm: leetcode算法题目 Review: 阅读并且点评一篇英文技术文章 Tip/Techni: 学习一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algo ...
- if语句引起的bug
最近维护高手留下的api项目,客户端反馈一个bug过来,然后查找到可能出错的代码位置,是一个if语句,乍一看好像没什么问题,代码如下: if (company.UserId != userId || ...
- 苹果ANCS协议学习【转】
苹果ANCS协议学习 转自:http://www.cnblogs.com/alexcai/p/4321514.html 综述 苹果通知中心(Apple Notification Center Serv ...
- 六、vue路由Vue Router
一.基本概念 route, routes, router 1, route,它是一条路由,由这个英文单词也可以看出来,它是单数, Home按钮 => home内容, 这是一条route, a ...
- 在内部局域网内搭建HTTPs
在内部局域网内搭建HTTPs 配置环境 Windows版本:Windows Server 2008 R2 Standard Service Pack 1 系统类型: 64 位操作系统 内存 ...
- VS2010上连接SQLite数据库
VS2010连接SQLite数据库 Visual studio 2010及以上版本,连接SQLite数据库 1.在Sqlite开发站点下载SQLite的.exe安装包 Ctrl+F搜索这条语句:Thi ...