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工 ...
随机推荐
- scrapy 简单防封
设置爬取间隔 setting.py from random import random DOWNLOAD_DELAY = random()* ps:此次的爬取间隔,在读取seeting文件确定,并非每 ...
- centos 7 两台机器搭建三主三从 redis 集群
参考自:https://linux.cn/article-6719-1.htmlhttp://blog.csdn.net/xu470438000/article/details/42971091 ## ...
- 小议 开源中国 I LOVE YOU js代码
今天在开源中国看到一篇神作<I LOVE YOU js代码>是17号的文章了,也许你已经看过了. 文章非常有意思,由 5 个 "爱心" 组成的一段js代码,能正常执行, ...
- Dream------Hadoop--网络拓扑与Hadoop--摘抄
两个节点在一个本地网络中被称为“彼此的近邻”是什么意思?在高容量数据处理中,限制因素是我们在节点间 传送数据的速率-----带宽很稀缺.这个想法便是将两个节点间的带宽作为距离的衡量标准. 衡量节点 ...
- linux backtrace()详细使用说明,分析Segmentation fault【转】
转自:http://velep.com/archives/1032.html 在此之前,开发eCos应用程序时,经常碰到程序挂掉后,串口打印输出一大串让人看不懂的数据.今天才明白,原来这些数据是程序挂 ...
- mitmdump 屏蔽443错误
mitmdump --ignore-hosts ".*443$" -s test.py
- 安装asp.net mvc4后mvc3项目编译报错
安装asp.net mvc4之后,之前的mvc3项目编译时报这个错“The type System.Web.Mvc.ModelClientValidationRule exists in both c ...
- Android安全系列之:如何在native层保存关键信息
相信大家在日常开发中都要安全层面的需求,最典型的莫过于加密.而apk是脆弱的,反编译拿到你的源码轻而易举,这时候我们就需要更保险的手段来保存密钥之类的关键信息.本文就细致地讲解简单却实用的native ...
- 2018-2019-2 网络对抗技术 20165301 Exp1 PC平台逆向破解
任务一 直接修改程序机器指令,改变程序执行流程 1.输入指令objdump -d pwn5301 | more反汇编pwn1文件. 通过反汇编,可以看到main函数中的call 804891,其机器码 ...
- Cname与A记录(Address)区别
Cname与A记录(Address)区别A记录是解析域名到IP,Cname是解析域名到另外一个域名. 一台服务器可以布置多个网站,也可以有多个域名,如如域名A----->A记录-----> ...