工作流模型分析 version 1.1
第 1 页
工作流模型分析
Workflow Patterns
版本:1.1
作者 :胡长城
网上游名:银狐 999 ;james999
创作时间:2003-11-27
联系信箱:james-fly@vip.sina.com
MSN :fcxiao2000@hotmail.com
引文:
本文是原“工作流模型分析”的补充和完善。其最初版本,可参看
http://www.huihoo.org/jfox/jfoxflow/workflow_model_fox999.pdf
谈论工作流模型,也不仅仅是为了谈论。理论需要实践去检验;而实践业需要理论去指
引方向。任何有关 Workflow 的开发,都需要基于一些特定的流程模型去处理,所以首先就需
要确定一个完善成熟可用的“流程模型”。希望此篇能够让大家明白一些基本的运转模型。写
这篇文章,也算“以文会友”,希望与更多得研究工作流的朋友交流。
下面就以在“小议学习 Java 的浮躁心态”中所说的一句话,作为开篇。
知识是需要沉淀的;思想也是在不断的学习、磨练中走向成
熟的;而技术也是在不断的创造中开拓的。
——银狐999
工作流模型分析 version 1.1
第 2 页
目 录
1. 概述: ..........................................................................................................................................3
2. 任务与活动 ..................................................................................................................................4
3. 流程起点模型 ..............................................................................................................................5
3.1 单起点 ..................................................................................................................................5
3.2 多起点 ..................................................................................................................................5
3.2.1.
多起点方式一
...............................................................................................................5
3.2.2.
多起点方式二
...............................................................................................................6
3.2.3.
多起点方式三
...............................................................................................................6
4. 流程激活模型 ..............................................................................................................................7
4.1 人工激活 ..............................................................................................................................7
4.2 定时或限时激活...................................................................................................................7
4.3 外消息激活 ..........................................................................................................................7
5. 流程运转模型 ..............................................................................................................................8
5.1 简单运转模型.......................................................................................................................9
5.1.1.
串行
..............................................................................................................................9
5.1.2.
自循环
..........................................................................................................................9
5.2 发散运转模型.....................................................................................................................10
5.2.1.
并行
............................................................................................................................10
5.2.2.
异或模型(显式)
.....................................................................................................10
5.2.3.
异或模型(隐式)
.....................................................................................................11
5.2.4.
鉴别模型
.....................................................................................................................11
5.2.5.
抄送模型
.....................................................................................................................12
5.2.6.
发散模型
.....................................................................................................................12
5.3 聚合运转模型.....................................................................................................................13
5.3.1.
同步聚合
.....................................................................................................................13
5.3.2.
简单聚合
.....................................................................................................................14
5.3.3.
多重聚合
.....................................................................................................................14
5.3.4.
鉴别聚合
.....................................................................................................................15
5.3.5.
优先聚合
.....................................................................................................................15
5.4 特殊运转模型.....................................................................................................................15
5.4.1.
回退
............................................................................................................................16
5.4.2.
自由流
........................................................................................................................16
5.4.3.
委托代办
.....................................................................................................................17
5.4.4.
催办
............................................................................................................................17
5.4.5.
取回
............................................................................................................................17
6. 流程组合嵌套模型 ....................................................................................................................17
6.1 内嵌模型 ............................................................................................................................18
工作流模型分析 version 1.1
第 3 页
6.1.1.
主流程等待方式
.........................................................................................................18
6.1.2.
主流程也运行方式
.....................................................................................................19
6.2 外嵌模型 ............................................................................................................................19
7. 流程整合模型 ............................................................................................................................20
8. 流程终止模型 ............................................................................................................................21
8.1 按分布分 ............................................................................................................................21
8.1.1.
单结束点
.....................................................................................................................21
8.1.2.
多结束点
.....................................................................................................................21
8.1.3.
非标准结束点
.............................................................................................................21
8.2 按行为分 ............................................................................................................................22
8.2.1.
正常终止
.....................................................................................................................22
8.2.2.
异常终止
.....................................................................................................................22
8.2.3.
激活新任务
.................................................................................................................22
9. 文档日志: ................................................................................................................................23
10. 参考文档 ....................................................................................................................................23
1. 概述:
有关“什么是工作流”和工作流的概念,就不在这里介绍了。大家有兴趣的可以到 WFMC
上看看。在 WFMC 的 xpdl 规范中,没有 Task(任务)概念,而是 Activity(活动)概念。不
过大多数情况下,我们对“任务”的理解,可能更加容易。所以,在本篇中,都是采用 Task
概念。有关为什么选择 Task,在“任务与活动”一章中有讲解。
这里先说说个人的看法:一个工作流包括一组任务(Task)及它们的相互顺序关系,还
包括流程及任务的启动和终止条件,以及对每个任务的描述。其实这是摘自
http://www.simflow.net/workflow/workflow.htm 上一段话有关工作流的描述。只是原文叫
“活动”,我改为任务(Task),可能更好理解一些。
现实应用中,不光单工作流的应用较为广泛,多工作流之间的嵌套或整合也有广泛的应
用市场。在本文后面的章节会简要的分析。
在后续的文章中,大家可能会发觉本文没有提及“事务”(Transaction)控制。在有些
工作流模型文章中,在讲解模型的时候,会将事务也融合进来。本文没有讲“事务”融合进
来,是因为“事务”,以及“角色权限控制”“组织模型分配”等等模块,虽然对工作流来说,
是必不可少的控制模块,但是针对流程的运转模型,不是根本性的影响因素。
工作流模型分析 version 1.1
第 4 页
2. 任务与活动
活动(Activity)是 WMFC 的标准模型元素,描述的是工作流中的一个活动——“A
description of a piece of work that forms one logical step within a process”。在
XPDL 的规范中,Activity 已经是描述流程远转的最小单元。
在本文中,我采用的是“任务”(Task)概念。在描述业务中,一个任务表示的是流程的
所需要完成的某一项工作,这项工作可能是一次操作(Action)即可完成,也可能是几次操
作的组合。其有些像 XPDL 中的 Block Activity。但请注意,不等简单的等同,这个在模型构
建的时候,是个“划分粒度”问题。粒度的划分在应用中,会涉及到很多,最为直接的就是
权限控制。
大家参考一下图(1-1)。列出了 Task 与 Block Activity 的相似比较。稍微注意以下,
在左边的 Task 中,多个 Action 之间没有连接线。而在 Block Activity 中,各个 activity
却需要按顺序执行。
Task
Block
Activity
Action B
Action A
Action C
Activity A
Activity C
Activity B
比较
图(2-1)
下面的图(1-2)可能又让大家迷惑了。上面刚刚才说的 Task 与 Block Activity 有些相
似,下图却拿 Task 与单个 Activity 比较。可以注意一下,左边的 Task 只有一个 Action 可
以执行,和右边的 Activity 表达的意思就很相似了,都表示需要执行一个活动/动作。
Task
Activity A
比较
Action A
图(2-2)
上面的比较,更多的是个人的一些看法和思考。以前从事过用 Task/Action 表示的工作
流开发,而 XPDL 却采用了一些 Activity 表示。在考虑“到底用什么方式表示更好”的这个
问题的时候,做了上面两种的类似比较。可能未必正确,也存在商榷的地方。
工作流模型分析 version 1.1
第 5 页
真正在应用中,采用什么“粒度划分”,采用哪个名词表示,还是根据应用来决定了。Xpdl
采用 Activity/Block Activity,但是在其他的一些工作流模型表述中,有相当一部分采用
Task 等概念。
不过,本文后续将采用 TASK 概念表示一个任务。
3. 流程起点模型
任何事物都有由头有尾,一个流程也不例外,那么现在我们就从流程的“头”——流程
起点说起。一个工作流能够运行,就需要一系列条件来激活。而这个激活的位置,就是“起
点”(Start Node)。
需要说明的是,起点也是一种任务节点(Task Node)。这个特殊的任务节点也许会执行一
定的操作,也许仅仅只是一些数据状态的改变。但是,不论什么原因,最终会导致一个流程
实例的产生——流程被激活了。
3.1 单起点
单起点(Single Start Node)估计大家都比较容易理解,现实中工作流应用的也是最为普
遍。如下图(3-1)所示,其就是单起点的模型。
单起点模型
Task A
Task B
图(3-1)
3.2 多起点
多起点(Multi Start Node )的工作流,在现实应用不是太多。其主要表达的是:在同一
流程中,存在多个起点。说到这里,有必要重新申明一下:起点也是一种任务节点,而不是
独立于工作流任务特殊节点。
多起点的工作流模型,基本上有如下三种方式。
3.2.1. 多起点方式一
请参考图(3-2),起点 A 和起点 B,它们都可以激活流程的运行,而且激活后,流程都会
共同指向 Task A。所以,对于 Task B 来说,其不关心流程是如何激活的,其只关系从 Task A
是否正确的传递来正确的流程数据。