2003-05-12 11:21
基于Web的工作流管理系统的设计与实现
崔永圣
摘要:Internet/Intranet应用的普及和Web技术的发展,为Web工作流管理系统的实现提供了一个理想的平台,而基于Web的工作流管理服务为异地办公及跨企业的合作提供了良好的基础,采用Web技术已成为新一代工作流管理系统的主要特征。本文研究开发的工作流管理系统原型将Web技术
与XML相结合,给出了基于xml的过程定义语言与工作流执行机的设计与实现方法。
关键词:工作流、工作流管理系统、XML,集成、工作流执行机
Abstract:The rapid growth of
Internet/Intranet usage and development of Web technologies,provides a ideal
platform to construct a Web_based workflow management.And the Web_based
workflow management service provides condition for distributed working and
inter-enterprise corporatin ,and it has become the characteristic of the
next-generation workflow management.The WFMS prototype which this paper
researched on combines the Web technologies and XML ,and provides a method of
designing and implementing xml_based process definition language and workflow
engine.
keywords:Workflow ,workflow management systems
,XML,Integration、Workflow Engine
1、引言
工作流的概念起源于生产制造业与办公自动化领域。工作流是一类能够完全或部分自动执行的经营过程,根据一系列过程规则,文档、信息或任务在不同的执行者之间传递、执行。工作流的目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务并对它们进行监控,达到提高办事效率、降低生产成本,提高企业生产经营管理水平和企业竞争力,实现现代企业经营过程重组(BRP)、经营过程自动化。
根据工作流系统所采用的任务项传递机制的不同,工作流管理系统主要有三种方式:(1)、基于文件的工作流管理系统——以共享文件的方式来完成任务。这种类型的产品是产生最早、发展最成熟、最具多样性的,通常包含有Client/Server模式的图像、文档与数据库管理系统。(2)、基于消息的工作流管理系统——通过用户的电子邮件系统来传递文档信息。这种产品都实现了一种或多种电子邮件系统的集成。(3)基于Web的工作流管理系统——随着计算机网络技术的发展和Internet应用的不断普及,Web技术因其界面的一致、简单及与平台的无关性,在其出现之后就得了迅速发展。同时Internet的发展及企业Intranet的建构为人们提供一个理想的协同工作环境,同时也使基于Web的工作流管理系统成为可能。
Web应用程序开放、跨平台的特性使基于Web的工作管理系统已经成为一种必然的发展趋势。但目前因为不同的研究者、厂商使用不同的工作流的描述方法,这样就造成了不同的工作流产品之间不能进行互操作,因而在很大程度上阻碍了工作流技术的推广与应用。
为了使工作流管理系统具有的良好的互操作性,本文研究开发了一个基于Web的工作流管理系统,其中工作流过程定义采用了基于XML的过程定义语言。XML是用来描述文档的组织结构,XML具有简单、自定义的优点,可以实现不同产商之间的工作流产品之间的互操作性,实现异构信息的集成。
本文首先介绍了当前工作流管理系统的一些相关概念,分析了在本系统中的一些关键技术,包括系统的体系结构,工作流模型中的主要实体的XML描述及工作流执行机的设计与实现等。
2、工作流管理系统的介绍
基于Web的工作流管理技术是实现企业协同工作环境的一个良好方法,它能方便的与企业内原有的应用、信息集成。
为了实现对业务过程的工作流管理,需要相应的软件系统的支撑。此种软件系统为工作流管理系统(Workflow
Management System,WfMS)。根据WfMC
的定义,工作流管理系统是“一种在工作流形式化表示的驱动下,通过软件的执行而完成工作流定义、管理及执行的系统”,其主要目标是对业务过程中各活动发生的发后次序及同活动相关的相应人力或信息资源的调用,进行管理而实现业务过程的自动化。工作流的过程定义是指对业务过程的形式化表示,它定义了过程运行中的活动和所涉及到的各种信息。这些信息包括过程的开始和完成条件、构成过程的活动以及进行活动间导航的规则、用户所需要完成的任务、可能被调用的应用、工作流机的引用关系以及与工作流数据的定义。其中活动指的是工作流中的一个逻辑步骤;工作流实例指的是工作流的一次执行过程;工作流机是一个为工作流实例的执行提供运行服务环境的软件或“引擎”,它是工作流执行服务的核心,负责对解释过程定义、控制过程实例的执行、控制工作流中各个活动的执行顺序、并完成与其它工作流机的交互与通讯。
1994年11月,工作流管理联盟发布了工作流管理系统的参考模型(见图1),该模型定义了一个基本的工作流管理系统所需要的6个基本模块,并制定了各模块之间的接口标准。其基本的模块功能如下:
1)
过程定义工具:为用户提供一种对实际业务过程进行分析、建模的手段,并生成业务过程的可被计算机处理的形式化描述。
2)
工作流执行服务:它借助于一个或多个工作流机,激活并解释过程定义的全部或部分,并同外部的应用程序进行交互,完成工作流过程实例的创建、执行与管理,为工作流程的运行提供一个运行时环境。
3)
其他工作流执行服务:在大型的WfMS中,工作流可能需要多个工作流机共同完成,甚至需要其他异质的工作流执行服务来辅助来完成,这涉及到WfMS系统之间的互联。
4)
客户应用程序:它给用户提供一种手段,以处理过程实例运行过程中需要人工干预的任务。每一个这样的任务就被称为一个工作项。WfMS为每一个用户维护一个工作项列表,它表示当前需要该用户处理的所有任务。
5)
被调应用程序:指工作流执行服务在过程实例的运行过程中,调用的、用以对应用数据进行处理的程序。在过程定义中包含这种应用程序的详细信息,如类型、地址等。
6)
管理及监控工具:其功能是对WfMS中过程实例的状态进行监控与管理,如用户管理、角色管理、审计管理、资源控制等。
3、基于Web的工作流管理系统的总体结构
体系结构的设计主要遵循如下3条原则:
(1)、基于Internet/Intranet分布式计算环境,面向跨部门、跨企业的分布式工作流管理。
(2)、集成已有的各种信息资源,如电子邮件、文档管理、图形浏览、资源管理等,充分发挥这些资源的综合潜力。
(3)、与工作流管理联盟参考模型保持一致,其中过程定义语言采用XML-WPDL(基于XML的过程定义语言),以利于实现不同企业的WfMS系统的互操作。
按照上述原则所设计的Web_WfMS的体系结构如图2所示:
整个系统的工作方式如下:
(1)、工作流应用建模人员通过Web浏览器将过程及表单定义工具从Web服务器上下载下来,完成应用系统的建模,即实际工作流程的定义。建模结果以XML-WPDL文档保存在服务器中,并可反复修改。
(2)、客户端用户通过浏览器登录到Web服务器,此时可以启动新的流程、处理其工作项等。每个工作项都与一个表单对应。在表单中以各种不同的方式表示需要处理的数据。用户可以通过客户端所提供的各种工具(如CAD系统、CAPP系统、字处理系统)对这些数据进行处理。在此过程中可以与数据库系统进行交互,如查询数据库中信息,或将某些应用数据保存到数据库中等。处理完成之后可将其提交,然后工作流执行机将根据表单中数据生成下一个工作项,并通知相应的用户进行处理,如此直至整个流程的完成。
(3)、管理人员使用工作流管理监控工具对工作流的运行实例、活动实例的状态情况进行监控和管理,如挂起、重启动、终止某个过程实例。
4、基于Web的工作流管理系统的设计原理与实现机制
基于Web_WfMS的总体设计,将从工作流模型、工作流执行机、安全权限控制等3个方面讨论本系统的实现机制。
4.1 工作流模型
工作流模型是整个工作流系统设计的基础,也是过程定义人员进行系统二次开发的基础,模型描述能力的强弱决定了系统所支持应用范围以及系统的灵活度。在工作流模型方面,工作流管理联盟定义的过程元模型定义了6个基本实体:过程定义、活动、转换条件、工作流相关数据、角色、需要激活的应用程序。
各种不同的建模工具仅是对工作流模型的一种形式化的描述,为了实现不同的WfMS的过程定义能相互交互,在本系统中采用了其于XML的过程定义语言对过程建模进行描述(如图3)。
下面将分别介绍XML_WPDL的过程定义、活动和转换条件三种实体的描述。
① 过程定义
<!--Workflow Process Definition-->
<xsd:complexType name="WorkflowProcess">
<xsd:sequence>
<xsd:element name="processHeader"
type="ProcessHeader"/>
<xsd:element
name="Parameter" type="xsd:DataType" minOccurs="0"/>
<xsd:element name="participant" type="Participant"
maxOccurs="unbounded"/>
<xsd:element name="activity"
type="WorkflowActivity" maxOccurs="unbounded"/>
<xsd:element name="application" type="Application"
maxOccurs="unbounded"/>
<xsd:element
name="transition" type="Transition"
maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id"
type="xsd:ID"/>
<xsd:attribute name="name"
type="xsd:NMTOKEN"/>
</xsd:complexType>
<!--Workflow Activity Type
Definition-->
<xsd:complexType name="Workflow
Activity">
<xsd:sqeuence>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="limit" type="xsd:string"/>
<xsd:choice>
<xsd:element name="route"
type="Route"/>
<xsd:group
ref="implementation"/>
</xsd:choice>
</xsd:sequence>
<!--below is workflow activity’s
attributes-->
<xsd:attribute name="id"
type="xsd:string"/>
<xsd:attribute name="name"
type="xsd:string"/>
</xsd:complexType>
<!--Workflow Transition Condition Type
Definition-->
<xsd:element
name="Transition">
<xsd:complex
Type>
<xsd:sequence>
<xsd:element ref="xsdl:Condition" minOccurs="0"/>
<xsd:element ref="xsdl:Description" minOccurs="0"/>
</xsd:sequence>
<!--below is workflow Transition
Condition attributes-->
<xsd:attribute name="ID"
type="xsd:NMTOKEN" use="required"/>
<xsd:attribute
name="Form" type="xsd:NMTOKEN" use="required"/>
<xsd:attribute name="To" type="xsd:NMTOKEN"
use="required"/>
<xsd:attribute name="Name"
type="xsd:string"/>
</xsd:complexType>
</xsd:element>
4.2 工作流机的实现与异常处理机制
4.2.1
工作流机的实现
工作流执行服务是工作流管理系统的核心。工作流执行服务由一个或多个工作流机组成。工作流机实际上是企业经营过程的任务调度器,在某种程序上还是企业资源的分配器。在采用工作流管理系统支持经营过程运行的企业中,工作流机可以看成是企业的业务操作系统(BOS)。工作流机的主要功能是:解释过程定义、负责调试流程的运行、即创建和管理过程实例运行、调度活动的运行并创建要处理的工作项、维护工作流控制数据和相关数据、维护用户的工作列表。工作流执行机的结构如图4所示:
图4 工作流执行服务的结构图
其具体的执行过程:工作流机接受从外部接口发送过来有关过程控制的请求(如过程初始化、获取活动以及结束活动等),然后根据不同的请求类型调用相应的处理模块完成与本次请求相关的操作并将结果返回。事实上可以将工作流机看成一个多线程的并发服务器,它可以对多个外部请求提供并发服务。对外部请求的处理过程中肯定会涉及到对工作流相关数据的读写和更改操作,同时工作流机还维护着工作流的控制数据,通过工作流控制数据来辨别每个过程或活动实例的状态,并推动着工作流过程的执行。
过程、活动、工作项构成了工作流机的主要逻辑。在我们的系统中采用了对象的封装和继承的方法,把它包装为普通的C#类。三个类的定义如下:
(1)、public class WEProInstanceManager
{} file://工作流执行机的过程实例的管理类
(2)、public class WEActInstanceManager {}
file://工作流执行机的活动实例的管理类
(3)、public class WEWorkItemManager
{} file://工作流工作列表管理类
4.2.2
工作流机的异常处理
工作流的错误包含两种错误,一是流程错误,如活动的执行者不存在,活动的应用程序定义错误等;另一类是系统的错误,如:网络不通,数据库系统异常。对于工作流执行机来说,前类异常是属于无法处理的错误,只能进行错误的通知;后者是执行机可以处理的错误,如数据库异常或连接临时中断等等,执行机可以进行容错处理,例如:在数据库恢复后自动重新建立连接。执行机对可能出现的错误进行编码,并附有对应的描述信息。
在我们的系统中采用了C#的异常处理思想(在C#的编程思想中,系统的错误是通过捕获异常来实现的),抛出的异常通过异常类WEException来描述。WEException类继承了C#的异常处理类Exception。并覆盖了Exception类的属性Message(){get{}},其中WEException类中保存了可识别的异常对照表。在C#的异常处理中,在出错的地方将异常抛出,不进行处理。异常被抛到更高的层次,直到某个层次能够进行这种异常的处理。
4.3、工作流管理系统的安全权限控制
工作流管理系统对安全性要求较高,为了达到要求,必须做到充分的安全控制。在我们的系统中,共设置了5层安全控制级别。
1)、用户鉴定:用户登陆系统,需要用户输入用户名和密码,以便确认和登记。
2)、服务器访问控制:保证只有授权用户,才可登陆指定的服务器。
3)、数据库访问控制:对数据库的访问进行控制
4)、文档访问控制:对数据库中的文档进行权限控制。
5)、文档中的域访问控制:对文档中的部分内容进行控制。
通过以上五层安全控制再加上一些安全机制如:系统级权限控制、电子签名和加密等,使得整个安全机制达到了系统对安全的需要。
5、结束语:
以Web作为工作流管理系统的底层通讯支持使系统具有开放、一致和方便使用的特点,使企业中处于孤岛的信息能相互集成。本系统采用的基于XML的过程定义语言的工作流管理系统,不仅适应分布办公,更以系统开放的环境为实现跨部门、跨企业的供应链的不同工作流互操作打下了基础,使客户、供应商、或合作者都可以方便的参与企业的工作流,提高工作效率。
参考文献
[1]WfMC,"The Workflow Reference Model".(WfMC-TC00-1003),Technical
Report,Workflow Management Coalition,Hamnshire.1995.
[2]史美林、杨光信、向勇等。WFMS:工作流管理系统[J]。计算机学报,1999(3):326~328。
[3]范玉顺。工作流管理技术基础—实现企业经营过程重组与经营过程自动化的核心技术[M].北京:清华大学出版社,2001。
[4]Mohan C.Recent Trendsin Workflow Management Products,Standards, and
Research
.URL:http://www.almaden.ibm.com/cs/exotica/wfnat097.ps
[5]、Workflow Management Coalition.Interface 1:process definition interchange and
process model[EB/OL].WFMC-TC-1016-P, http://www.wfmc.org,1999-10