背景

工作流产品众多,而它们之间又缺乏统一的标准,使得不同的产品之间很难实现协同工作。为了解决这一问题,工作流管理联盟(WFMC)于1993 年成立,并提出了工作流参考模型,制定了五个标准接口。

其中有一个接口是过程定义接口。几乎每个工作流产品都有自己的过程定义语言(也称为工作流语言),可以从四个方面(控制流、数据流、资源、操作)来研究流程,工作流模式(Work Flow Pattern)只是涉及到其中的控制流部分。控制流(control flow)描述了活动在不同结构中的执行顺序。控制流对我们有效认识、理解工作流规范具有很大帮助。工作流规范需要不断地扩展,以便满足新的需求,因此有必要对控制流进行基础的认识和分析。

    1. 模式总述

    工作流模式系统化地表述了基本的和复杂的结构。模式(pattern)是从具体形式中抽象出来的。面向对象的设计模式,规定了不依赖于具体的实现技术,同时也不依赖于所在领域的基本需求。

Carl Adam Petri基于Petri网原理提出的21个工作流模式,用于工作流过程建模和分析。这些模式,仅限于静态控制流,而不考虑资源分配、实例控制、异常处理和事务管理。

支持工作流模式

过程种类

基础控制过程 (Basic Control Patterns)

顺序(Sequence) 并行分支(Parallel Split) 同步(Synchronization) 排他选择(Exclusive Choice) 简单合并(Simple Merge)

高级分支和同步过程 (Advanced Branching and Synchronization Patterns)

多路选择(Multiple Choice) 多路合并(Multiple Merge) 同步合并(Synchronizing Merge) 鉴别器(Discriminator) M中N鉴别(N out of M)

结构化过程 (Structural Patterns)

任意循环(Arbitrary Cycles) 隐式终止(Implicit Termination)

多实例过程 (Patterns Involving Multiple Instances)

非同步多实例(MI-without Sync) 在设计期间预先确定的多实例(MI with a Priori Design Time Knowledge) 在运行期预先确定的多实例(MI with a Priori Runtime Knowledge) 无法在运行期预先确定的多实例(MI without a Priori Runtime Knowledge)

过程状态 (State-based patterns)

延期选择(Deferred Choice) 交叉并行路由(Interleaved Parallel Routing) 里程碑(Milestone)

过程取消 (Cancellation Patterns)

取消任务(Cancel Activity) 取消流程(Cancel Case)

  
 
    1. K2 Blackpearl

K2 Blackpearl 是SourceCode公司基于.NET WF构建的流程开发平台的核心产品。代码可支持生成WF代码,流程设计环境使用WPF构建,并完全嵌入到VS 2005中,与微软产品紧密结合。

K2 blackpearl 包括业务流程管理与工作流性能。可以通过建立应用来管理业务流程并使其自动化,或者集业务流程、人员、服务、信息和系统于单一的应用,从而帮助推动业务发展。

    1. 基础控制过程 

 

这五个模式的共同点在于:模式所涉及流程的执行路径是在设计时即可确定的,不需运行时的信息。包括:Sequence(顺序模式)、Parallel split(并行分支模式) 、Synchronization(同步模式)、Exclusive choice(排他选择) 、Simple merge(简单合并模式)。

顺序(Sequence) 

  • 描述:

工作流中的各个活动在同一个进程中按顺序依次执行。

  • 案例:

“用户付款”后才能进行“发送货物”。

  • l  K2实现:

平行拆分(Parallel Split 

  • 描述:

工作流中从一个线程中的一个点拆分为在多个线程中平行执行的多个活动。这些平行的活动之间没有关联,执行没有顺序关系。

  • 案例:

“用户付款”后激活了“发送货物”以及“通知用户”的执行。

  • K2实现:

同步(Synchronization 

  • 描述:  在流程中的某个点,多个并行的子流程或者活动,合并成一个流程。流程必须等待所有的分支都执行完以后,才能激活后续活动,这就是“同步”之意。

模式3一般与模式2配合使用。

  • 案例:

“发送货物”以及“通知用户”两个并行活动执行完毕后,激活“存档”活动。

  • K2实现:

每个分支维护自己的完成标记,所有Line Rules都设置成:所有分支均完成。

排他选择(Exclusive Choice 

  • 描述:当一个活动完成以后,可以有多个分支进行选择,但是只能选择其中的一个分支,即多选一。
  • 案例:“下完订单”后,可以选择“银行卡付款”或者“邮局汇款”,只要选择一种方式即可。
  • K2实现 : 两个Line Rules的逻辑是互斥的。

简单合并(Single Merge 

  • 描述:

有两个或多个可选择的分支,在某一点处合并成一个分支,但并不是同步合并(与模式2的区别)。与模式4也有点相似,都是“多选一”,但模式4是分散,而模式5 是合并。一般采用“先进先出”原则,但是后续活动只产生一次(如果后续活动执行多次产生多实例,就是模式8)。

模式5一般与模式4配合使用。

  • 案例:

无论在何种方式的“付款”之后,进行“发送货物”。

  • K2实现:

每个分支维护自己的完成标记,所有Line Rules都设置成:有且仅有本分支完成。

    1. 高级分支与同步模式

 

多路选则(Multi-choice

  • 描述:

当一个活动完成以后,有多个分支进行选择,可以选择其中的一个或者多个分支,即“多选多”(模式4 选择是“多选一”模式)。选择的多个分支可能存在并行执行的情况。

模式6可以认为是模式4的扩展。

  • 案例

“发起会签”之后,可以多种选则会签方式,但至少要选择一种。

  • K2实现

3个Line Rules的逻辑是独立的。

同步合并(Synchronize Merge 

  • 描述:

在流程中的某个聚合点,多个分支路径合并成一个路径。在聚合点,流程会等待所有的分支到来,才能激活后续的活动。这个模式可以选择分支路径,如果只选择一个分支,实现的功能类似于模式5 简单聚合模式;如果选择两个及以上的分支,实现的功能类似于模式 3 同步模式。

模式7可以认为是模式5的扩展。

模式7一般与模式6配合使用。

  • 案例:

要等待所有需要会签的活动都结束才进入“会签结束”,忽略不需要会签的活动。

  • K2实现

每个激活的分支都维护自己的完成标记,Line Rules都设置为:所有激活的分支均完成。

多路合并(Multi-merge

  • 描述:

在流程中多个分支(可能是模式6 多重选择的一个或多个分支;也可能是模式2 并行中的多个分支),在合并时每个分支执行完都会激活后面的活动。与模式5 简单合并的区别在于:简单合并的分支只有一个可执行并且后续活动只激活一次;而多路合并是多个分支可执行,后续活动激活多次。

有的工作流引擎不支持。

  • 案例:

报销过程中假如分为住宿费、交通费、飞机票特殊报销,每种类型都需要进行审批。如果飞机票的审批比较严格,拖得较久,可能就需要其他的费用先审批通过进入下一环节。

  • K2实现:

无需添加任何的Line Rules。

鉴别器(Discriminator

  • 描述:

在流程中的某个聚合点,等待所有的分支(可能是并行分支,也可能是多重选l  择分支)中的第一个分支执行到达后,就立刻激活后续活动。

  • 案例:

     M个“会签”活动中只要一个会签完成就立即进入“会签结束”。

  • K2实现:

“会签”节点的Destination Rules 为Create M Slots,Line Rules的逻辑为at least 1 of slots。

10 MN鉴别模式N out of M

  • 描述:

在流程中的某个聚合点,等待所有的M 个分支(可能是并行分支,也可能是多多选分支)中的前N 个分支执行到达后,就立刻激活后续活动。与模式9的区别在于模式10有N路同步的概念。

  • 案例:

M个“会签”活动中只要N个会签完成就立即进入“会签结束”。

  • K2实现:

“会签”节点的Destination Rules 为Create M Slots,Line Rules的逻辑为at least N of slots。

工作流模式与K2实现- (1)的更多相关文章

  1. 工作流模式与K2实现--(2)

      结构化过程  这两个模式的共同点在于:模式所涉及流程的执行路径是由运行时决定的,而非设计时确定.包括:Arbitrary cycles(强制循环模式) .Implicit termination( ...

  2. 工作流模式 (zhuan)

    http://www.cnblogs.com/soundcode/archive/2010/12/30/1922283.html *********************************** ...

  3. Slickflow.NET 开源工作流引擎高级开发(三) -- 并行分支容器与会签工作流模式的组合

    前言:  流程引擎的核心功能是负责解析流程定义XML和流转,业务环节的不断积累,让人们不断总结和抽象出一些模式,这些模式统称为工作流模式(Workflow Pattern).本文的重点就是介绍一种常见 ...

  4. Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现

    前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现.默认的分支类型是静态定义好的.本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关, ...

  5. K2工作流引擎Demo

    ---恢复内容开始--- 以前的工作都是电商网站形式的,从未接触过工作流相关工作,新公司是传统制造业行业,我进的这个组又是做工作流这块相关工作的,所以避免不了和工作流打交道. 这边工作流主要用K2来做 ...

  6. “人少也能办大事”---K2 BPM老客户交流会

    主题:固铂轮胎工作流项目分享-K2 SmartForm下的工作流快速开发 嘉宾:王彦(固铂轮胎IT资深经理) 国内业务规模越来越大,流程越来越复杂,跨部门跨组织的流程纸质审批非常复杂,内控的要求越来越 ...

  7. Java开源 开源工作流

    OpenEbXML   点击次数7801 Werkflow   点击次数11181 OSWorkflow   点击次数14988 wfmOpen   点击次数7997 OFBiz   点击次数1234 ...

  8. Yeoman:适合现代Web应用的现代工作流

    Yeoman:适合现代Web应用的现代工作流   Yeoman是Google的团队和外部贡献者团队合作开发的,他的目标是通过Grunt(一个用于开发任务自动化的命令行工具)和Bower(一个HTML. ...

  9. git 工作流介绍

    GIT Git工作流你可以理解为工作中团队成员遵守的一种代码管理方案,在Git中有以下几种工作流方案作为方案指导: 集中式工作流 功能开发工作流 Gitflow工作流 Forking工作流 下面针对性 ...

随机推荐

  1. Objective-C学习笔记---构造函数和析构函数

    简单的讲,构造函数就是在创建一个对象的时候起到初始化的作用,对这个对象里的一些成员变量进行初始化,析构函数就是在对象被删除进行一些清理工作,也就是专门的扫尾工作,下面用代码来进行具体说明. 一.构造函 ...

  2. WKWebView API精讲(OC)

    WKWebView API精讲(OC) 前言 鉴于LL同志对笔者说:“能不能写个OC版本的WKWebView的使用教程?”,还积极打赏了30RMB,笔者又怎么好意思拒绝呢,于是才有了下文. 所有看到本 ...

  3. Effective Java 阅读笔记——并发

    66:同步访问共享的可变数据 synchronized:1互斥,阻止线程看到的对象处于不一致的状态:2保证线程在进入同步区时能看到变量的被各个线程的所有修改 Java中,除了long或者double, ...

  4. UNIX/Linux下C语言的学习路线

    一.工具篇 “公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工具. 1.操作系统    在UNIX或 ...

  5. Effective Java 03 Enforce the singleton property with a private constructor or an enum type

    Principle When implement the singleton pattern please decorate the INSTANCE field with "static ...

  6. C# List与DataTable的相互转化

    List与Data的转化比较简单,网上也很多.但是大多都有一个Bug:当实体类有可空类型的属性时,转化会出异常(DATASET不支持System.Nullable异常) 下面的方法可以避免出现这个问题 ...

  7. "ORA-12154: TNS:could not resolve the connect identifier specified"的解决办法

    添加环境变量解决: 变量名:TNS_ADMIN 变量值:D:\Ocl\product\11.2.0\dbhome_1\NETWORK\ADMIN tnsnames.ora所在的路径

  8. 【linux】关于TCP三次握手和四次挥手

    1.TCP是什么 关于OSI的七层模型 TCP在第四层——Transport层,第四层的数据叫Segment->报文 IP在第三层——Network层,在第三层上的数据叫Packet->数 ...

  9. 基于WF4.0的公文管理系统

    系统功能说明 公文管理 通过定义公文的基本信息,并将它按照工作流的定义流转实现公文的管理.包含以下功能: )公文创建:用户能够将格式化文本作为公文上传到系统中,并选择工作流启动流程. )公文审批:具有 ...

  10. ehcache入门

    一.简介 ehcache是一个开源的,纯java进程内的缓存框架.它具有快速,简单,具有多种缓存策略等特点. Hibernate中默认就是用了ehcache.在我们的应用中使用ehcache可以快速地 ...