基于web技术的工作流管理系统的方案设计书与实现.doc
硕 士 学 位 论 文题 目 基于WEB技术的工作流管理系统设计与实现作 者 刘福顺 完成日期 2006年 4 月 培 养 单 位 四 川 大 学 指 导 教 师 唐宁九 教 授 专 业 计算机软件与理论 研 究 方 向 软件工程 授于学位日期 年 月 日基于WEB技术的工作流管理系统设计与实现计算机软件与理论 专业研究生 刘福顺 指导教师 唐宁九工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档、信息或任务能够在不同的执行者之间进行传递与执行。工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。一个完整的工作流管理系统是由工作流执行部件、工作流功能部件和外部应用系统构成的。工作流执行部件,即工作流引擎,是工作流管理系统的核心。工作流引擎负责解释过程定义、创建模型实例、调度模型实例任务、推进流程等功能。一个过程模型就是企业经营过程中业务流程的一个抽象模型,当使用诸如Petri网这样的形式语言来描述一个企业经营过程时,就形成了过程定义。过程定义被工作流引擎解释转换为能被工作流引擎执行的过程模型,创建运行时模型实例并依据特定的调度算法,例如经典Petri网调度算法,对过程实例中的活动进行调度。工作流技术在企业中的应用范围主要有两类,一类是在以公文流转为功能主体的办公自动化系统中的应用,另一类则是为企业业务系统提供运行支撑平台的工作流管理系统。不同的应用对工作流引擎的功能要求也是不同的,作为一个功能完善的工作流引擎,核心调度能力要灵活,同时要能够支持常见的流程模型,例如:固定流程、自由流程以及嵌套流程等。本文论述的是一个基于WEB技术的工作流管理系统的设计与实现,提出了一种将工作流技术应用于企业的工作流管理系统的通用架构,阐述了经典petri网调度算法在工作流引擎中的应用与实现,分析并实现了工作流引擎对三种常见的流程模型的支持。关键词:工作流;工作流管理系统;Petri网;工作流引擎Web-based Workflow Management System Design and ImplementationLiuFushun( Computer Software & Theory )Directed by TangNingjiuWorkflow is the automation of a business process, in whole or part, during which documents, information or tasks are passed from one participant to another for action, according to a set of procedural rules. Workflow management system is a system that defines, creates and manages the execution of workflows through the use of soft ware, running on one or more workflow engines, which is able to interpret the process definition, interact with workflow participants and, where required, invoke the use of IT tools and applications. A whole workflow management system consists of workflow enactment component, workflow function component and external application system. Workflow enactment component, so-called workflow engine, is the kernel of a workflow management system. All functions such as the interpretation of process definition, the instantiation of process model and the schedule of activity are all under the charge of workflow engine. A process model is a pure model of business workflow in enterprise running process. When an enterprise running process is modeled using formal language such as Petri-net, a process model comes into being. The scope of workflow technology application in enterprise involved in two categories, one is OA system with document transition as its main foundation, and another is workflow management system serves as the running platform of enterprise business systems. Different applications require different functions of workflow engine. Being a well-functional workflow engine, its kernel schedule arithmetic should be flexible. At the same time, it should be able to support three kinds of process model such as fixed process, freedom process and nested process.In this paper, we discuss the design and implementation of a web-based workflow management system。 give out a common workflow management system structure which is useful when you want to apply workflow technology to enterprise application。 expound the application and implementation of classical Petri-net schedule arithmetic in workflow engine。 analyze the support of three kinds of process model in workflow engine.Key Words: Workflow。 Workflow Management System。 Petri-net。 Workflow Engine目 录1绪论11.1工作流的起源11.2本文结构安排12基本理论22.1工作流22.2工作流参考模型32.3工作流管理系统62.4工作流管理系统架构82.4.1工作流管理系统组成部分82.4.2工作流管理系统组件说明92.5 Petri网102.5.1 Petri网的基本元素102.5.1.1库所112.5.1.2变迁122.5.1.3弧132.5.1.4标记132.5.2 Petri网的触发器142.5.3 Petri网的路由152.5.4 Petri网的发散和汇聚163相关工作183.1工作流发展现状183.2工作流研究领域204系统描述214.1系统功能描述214.2系统对外服务225系统设计245.1 工作流管理系统架构255.1.1业务系统注册服务255.1.2过程模型定义服务275.1.3工作流程监控服务295.1.4通用功能接口服务295.1.5统一工作平台服务305.2部件功能解读305.2.1工作流执行服务部件305.2.2工作流功能服务部件305.2.3业务系统应用部件315.3工作流引擎详解315.3.1任务调度策略315.3.1.1 Petri网调度算法325.3.1.2调度实例说明335.3.2对流程模型的支持365.3.2.1固定流程支持365.3.2.2自由流程支持375.3.2.3嵌套流程支持415.3.3任务表管理器436系统实现446.1数据库设计446.1.1模型定义数据456.1.2模型引用数据466.1.3实例静态数据466.1.4实例动态数据476.2图形建模工具486.2.1 VML和SVG的比较486.2.2输出文件格式说明506.3过程模型转换器516.3.1 DM转换器526.3.2 MD转换器536.4工作流引擎核心代码分析546.4.1 FindTransitionsCanBeEnabled546.4.2 EnableATransition556.4.3 FireAnEnabledTransition576.4.4 PushAnEnabledTransitionToWorkitem586.4.5 InstantiateAWorkflow586.4.6 CommitATransition606.4.7 GetWorkitemFromEngine616.4.8 CommitAWorkitem617结束语63参考文献65作者在读期间参与科研及论文发表情况67独创性声明68致谢691绪论1.1工作流的起源工作流技术起源于二十世纪七十年代中期办公自动化领域的研究,由于当时计算机尚未普及,网络技术水平还很低以及理论基础匮乏,这项新技术并未取得成功。1983年至1985年间,在图像处理领域和电子邮件领域出现了早期的含有工作流特征的商用系统。 进入九十年代以后,随着个人计算机、网络技术的普及和推广,以及信息化建设的日益完善,使得工作流技术的研究与开发进入了一个新的热潮。1993年8月,第一个工作流技术标准化的工业组织工作流管理联盟(Workflow Management Coalition,简称WFMC,下同)成立。1994年,工作流管理联盟发布了用于工作流管理系统之间互操作的工作流参考模型,并相继制定了一系列工业标准。与此同时,关于工作流技术的学术研究也十分活跃,许多原型系统在实验室里开发出来。进入二十一世纪以来,工作流技术已被越来越多的人认可,与之相关的标准规范、工作流引擎及商业产品不胜枚举。人们在开发推广工作流产品的同时,更加注重工作流的理论研究,以推动该项技术走向成熟。1.2本文结构安排本文后面内容将按如下章节编排:第二部分基础理论部分将对工作流及工作流管理系统的概念、模型等信息和Petri网相关基础知识进行解释;第三部分相关工作章节简述了工作流的发展现状以及工作流的研究领域等;第四章是本文所涉及的工作流管理系统的系统功能描述,意在从系统需求的角度在功能层上介绍本工作流管理系统;第五部分以本工作流管理系统的系统架构为核心,分别从不同的角度对本工作流管理系统的系统设计思想作了详细的说明;在第五部分的系统设计基础之上,第六部分内容对本工作流管理系统的各个主要功能部件进行了关于实现技术上的详细介绍并对作为工作流管理系统灵魂的工作流引擎的部分核心代码进行了说明。2基本理论2.1工作流“工作流”这个概念并不为大多数人所了解,即使是在专业的软件开发人员中,“工作流”这三个字也是远远比不上DBMS这样的术语为人熟悉和使用的程度,这并不是说工作流技术不及DBMS等技术,只是说明了工作流技术相对于DBMS等成熟、稳定的技术来说,还处于发展的初期。工作流的英文单词是workflow,犹如大多数计算机领域的术语一样,也是个合成词,是英文单词work和英文单词flow的组合。Work翻译为任务、工作等,flow则翻译为流程、流动等。Flow反映的是一种事物的动态属性或变化过程,例如水的流动被称为水流,空气的流动被称为气流,还有物料流、资金流等,在抽象领域还有信息流、控制流等,因此,使用任务、活动以及活动之间的变化过程表示业务流程就被称为工作流。在企业实际应用中,虽然工作流的概念相对于物料流、资金流、信息流等概念要抽象一些,但是工作流从更高的层次上提供了实现物料流、资金流、信息流及其涉及的相关过程与应用的集成机制,从而使得企业能够实现业务过程继承、业务过程自动化与业务过程的管理。在工作流概念下实现业务过程集成与业务过程自动化的继承机制是通过定义不同任务之间相互关系的工作流模型(也称为过程模型)来实现的。在工作流模型中,无论是具体的物料转移动作、实际物理装置的操作动作、还是抽象的信息处理动作与决策过程,都可以用工作流的基本组成元素任务(也称为活动)来统一地描述。同样,反映不同任务之间的关系,无论是具体的车间中零件加工顺序关系、办公自动化中的文件批转、还是抽象的决策流之间的关系都可以用工作流的基本组成元素连接弧来统一地进行描述。连接弧反映了对企业业务经营过程的一种控制逻辑,它定义了活动之间的连接关系和执行顺序。工作流尚没有一个统一的、明确的定义,不同的组织和研究人员对工作流给出了各自的定义:定义1:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则,文档、信息或任务能够在不同的执行者之间进行传递与执行。定义2:工作流是将一组任务组织起来完成某个经营过程。在工作流中定义了任务的触发顺序和触发条件。每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以是由一个或多个人与软件系统协作完成。任务的触发顺序和触发条件用来定义并实现任务的触发、任务的同步和信息流(数据流)的传递。定义3:工作流是一个用来实施经营过程实践的机制。定义4:工作流是经营过程的一种计算机化的表示模型,定义了完成整个过程所需要的各种参数。这些参数包括对过程中每一个步骤的定义、步骤间的执行顺序、条件以及数据流的建立、每一步骤由谁负责以及每个活动所需要的应用程序。以上这些工作流的定义,虽然在表述方式上有所不同,但是基本上说明了这样一个问题,即工作流是经营过程的一个计算机实现。使用工作流作为经营过程的实现技术首先要求工作流系统能够反映经营过程的如下几个方面问题:1. 经营过程是什么,即由哪些活动、任务组成,也就是结构上的定义;2. 怎么做,即活动间的执行条件、规则以及所交互的信息,也就是控制流与信息流的定义;3. 由谁来做,即人或者计算机应用程序,也就是组织角色的定义;4. 做得怎样,即通过工作流管理系统对执行过程进行监控。2.2工作流参考模型随着对工作流产品需求的不断扩大,许多公司纷纷推出了不同的工作流产品。这些工作流产品都有自己的特点,也有自己的协议和接口标准,它们在不同的应用领域进行了应用。但是由于工作流管理技术与产品缺乏统一的标准,这些不同的工作流产品从术语的定义和使用、系统结构的设计到与应用之间的接口规范上都存在较大的差异,导致这些产品之间、产品与其它应用之间的集成十分困难。按照对系统开放性的要求,这些工作流系统和产品的规范化程度和开放性不够,导致它们之间不能够实现互操作。工作流管理系统互操作是指两个或多个工作流机之间通讯和协作工作的能力,具有通讯和协作的能力就称为可以互操作,否则就称为不能互操作。不同工作流管理系统之间不能互操作这种情况给开发商和用户都带来了很大的不方便,也在一定程度上阻碍了工作流管理系统的推广和发展。为了能够更好的支持企业经营建模、分析和实施,适应世界市场的多元化趋势,需要建立工作流管理系统的相关标准,从系统结构、术语使用、接口实施方面提供标准化与规范化的定义,并以此为基础实现不同工作流产品之间的互操作,方便于其它应用系统的集成。在建立工作流的相关规范和标准方面,WFMC就是这样的一个国际组织。它提出了有关工作流管理系统的一些规范,定义了工作流管理系统的结构及其与应用、管理工具和其它工作流管理系统之间的应用编程接口,其主要目的是为了实现工作流技术的标准化和开发性,从而支持异构工作流管理系统与产品之间的互操作,并且使得其它的应用可以使用该结构和定义好的通用API(应用编程接口)访问不同的工作流管理系统提供的服务,实现与其它应用的快速有效集成。WFMC在工作流的相关规范和标准方面做出的主要贡献之一就是提出了一个工作流参考模型(Workflow Reference Model)。工作流参考模型来源于对普通工作流程序结构的分析,确定结构中的接口,这些接口可以使不同产品在不同的结构层次上协同工作。所有工作流系统都包含一系列的公共组件,组件间采用一套被定义好的方法进行协作;不同的产品在这些公共的组件中,会表现出不同的处理能力。为了实现不同工作流产品间的协同工作,需要在这些组件间制定一套标准的接口和数据交换格式。通过实现这些标准接口,可以达到产品间的协同工作。图1描述了WFMC提出的工作流参考模型的主要组件和接口。图1:WFMC工作流参考模型组件与接口过程定义工具:以计算机能处理的形式进行过程定义,现在的大多数过程定义工具采用了图形方式,过程设计者通过绘图方式来创建过程模型,最后输出一个XPDL文件,有的过程定义工具还有分析、检测功能,帮助设计者设计出良好的过程模型。工作流执行服务:由一个或多个工作流引擎组成,提供过程实例的执行,为活动进行导航,与外界资源交互完成各项活动,维护控制数据和相关数据等功能。工作流客户端应用:提供用户操作工作流管理系统分配来的任务,由工作流任务表管理器和任务操作共同完成。工作流任务表管理器是一个软件模块,负责管理工作流的任务表,并完成与工作流参与者的交互操作。工作流引擎直接调用应用:在工作流任务执行过程中,一些不需要人员参与的活动会直接调用一些应用。在简单的情况下,工作流引擎使用过程模型中定义的活动信息、应用程序所需要的数据来激活外部应用程序;在复杂的情况下采用工具代理的方式。工具代理与工作流引擎之间通过专用集成接口来完成数据交换和消息传递。系统管理和监控工具:对工作流在整个组织内的流程情况进行监控,并提供一系列管理功能,实现安全性、过程控制、授权等操作。典型的功能范围包括用户管理、角色管理、监控管理、资源管理、过程监控管理。具体如:过程模型的实例化,启动、挂起、恢复、终止过程实例;管理正在执行的过程实例等。工作流定义转换(接口1):在建模或定义工具与运行时期工作流管理软件间的接口。工作流客户端应用程序接口(接口2):客户端工作流应用程序与工作流机之间的通信API。应用程序调用接口(接口3):工作流机直接调用应用程序或应用程序代理的API,是工作流系统同应用系统通信的主要接口之一。WAPI协作功能接口(接口4):工作流机同工作流机之间的通信接口,是构成分布式工作流管理系统的主要功能接口之一。管理和监控接口(接口5):提供对工作流机状态以及工作流运行实例的监控和管理的接口。2.3工作流管理系统工作流管理是在迅速发展的技术,它在不同的行业已经得到了应用。工作流管理技术与工作流管理系统得到广泛重视的一个重要原因是它能够在信息技术的支持下实现基于人工和计算机活动组成的业务过程的自动化,它可以实现不同自动化程度(人工操作、半自动化、自动化过程)的规范化业务管理功能,具有良好的适应性。因此,虽然工作流管理最早是在办公自动化领域开始进行应用的,它在工业领域的应用同样取得了显著的成果,尤其是在制造领域得到了广泛的应用。工作流管理系统Workflow Management System(简称WFMS),在工作流定义基础上,具有如下定义。定义1:工作流管理系统是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。定义2:工作流管理系统是支持企业经营过程高效执行并监控其执行过程的计算机软件系统。根据工作流管理系统的定义,一个工作流管理系统应该提供如下的功能:1. 定义、实现和管理工作流的运行;2. 与工作流执行者,即人或应用系统,进行交互;3. 推进工作流实例的执行;4. 监控工作流的运行状态。需要指出的是,工作流管理系统不是企业的业务系统。在很大程度上,工作流管理系统为企业的业务系统运行提供了一个软件支撑环境,非常类似于在单个计算机上的操作系统。只不过工作流管理系统支撑的范围比较大、环境比较复杂而以,所以也有人称工作流管理系统是业务操作系统。在工作流管理系统的支撑下,通过集成具体的业务应用软件和操作人员的界面操作,才能够良好地完成对企业经营过程运行的支持。所以,工作流管理系统在一个企业或部门的经营过程中的应用过程是一个业务应用软件系统的集成与实施过程。工作流管理系统可以用来定义与执行不同覆盖范围(单个工作者、部门、全企业、企业间)、不同时间跨度(分钟、小时、天、月)的经营过程。这完全取决于实际应用背景的需求。按照经营过程以及组成活动的复杂程度的不同,工作流管理系统可以采取许多种实施方式,在不同的实施方式中,所应用的信息技术、通信技术和支撑系统结构会有很大的差别。工作流管理系统的实际运行环境可以是在一个工作组内部或者在全企业的所有业务部门。2.4工作流管理系统架构图2:WFMC提出的通用工作流管理系统产品架构2.4.1工作流管理系统组成部分图2为WFMC提出的工作流管理系统产品架构。这个架构给出了抽象的工作流管理系统的功能组成部件和接口,它能够满足工作流管理系统和产品应该具有的主要功能,可为实现工作流产品之间的互操作提供公共的基础。从图中可以看出,工作流管理系统主要由三部分组成:软件构件:完成工作流管理系统不同组成部分功能的实现,包括过程建模工具,工作流引擎,任务表管理器和用户界面;系统控制数据:工作流管理系统中的一个或多个软件构件使用的数据,包括过程定义,组织/角色模型数据,工作流控制数据,工作流相关数据,任务表;应用与应用数据:对于工作流管理系统来说,它们不是工作流管理系统的组成部分,而是属于外部系统和数据,它们被工作流管理系统调用来完成整个或部分工作流管理的功能,如被工作流管理系统调用的外部应用以及这些应用操作的数据。2.4.2工作流管理系统组件说明过程建模工具:过程建模工具被用来创建计算机可处理的业务过程描述。它可以是形式化的过程定义语言或对象关系模型,也可以是简单地规定用户间信息传输的一组路由命令。组织/角色模型:包含了组织结构和组织中角色的信息。这些信息往往与流程定义信息紧密相关。工作流执行系统和工作流引擎:工作流执行系统也称为过程执行环境,包括一个或多个工作流引擎。工作流引擎是WFMS的核心软件。它的功能包括:解释过程定义;创建过程实例并控制其执行;调度各项活动;为用户工作表添加工作项;通过应用程序接口(API)调用应用程序;提供监督和管理功能等。工作流执行子系统可以包括多个工作流引擎,不同工作流引擎通过协作共同执行工作流。工作流控制数据:被工作流执行系统和工作流引擎管理的系统数据,如工作流实例的状态信息、每一活动的状态信息等。工作流相关数据:指与业务过程流程相关的数据。WFMS使用这些数据确定工作流实例的状态转移,例如过程调度决策数据、活动间的传输数据等。工作流相关数据既可以被工作流引擎使用,也可以被应用程序调用。是一段工作流引擎和应用系统共享的数据区。工作列表:流程执行中,当需要用户的交互时,工作流引擎便将工作项放置到由任务表管理器管理的工作列表中,通过任务表管理器实现与用户的交互。应用程序和应用数据:应用程序可以直接被WFMS调用或通过应用程序代理被间接调用。通过应用程序调用,WFMS部分或完全自动地完成一个活动,或者对业务参与者的工作提供支持。与工作流控制数据和相关数据不同,应用数据对应用程序来讲是局部数据,对WFMS的其它部件来说是不可见的。2.5 Petri网Petri网是一个图形化的数学建模工具。一方面可以利用图形化的方式来描述工作流过程,另一方面可以通过形式化的分析技术检查工作流模型的正确与否,甚至对其进行性能分析。Petri网定义成三元组,PN=(P,T,F),其中:lP=p1,p2,p3pm是库所的有限非空集;lT=t1,t2,t3tn是变迁的有限非空集;lF=P×TT×P是有向弧的集合,P和T还满足PT=ø且PTø;图3:一个Petri网模型实例2.5.1 Petri网的基本元素Petri网作为一个图形化的建模工具,具有四种基本的图元,任何一个Petri网模型都是由如下四种基本图元组合形成的。这四种基本图元是:(1)库所(2)变迁(3)弧(4)标记图4:Petri网基本图元标示2.5.1.1库所库所使用圆圈表示。库所是英文place的中文译文,在英文中place意为空间、地点、位置,大多数中文文献中都将place翻译为库所是比较形象、合理的,本文后继部分将使用库所一词来代表place,为了文章说明的方便,也会交替使用place和库所,它们代表同样的图元。在后继的文章中,也会使用P来表示库所,使用Pi(i=1,2,3)表示在一个Petri网模型中的某个具体的库所。在Petri网中,库所因其所处的位置的不同被划分为三类,分别是:起始库所、终止库所、中间库所。起始库所,即start place,在标准Petri网模型中有且仅有一个,它表示Petri网模型的唯一入口,模型实例将从该点开始并进行流程推进。起始库所的特征是,没有指向该库所的外向弧,但可以有一个或多个从该库所指向变迁的内向弧。终止库所,即end place,在标准Petri网模型中有且仅有一个,它表示Petri网模型的唯一出口,模型实例将在该点结束流程。终止库所的特征是,没有从该库所指向变迁的内向弧,但可以有一个或多个从变迁指向该库所得外向弧。中间库所,即intermediate place,在标准Petri网模型中可以有0个或多个,它是除去起始库所和终止库所外的第三类库所,通常,中间库所起到的作用是连接变迁与变迁,中间库所根据其相对于变迁的位置的不同又可以分为输入库所和输出库所两种。当存在一条内向弧P->T时,我们称P是T的输入库所。当存在一条外向弧T->P时,我们称P是T的输出库所。2.5.1.2变迁变迁使用矩形表示。变迁是英文transition的中文译文,在英文中transition意为转换、转变,大多数中文文献中都将transition翻译为变迁是比较形象、合理的,本文后继部分将使用变迁一词来代表transition,为了文章说明的方便,也会交替使用transition和变迁,它们代表同样的图元。在后继的文章中,也会使用T来表示变迁,使用Ti(i=1,2,3)表示在一个Petri网模型中的某个具体变迁。为了后文讨论工作流引擎调度策略的方便,这里简单介绍一下变迁在模型实例中可能存在的状态。一个变迁在模型实例中可能存在三种状态,分别是:常态、就绪态和激发态。常态,或者说是未就绪态,处于该状态的变迁是指那些尚不满足被调度的条件的变迁。就绪态,就绪态的变迁是指那些已具备了被调度的条件的变迁,这里的被调度的条件是指该变迁的所有输入库所中都至少获得了一个token,这将在工作流引擎调度策略章节详细分析。激发态,激发态的变迁是指那些成为就绪态的变迁所对应的任务实体被实际执行后的变迁的状态。严格来说,激发态并不是变迁的一种静态状态,而是指处于就绪态的变迁所对应的任务被实际执行时刻的动态状态,这样来说,一个就绪态的变迁所对应的任务实体被实际执行后变迁将处于激发态,激发态只是个瞬间状态,进入激发态的变迁即刻处于常态,即进入新的等待调度条件的状态。图5说明了变迁状态的变更。常态就绪态激发态等待调度条件等待激发激发并消耗调度条件图5:变迁的运行时状态迁移图2.5.1.3弧弧使用一条有向线段表示。弧是英文arc的中文译文,弧在Petri网模型中起到的作用是连接库所和变迁,因为有弧的存在,一个Petri网的模型最终形成了一个有向图。根据弧的方向是从库所指向变迁还是从变迁指向库所,弧可以分为两类:内向弧和外向弧。内向弧是指从库所指向变迁的弧,如图。内向弧是英文inward arc的中文译文。内向弧通常使用P->T来表示,即从place指向transition的弧。外向弧是指从变迁指向库所的弧,如图。外向弧是英文outward arc的中文译文。外向弧通常使用T->P来表示,即从transition指向place的弧。这里需要说明的是,当我们说外向和内向时,我们是站在变迁即transition的角度来说明弧的方向的,因为transition在Petri网模型中是主要的元素,transition也将是工作流调度引擎进行调度的主体,这将在后继的文章中说明。2.5.1.4标记标记在Petri网模型中使用小黑点来表示,标记一词是本文对token的翻译,在大多数中文文献中都没有给出比较合适的翻译,通常选择了直接使用token一词,应该说在Petri网中token所起到的作用很难选择一个合适的中文来描述。标记不是Petri网静态模型的元素,而是Petri网模型实例运行时的存在的元素。具体来说,在Petri网模型建模期间是不存在标记的,只有当该模型被工作流执行引擎实例化并开始调度时存在的。标记始终是存在于库所中的,如果把库所理解为一种容器,那么,库所的作用就是用来装标记的。Petri网模型实例中标记在所有库所中的分布状态就反映了一个Petri网模型实例的运行状态。因此,token在Petri网中是一种运行时模型实例状态信息的载体和标记,这也是本文将token翻译为标记的直接原因。从这个角度来说,有些参考文献引用网络中的术语将Petri网中的token翻译为令牌是不恰当的,至少是不够准确的,Petri网中的token从功能上来说是一种反映模型实例运行状态的静态实体,网络中的令牌是一种处于移动中的动态实体。Petri网中的token的生存期只是在某个特定的place中从创建到消耗的过程,并不会出现token在不同的place中移动的情况。这一点在后文将由具体的解释。2.5.2 Petri网的触发器从上文所阐述的变迁运行期状态迁移中可以看出,变迁处于就绪态的时刻和变迁处于激发态的时刻是不同的。能够引起一个处于就绪态的变迁向激发态迁移的事件被称为一个“触发器”。存在四种不同类型的触发器。abcd图6:petri网中变迁的四种触发类型表示图a) 自动触发:任务一旦从常态迁移到了就绪态就马上可以被激发。这种类型的触发应用于那些不需要人来交互的而是被应用程序来执行的任务。b) 用户触发:任务由人来触发,例如,用户选择一个处于就绪态的任务来执行。在一个工作流管理系统中每个用户都有一个任务输入箱,这个输入箱所包含的就是那些已经就绪的可以被用户执行的任务实例,任务实例也称为工作项(workitem)。用户选择并完成一个工作项的操作就是相关的任务实例的触发,同时工作流实例也将进入流程的下一阶段。c) 时间触发:处于就绪态的任务由一个时钟来触发。例如,任务项在一个预定的时刻被执行。d) 消息触发:一个外部事件触发一个处于就绪态的任务实例。消息可能是电子邮件、传真、电话或EDI消息。每个这样的外部事件都对应应用任务的某个活动,这样工作流系统才能知道事件的发生。2.5.3 Petri网的路由从工作流程的起始库所到中止库所的路由形式有多种,如下:顺序路由图7:顺序路由示意图并行路由图8:并行路由示意图条件路由图9:条件路由示意图迭代路由图10:迭代路由示意图2.5.4 Petri网的发散和汇聚为了能够实现Petri网的路由方法,需要使用发散和汇聚,Petri网具有如下基本的发散和汇聚单元:与发散显式或发散隐式或发散与汇聚或汇聚图11:petri网的发散和汇聚标示与发散与发散标示的是一种并行路由,即多个任务可以并行地或以某种不确定的次序进行。用图表示为具有一个输入库所、两个或多个输出库所的变迁。这样,当该变迁被激发后将为所有的输出库所产生token。与汇聚与汇聚用图表示为一个具有两个或多个输入库所和一个输出库所的变迁。这样,变迁只有当其所有的输入库所中都拥有了可用的token后才能够从常态迁移到就绪态,既是说,输入库所前并行的流程必须全部执行完,才汇聚到当前变迁,任何一个输入库所没有可用的token,变迁都处于同步等待状态。显示或发散显示或发散是条件路由的一种具体实例,它在流程的推进中表现出来的特征是尽可能早的确定(as early as possible)。用图表示为在变迁的输出弧上附加了条件判断,即是说,当变迁被激发后,并不是为其所有输出库所产生token,而是要根据输出弧上的条件,通常条件是一种bool型的表达式,以决定是否为弧所连接的输出库所产生token。隐式或发散隐式或发散也是条件路由的一种具体实例,它在流程的推进中表现出来的特征是尽可能晚的确定(as late as possible)。用图表示为存在两条弧从同一库所出发指向不同的变迁,这样,当输入库所获得token后,哪个变迁先激发就会获得这个token。一旦某个变迁消耗了该token,那么,另外的变迁将不再具备就绪的条件了,也就无法被激发了。或汇聚或汇聚用图表示为两个不同的变迁拥有同一个输出库所,这样,这两个不同的变迁中任何一个的激发都会使得其输出库所后继的变迁的状态的迁移。3相关工作3.1工作流发展现状工作流的概念起源于生产组织和办公自动化领域,提出的目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高工作效率、降低生产成本、提高企业生产经营管理水平和企业竞争力