`
snowfox2008
  • 浏览: 127507 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

工作流系列之基础概念篇

阅读更多
 
工作流系列 --- 基础概念篇
1、 工作流管理系统基本概念
近两年随着电子商务环境不断演进(例如阿里巴巴的 B2B 电子商务平台),从原来支持企业内部单系统的业务流程、到企业内部应用、服务的集成,再进一步向企业与合作伙伴之间业务交互,工作流正扮演着越来越重要的角色。
到底什么是工作流呢,笔者拿一个图来说明,如下图所示:


图1 工作流管理系统结构图

图1是工作流管理系统的一个基本组成结构,由流程建模工具、外部应用接口、任务管理工具、流程监控工具、组织建模工具、界面定义工具(电子表单工具)和内部核心引擎组成。
2、 工作流相关规范
Ø  WFMC 工作流管理联盟
工作流管理联盟在 1993 年成立之后,颁布了一系列工作流管理系统相关标准和技术规范,包括工作流术语表 [4] 、工作流参考模型 [5] 、工作流管理系统各部分间协作的五个接口规格 [6-9] 、工作流产品的互操作性标准 [10] 等。其中接口一早期的标准为 WPDL Workflow Process Definition Language ),后来这一接口的规范变更为 XPDL XML Process Definition Language )。 XPDL 是至今工作流领域最为重要的一个标准,目前大多数工作流引擎是依据该标准设计开发的。
Ø  BPMI 业务流程管理促进会
BPMI Business Process Management Initiative ,业务流程管理促进会)一直在积极推动 BPM 的标准化。它的目标是使各种类型以及不同行业的公司都可以跨越 Internet 、透过防火墙开发与操作涉及多个业务伙伴和应用的业务流程,通过建立流程设计、部署、执行、管理和优化的相关标准来促进 BPM 的发展。 BPMI.org 制定了许多开放标准,如业务流程建模语言( BPML Business Process Modeling Language [12] 、业务流程查询语言( BPQL Business Process Query Language )、业务流程建模标注( BPMN Business Process Modeling Notation [13] 等。 BPMI WfMC 2002 6 26 日宣布将合作制定业务流程和工作流标准,即采用 BPML 来描述工作流过程,同时采用 XPDL 所定义的工作流模型。
Ø  BPEL 业务流程执行语言
2002 8 9 日, Microsoft BEA IBM SAP & Siebel 联合提交发布了 BPEL 规范。 2003 4 BPEL 规范提交给了 OASIS Organization for the Advancement of Structured Information Standards ,结构化信息标准促进组织)更名为 WSBPEL Web Services Business Process Execution Language )规范 [16] Sun Microsystems 和甲骨文公司也相继加入了 OASIS 组织。此规范描述如何处理输入的消息,它不是一个关于业务流程规格化定义的规范。简单的说,可以将它看作 XML 形式的编程语言,提供将 WSDL-Services 组合成控制流的能力。此规范实际上 BPM 的规范,关于 Workflow BPM 的区别笔者会在后续的文章中讲到。
除了上述三个主要的规范以外还有, OMG WSCI WSFL 等规范,在此就不在赘述。
3、 工作流参考模型及解析

图2 WFMC工作流参考模型 [5]
2 是工作流管理联盟提出的工作流管理系统参考模型,包括 5 个接口和 1 个核心引擎,其中各个接口的具体含义如下:
Ø  接口 1 :工作流定义接口,为用户提供一种可视化的,可以对实际业务进行建模的工具,并生成业务过程的可被计算机处理的形式化描述。此接口的规范有 WPDL XPDL BPEL BPM 定义规范)大多数的工作流产品都实现了此接口。
Ø  接口 2 :工作流客户应用接口,它给用户提供一种手段,以处理流程运行过程中需要人工干预的任务(实际上就是工作项 workitem) 。工作流管理系统负责维护这个工作项列表。
Ø  接口 3 :工作流调用应用接口,工作流引擎调用外部业务应用的规范,例如在流程执行的过程中去调用业务系统提供的接口处理业务数据等。此接口各个工作流产品实现的不尽相同,它和具体的工作流产品的实现语言和架构相关,例如本公司工作流产品就可以支持对 javabean 的调用,对 webservice 的调用(通过 webservice 技术可以调用任何异构的,不同语言实现的业务应用),对 xml bean 的事件调用,对 spring bean 的调用等。
Ø  接口 4 :工作流引擎协作接口,是不同的工作流引擎之间进行协作的接口规范,此接口 WFMC 定义的不是很详细,不同厂商的工作流引擎直接进行协作也存在大量的困难,因此实现此接口规范的工作流引擎产品也极少。
Ø  接口 5 :管理监控接口,其功能是对工作流管理系统中所有实例的状态进行监控与管理,如组织机构管理、实例监控管理、统计分析管理、资源控制等。
 
工作流引擎:它是工作流管理系统的核心, 工作流引擎对使用工作流模型描述的过程进行初始化、调度和监控过程中每个活动的执行,在需要人工介入的场合完成计算机应用软件与操作人员的交互。另外它的另外一个重要的功能是完成与应用软件及操作人员的交互。
 
4、 工作流引擎内部对象

图3 工作流引擎实例关系图
3 是工作流引擎的内部实例对象关系图,一个流程实例( InstProcess )由一个流程实例变量( InstProcessVariable )、 1…* 个活动实例( InstActivity )、 1…* 个转移实例( InstTransition )组成,而一个活动实例包括一个活动实例变量( InstActivityVariable )和 1…* 个工作项实例( Workitem )组成。
 
5、 工作流之控制模式
工作流控制模式是由 [W.M.P. van der Aalst] A.H.M. ter Hofstede Bartosz Kiepuszewski A. P. Barros 等人于 2000 年提出的一个概念。他们一共总结了 21 种工作流模式。包括:顺序 (sequence) 、并行分裂( Parallel Split ))、同步( Synchronization )、排它选择( Exclusive Choice 、简单合并( Simple Merge 、多路选择( Multiple Choice )、多路合并( Multiple Merge )、路径鉴别器( Discriminator )、 M 中选 N 合并( N-out-of-M Join )、同步合并( Synchronising Join )、任意循环( Arbitrary Cycles )、绝对终止 (Implicit Termination )、多实例(设计时已知实例数目)、多实例(运行时才知实例数目)、多实例(无预知)、多实例(要求同步的多实例)、延期选择( Deferred Choice )、交叉路由( Interleaved Routing )、里程碑( Milestone )、取消任务( Cancel Activity )、取消流程( Cancel Case )。以上就是著名的工作流 21 种模式。详细的参考资料参见: http://www.workflowpatterns.com/patterns/control/index.php
 
6、 工作流之资源模式
工作流资源包括参与实体资源、外部应用资源
参与者实体模式,包括直接分配( Direct Allocation )、基于角色 / 组分配( Role-Based/Group-Based Allocation)、基于岗位分配( Position-Based Allocation )、延期分配 / 动态分配( Deferred Allocation/Dynamic Allocation)、基于规则分配( Rule-Based Allocation )、基于能力的分配( Capability-Based Allocation)、基于组织关系分配( Organisational Allocation)、基于历史分配( History-Based Allocation)、轮转法分配( Round Robin Allocation )、竞争分配( Competitive Allocation )、委派( Delegation)、跳跃( Skip )、重做( Redo
直接分配模式: 在工作流设计期,直接为某个活动节点指定具体的用户为参与者;
基于角色 / 组分配模式: 在工作流设计期,直接为某个活动节点指定某个角色或组为参与者;
基于岗位分配模式: 在工作流设计期,为某个活动分配一个具体的岗位;
延期 / 动态分配模式: 在运行期动态的分配某个参与实体给某个活动节点;
基于规则的分配模式: 在设计期或运行期,根据某个具体的规则来决定某个活动节点的参与者,此规则可以由规则引擎(例如 DRools )来运算,也可以由 xpath 来查询,或者有某个具体的运算逻辑(在活动节点调用业务应用,例如 javabean 来实现);
基于能力的分配模式: 要求某个活动的参与者实体必须具备特定的条件;
基于组织关系分配: 基于当前参与者的职位以及与其它组织资源的关系(例如请假流程中,程序员请假会自动路由给项目经理,项目经理请假会路由给部门经理,然后依次给根据行政关系自动分配参与者);
基于历史分配模式: 当前活动节点的参与者为前续某个已经执行过的活动节点的参与者,此模式在电子政务的审批流程中经常会用到,例如某个工作项由秘书办理后发给领导,然后又从领导处返回个秘书;
轮转法分配模式: 在运行期按照轮转法进行分配,轮转法大家应该在负载均衡的解决方案中经常看到;
竞争分配模式: 活动节点的参与者有多个人,多个人共同竞争此活动,某个人竟得此活动后,其他的参与者不能再竞争;
另外还有委派、跳跃、重做等模式,上面给出了最常用的参与者模式。
对于资源模式参见: http://www.workflowpatterns.com/patterns/resource/index.php
通过上面 4 5 的分析,我们可以给出工作流流程的概念:工作流流程就是由多个活动节点( Activity )通过工作流控制模式(例如顺序、并行分裂、排它选择、多路选择、多路合并等)连接起来形成一个有序且连续的流程。而引擎为每个活动节点按照各种参与者实体模式(例如直接分配,基于角色、组、岗位的分配,基于组织关系的分配模式等)分配具体的参与者。为了使读者能对流程一个直观的认识,笔者给出一个典型的流程图,如下所示:

 
  • 大小: 29 KB
  • 大小: 23.9 KB
  • 大小: 22.8 KB
  • 大小: 18.2 KB
分享到:
评论

相关推荐

    Java实现工作流技术简介

    本篇文章将对Java实现工作流技术进行基础介绍,包括其基本概念、常见框架以及如何在Web环境中应用。 一、工作流基本概念 工作流(Workflow)是指一系列相互关联的任务,这些任务按照特定顺序执行,以完成一个明确的...

    新工作流

    1. JPA基础:介绍JPA的概念、目标和在工作流中的作用。 2. 实体和映射:讲解如何定义工作流相关实体,并进行数据库映射。 3. 数据库操作:展示如何使用JPA进行添加、查询、更新和删除操作。 4. 查询语言:可能涉及...

    jBPM4工作流开发实战

    工作流技术是实现业务过程自动化的重要手段之一,它能够帮助企业提高工作效率,减少人为错误,增强业务流程的透明度和可控性。 **2. 工作流引擎:** 工作流引擎是实现工作流管理的核心组件,负责处理工作流定义,并...

    基于关系数据库的工作流系统设计与实现

    工作流系统是一种自动化业务流程管理的技术,它将复杂的任务分解为一系列可执行的步骤,并按照预定义的规则和顺序进行协调。在“基于关系数据库的工作流系统设计与实现”这篇文章中,作者深入探讨了如何利用关系...

    BOS开发指南_工作流

    工作流系统是企业信息化系统中至关重要的组成部分,尤其在EAS BOS(企业应用套件业务操作系统)的基础体系结构中,工作流系统作为关键支撑系统,确保业务能够灵活地应变并随需而变。本篇BOS开发指南—工作流系统旨在...

    activiti工作流学习总结

    工作流是一系列相互关联的任务,这些任务按照一定的规则和顺序执行,以实现某个业务过程。Activiti是一款开源的工作流引擎,它基于Java平台,广泛应用于企业的业务流程自动化中,提供强大的流程定义、执行、监控和...

    一篇关于工作流的文章,不错

    工作流语言和术语,如表1所示,是理解和实施工作流的基础。工作流的流程逻辑定义了任务顺序、路线规则和业务规则,而流程实例则是这些规则的实际执行。理解这些基本概念有助于设计和优化企业的业务流程,实现自动化...

    vs2008视频教程9:开发 SharePoint工作流

    理解工作流的基础概念,掌握开发流程,以及熟悉工作流在SharePoint生态系统中的作用,都将对提升SharePoint平台的业务效率大有裨益。通过实践,你可以创建出满足企业需求的定制化工作流解决方案,进一步提升组织的...

    WWF的杂志-生成工作流

    ### WWF的杂志-生成工作流 #### 一、引言 在当今快速变化的商业环境中,企业越来越依赖于高效的工作流系统来自动化业务流程、提高生产力并促进跨部门协作。工作流技术不仅有助于简化复杂的业务操作,还能帮助企业...

    PC技术内幕系列专题(七)——CPU技术内幕之基本计算概念篇.pdf

    《PC技术内幕系列专题(七)——CPU技术内幕之基本计算概念篇》深入解析了CPU这一复杂的计算核心,强调了理解和分析CPU时不应局限于物理层面和最新技术,而是要重视基本的计算概念。文章旨在为非计算机硬件专业的...

    网络编程基础篇系列之ASP

    "灰鸟资讯"的网络编程基础篇系列提供了ASP的教程,包括下载源代码和资料,这是一套适合初学者入门的学习资源。通过这些教程,你可以学习到ASP的基础语法、对象使用方法、数据库连接以及常见Web应用的构建技巧。 ...

    网络编程基础篇系列.rar

    "网络编程基础篇系列"这个压缩包文件很可能是为初学者准备的一份详细教程,涵盖了网络编程的基础概念和技术。让我们深入探讨一下这个主题。 首先,我们要理解网络编程的基本概念。网络编程是指编写能够通过网络进行...

    C++程序设计原理-与-实践-第二版-基础篇.pdf

    总之,《C++程序设计原理与实践》第二版基础篇是一本全面而深入的C++入门教程,它不仅涵盖了C++的基础语法和核心概念,还注重实践教学,使读者能够在学习过程中不断积累编程经验,成为一名熟练的C++开发者。

    电子-信号完整性分析基础系列共19节.zip

    1. **信号完整性分析基础系列之01_关于眼图测量上.docx**: 眼图是一种直观展示信号质量的工具,通过观察眼图,工程师可以了解信号的幅度失真、定时误差和噪声。上篇可能详细介绍了眼图的基本概念、构成要素以及...

    BCG:互联网金融生态系统2020系列报告之大数据篇

    ### BCG:互联网金融生态系统2020系列报告之大数据篇 #### 1. 价值导向与内嵌式变革——BCG对大数据的理解 在大数据领域,“三个V”(即Volume体积、Velocity速度、Variety多样性)是广为人知的概念。然而,在金融...

    java私塾跟我学系列-java篇

    Java私塾跟我学系列是为Java初学者精心编纂的一套教程,旨在系统地介绍Java编程语言的基础知识和实际应用。这个系列涵盖了从语言基础到高级特性的全面内容,是编程爱好者入门和进阶的理想资源。 Java是一种面向对象...

    通信基础知识系列之九:计算机网络和路由器基础知识

    在“通信基础知识系列之九:计算机网络和路由器基础知识”这一章节中,我们深入探讨了计算机网络与路由器的基础概念,这是现代通信技术的核心组成部分。本文将详细解析标题和描述中的关键知识点,包括通信基础知识、...

Global site tag (gtag.js) - Google Analytics