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工 ...
随机推荐
- 流媒体技术学习笔记之(十二)Linux(Ubuntu)环境运行EasyDarwin
Debug问题??? ./easydarwin -c ./easydarwin.xml & //这样的话是80端口 ./easydarwin -c ./easydarwin.xml -d // ...
- JAVA多线程之线程的挂起与恢复(suspend方法与resume方法)
一,介绍 本文讨论JAVA多线程中,使用 thread.suspend()方法暂停线程,使用 thread.resume()恢复暂停的线程 的特点. 先介绍二个关于线程的基本知识: ①线程的执行体是r ...
- Swagger文档化restful接口
1.注解 @Api:用在类上,说明该类的作用. @ApiOperation:注解来给API增加方法说明. @ApiImplicitParams : 用在方法上包含一组参数说明. @ApiImplici ...
- codeforces 235 div2 A. Vanya and Cards
Vanya loves playing. He even has a special set of cards to play with. Each card has a single integer ...
- py-faster-rcnn代码阅读3-roidb.py
roidb是比较复杂的数据结构,存放了数据集的roi信息.原始的roidb来自数据集,在trian.py的get_training_roidb(imdb)函数进行了水平翻转扩充数量,然后prepare ...
- SSL邮件发送(腾讯企业邮箱测试通过,可以支持多附件)
参考网址:http://www.cnblogs.com/LUA123/p/5575134.html ,谢谢! package net.common.utils.common; import java. ...
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解决办法
更换mysql数据目录后出现ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql ...
- Java编程的逻辑 (17) - 继承实现的基本原理
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...
- .NetCore Linux中安装Grafana界面及配置InfluxDB相关设置
前面的文章已经安装好了InfluxDB 安装 wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-5.1. ...
- SQL Server 4
一.视图 1.创建视图 1)选中数据库中的表中的视图处,右键选择新建视图,即: 2)在弹出“添加表”对话框中,单击“表”标签,选择要添加的表,点击添加,即: 3)选中要建立联系的列名的复选框,然后拖动 ...