F2工作流引擎之 工作流运转模型(三)
1流程单起点单终止模型
单起点:一个流程定义必须有且唯一起点
单结束点:一个流程定义必须有且唯一结束点。
约定:提单与结束是每个流程必须有的活动,且唯一只有一个提单和结束。
2串行模型
描述:串行(Sequence)是最为简单,也最为容易理解的模型。按照预定的任务列表,有序的执行。
3自循环模型
描述:一个步骤可以自己再次发给其它人员但步骤是同一个。同一个任务节点,重复的执行多次。
又分两种类型:
1、 自由循环FreeCycle
在任务执行后由人为的决定是否继续重复的执行这次任务(自由度大)
2、 联合审批循环JointCycle
在任务执行后照设定的规则,决定是否重复执行。(通常这种情况是联合顺序审批,即第一个人审批完后下一步还是发给这个步骤但审批人设定好的人,直至最后一个人审批时再通向下一步)
4会签模型
描述:并行会签(Parallel),也叫“And 模式”。是说在流程运行过程中,因为不同的条件或情况,或者处理的业务需要多部门(多任务)分开处理,而产生了流程分支。并行开始步骤必须与汇聚步骤成对存在。都执行完(到达And汇聚点)后,才能激活后续的任务,也就说流程才能正确的往下运行。
注意:并行步骤与并行汇聚步骤需要配套成对存在。不允许AndSplit与OrJoin模式。
5发散聚合模型
发散模型与并行模型类似,只是必散的下一步骤列表可一个或任意多个,聚会步骤也是可任一个或任何多个根据规则。
有可能不是“同时聚合”
聚合表示的是:在聚合点,会等待所有分支的到来,如果不考虑超时(一般流程回
设定任务执行期限)和异常等情况下,流程必须等待所有的分支(Task B和Task C)都执行完(到达And汇聚点)后,才能激活后续的任务,也就说流程才能正确的往下运行。
这里面会涉及到如何聚合的问题,是人工聚合,还是自动聚合。一般这里会引入规则引擎(Rule Engine)来负责分支的聚合,按照预定的规则,将流程数据(状态)汇聚。
聚合规则:聚合步骤不一定前面是发散步骤只要达到聚合条件则转向下一步。
聚合步骤相对独立,对于所有迁入者进行规则计算,可以指定哪些前继必须都到达才能产生该步骤的待办,其它为前继为可选到达项。先到先计算,符合聚合条件则产生待办,其它未到达的分支将调用任何回收器回收后被抛弃。
等待所有条件满足后聚合步骤而产生任务待办,聚合步骤也是一个处理步骤,只是处理人必须是任一人响应方式。
三类聚合规则
同步聚合MergeAnd
异或聚合: MergeXOR
多重聚合:MergeOR
l A、B、C、D必须全部到达(all),all代表所有步骤
l A、B、C、D任意一个到达(*),*号代表任一步骤
l A、B必须到达,C为可选A&B
l A、C必须到达,B为可选A&C
l A、B必须到达,C为可选A&B
l A、B至少有一个到达C为必到达(即在一个集合中至少有N个到达)(AB,1)&C
l A、B、C只要有一个到达(ABC,1)
l ABD集合中必须要有A,而整个集合至少有2个到达,运用的规则为第一条,(ABCD,2)&A
6异或(独占)模型
描述:异或(XOR)又叫Exclusive Choice(独占式选择)当一个任务处理完后,发现其后面可允许走多个分支流程,但只允许选择其中某一个分支运行。虽然在任务Task A 后预订了三个不同的任务,但是仅Task D 满足条件一般为人工操作选择,也存在根据规则自动选择分支,造成后续的流程中,走了A——D 分支,而另外的分支被抛弃。
7回退模型
1.7.1 退回
回退,在有的应用中叫“退回”。
如下图所示,有任务A到任务B 属于正常发送,但从任务B到任务A,则出现两种情况:
(1)迁移退回:正常发送,如图中B—A黑色线;
(2)被退回:可能因为某些特殊原因,被任务B退回,要求任务A重新办理,如图中B—A红色线。虽然都是从B到A,代表的意义却完全不同。
1.7.2 退回到提单
可设置是否仅退回到提单。
1.7.3 退回任意历史步骤
这里要控制好并行的问题,在并行分支中的活动只能退回并行中的步骤,而不能退回到并行前的步骤,因其它分支的流转还在继续当中。包括迁移退回也不能如此设计。
1.7.4 不可退回模型
外部活动不可退回也不可迁移退回到发散聚合模型的中间或并行会签模型中间的活动。
并行内部的退回只能在内部发生
发散内部的退回只能在内部发生
8自动分组并行模型
描述:可以根据选择一批参与者系统自动根据参与者的部门进行分组产生N个分支,每条分支上的审批步骤是一样的。
9任务分发模型
描述:分发回收即没有后续步骤,是一个分发回收自循环步骤,像发作业本一样,班主任发给班长,班长现发给组长,最后由组长再发给组员,然后做完作业,由组员交给组长,组长交回给班长,班长交给班主任最后发散结束。
10 自动活动模型
描述:自动模型,又叫鉴别Discriminator Choice。多了一个鉴别器(Discriminator)或者叫自动选择模型。当任务达到这个鉴别器的时候,鉴别器会根据当前流程所处的状态,对比预先设定的一些选择规则,自动判别接下来流程的流向,也就是自动根据条件,选择一个满足条件的分支运行。即自动步骤。
鉴别规则做在活动上。
11传阅及自动转阅模型
11.1 描述
传阅不影响流程的流转,被传阅的对象只是会收到一条只看的待阅实例,获取打开些流程实例的查看详细表单信息的权限。所有传阅的记录过程将显示在工单的详细里面。记录下传阅过程。
11.2 手动传阅
在待办人打开待办界面可以传阅给指定的人员。
11.3 自动传阅
可以设置在进入指定步骤时自动转阅给预先设定的人员。
11.4 相关界面
12转交模型
12.1 描述
可以转交给其它人协助处理,每个步骤可以定义是否允许转交。
13等待子流程模型
描述:在这种方式下,当子流程运行的时候,主流程会暂停,等待子流程的完结。
14主子流程并行聚合模型
描述:激活子流程后,主流程并没有停止,而是基于按照预定的流程方向运行;同时,激活后的子流程也同样处于软转状态。当到达聚合步骤时如果有一方未到达的情况下,另一方会等待。当然,这其中可能涉及到等待超时等不良因素,这时候主流程时选择继续等待,还是发催办消息,还是继续运行,就是工作流引擎的设计问题了。
15外嵌子流程模型
描述:在主流程激活子流程后,主流程继续运行,且不关心子流程的运行状态或运行结果。这种方式使用活动完成时触发事件引发子流程的启动。
结语:
运转模型表面看似从一个步骤转向另一个步骤,实质还需要思考各种步骤的可进入可分发出来的规则如停等机制,参与者,访问控制等等,还有流程实例的持久化,步骤在运转过程中一系列需要处理事项。所以不要简单认为工作流引擎就是做步骤的跳转。虽然petri网是一个很著名的工作流网是有向图的思想,但是如果
你不对有向图做简化改造和边界设定,也将很容易就暴露出petri网的缺点出来即复杂性问题,容易无限庞大而难以理解。在有向图的概念中是没有中国特色退
回的概念,所以你还需要加入退回机制的思想。加上petri只是提供一种跳转思想的参考,所以可借用petri的思想做为参考,从而设计出符合中国特色的流程引擎思想!
一句话总结:流程引擎是一个精细化工程
F2工作流引擎之 工作流运转模型(三)的更多相关文章
- F2工作流引擎之组织用户模型(四)
1 概述 工作流组织模型是工作流引擎中核心重要的一部份,是实现人机交互中不可或缺的组成部分,而由于工作流引擎需要适应不同的系统之间存在组织用户结构的不同, 如组织表中字段名不同,所以需要实现适应不同系 ...
- F2工作流引擎这工作流引擎体系架构(二)
F2工作流体系架构概览图 为了能更好的了解F2工作流引擎的架构体系,花了些时间画了整个架构的体系图.F2工作流引擎遵循参考WFCM规范,目标是实现轻量级的工作流引擎,支持多种数据库及快速应用到任何基于 ...
- 驰骋工作流引擎ccflow-ccbpm工作流引擎sdk表单装载逻辑处理注意事项
cbpm工作流引擎sdk表单装载逻辑处理注意事项 关键字:驰骋工作流引擎 sdk表单 装载接口调用 说明:如果您要采用ccbpm的sdk表单开发,在表单 加载前您需要调用一个接口来获得当前节点的信 ...
- F2.Net工作流引擎系列索引
索引如下 F2工作流引擎遵循参考WFCM标准规范,符合中国国情特色,更轻量级的工作流引擎,支持多种数据库(mmsqlserver,mysql,oracle),有强大智能的组织模型接口可快速应用到任何基 ...
- 工作流引擎在vivo营销自动化中的应用实践 | 引擎篇03
作者:vivo 互联网服务器团队- Cheng Wangrong 本文是<vivo营销自动化技术解密>的第4篇文章,分析了在营销自动化业务引入工作流技术的背景和工作流引擎的介绍,同时介绍了 ...
- 浅谈备受开发者好评的.NET core敏捷开发工具,讲讲LEARUN工作流引擎
通俗来讲,所谓一个工作流管理系统,如果将其拆分出来一个个单讲话,大致可理解为由工作流引擎.工作流设计器.流程操作.工作流客户界面. 流程监控.表单设计器.与表单的集成以及与应用程序的集成等几个部分组成 ...
- 驰骋工作流系统-Java共工作流引擎配置定时任务
关键词:工作流定时任务 流程引擎定时任务设置 工作流系统定时任务配置 开源工作流引擎 开源工作流系统 一.定时任务的作用 发送邮件,发送短信. 处理节点自动执行的任务.比如:一个节点的待办工作是 ...
- Java工作流引擎节点接收人设置20种规则讲解一
关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...
- Java工作流引擎节点接收人设置“按自定义SQL计算”系列讲解
关键字: 驰骋工作流程快速开发平台 工作流程管理系统 工作流引擎 asp.net工作流引擎 java工作流引擎. 开发者表单 拖拽式表单 工作流系统CCBPM节点访问规则接收人规则 适配数据库: o ...
随机推荐
- Markdown 语法和 MWeb 写作使用说明
---恢复内容开始--- # Markdown 语法和 MWeb 写作使用说明 Markdown 的设计哲学 Markdown 的目標是實現「易讀易寫」. 不過最需要強調的便是它的可讀性.一份使用 M ...
- Leetcode: Non-overlapping Intervals
Given a collection of intervals, find the minimum number of intervals you need to remove to make the ...
- 在Unity中如何取得一个Box的Bounds
private BoxCollider mCollider; // Use this for initialization void Start () { mCollider = GetCompone ...
- Ajax请求中的async:false/true的作用
async: false,(默认是true);false为同步,Ajax请求将整个浏览器锁死,只有tet.php执行结束后,才可以执行其它操作. 当async: true 时,ajax请求是异步的.但 ...
- 【转】PowerShell入门(三):如何快速地掌握PowerShell?
转至:http://www.cnblogs.com/ceachy/archive/2013/02/01/HowToLearnPowerShell.html 如何快速地掌握PowerShell呢?总的来 ...
- ubuntu 如何 su 到 root(作为 root 用户操作)
ubuntu 安装后,root用户默认被锁定,不允许登录,也不允许"su"到 root.对于桌面用户来说,这样安全性更高一些,但对于服务器可以设置成"允许 su 到roo ...
- (转) CCEditBox 编辑框
CCEditBox 编辑框 原文: http://blog.csdn.net/cloud95/article/details/8773470 分类: cocos2d-x 2013-04-08 19:1 ...
- WP8没有开发者账号升级GDR3预览版的方法
很多希望尝鲜WP8 GDR3的朋友一样希望提前体验GDR3的效果,但苦于没有开发者账号而不得其门!今天为大家带来普通账号升级GDR3的方法! 工具/原料 WP8智能手机 可用wifi热点 方法/步骤 ...
- simplexml_load_file 抑制警告的直接输出
$xml = simlexml_load_file($file, null, LIBXML_NOERROR); if (!is_object($this->xml)){ throw new Ex ...
- Python3基础 sort 将一个列表中的值升序排列
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...