基于XML的项目管理工作流一体化建模研究
2018-01-03宋新爱仇小花秦栓栓
宋新爱 仇小花 秦栓栓
(西安石油大学计算机学院 陕西 西安 710065)
基于XML的项目管理工作流一体化建模研究
宋新爱 仇小花 秦栓栓
(西安石油大学计算机学院 陕西 西安 710065)
针对企业大量业务流程经常变化的特点和管理问题,提出一种基于XML的项目管理工作流模型。对工作流管理联盟制定的工作流过程定义元模型进行了改进和简化,并给出了元模型的组成元素与相关属性;基于改进的工作流元模型,使用XML对工作流过程模型进行了定义;介绍了工作流引擎的主要设计思想和DOM4J解析方法。基于过站航班运行保障流程建模实验结果表明,所提出的基于XML的工作流模型能很好地表示任务节点及其关系,并且便于数据的传输和共享。
工作流 元模型 过程 活动 XML解析
0 引 言
在传统的企业项目管理系统中,大多数采用将业务处理和业务流转规则进行绑定的方式。业务功能部件往往是被固化在系统中的,从而限制了系统的灵活性和扩展性,业务流程的变化需要进行系统修改和升级,由此而带来很大的系统维护开销。为适应市场变化的实际需求,在项目管理系统中实现支持企业对业务流程的定制和操作控制则显得尤为必要。采用工作流技术可以有效地实现企业日常业务操作中的人机交互过程和人与人之间的工作交接过程,提高企业管理的规范化程度。
1 工作流模型概述
根据工作流管理联盟的定义,工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则,文档、信息或任务能够在不同的执行者之间传递、执行[1]。根据对这个定义的理解,工作流是通过计算机软件进行定义、执行并监控的经营过程,这也是它与一般的工作流程的区别。工作流模型是对工作流的抽象表示,也是对业务过程的抽象描述,它定义了各个业务活动间的控制依赖和数据依赖,是实现业务流程管理的基础。用户可以根据实际需要定义企业工作流模型,并提供给工作流管理系统,从而实现业务过程的调整和控制。
近年来在工作流系统研究中,研究者们从不同角度、不同侧重点提出的工作流建模方法主要有:基于形式化的Petri网的工作流模型[2]、可控时间约束Petri网模型[3]、邻接模型矩阵[4],以及基于时间扩展UML活动图的工作流过程建模方法[5]等。Petri网是一个状态变迁模型,可描述系统中异步成分之间的关系,并允许同时发生多个状态变迁。邻接模型矩阵为流程模型存储提供了一种新方法。基于XML的工作流过程定义语言XPDL为基于业务流程建模符号BPMN图形的企业流程定义提供了一个标准的图形化方法,文件格式是基于工作流管理联盟提出的工作流元模型。这些工作流建模方法相对都有一定的优点,但建模的目的主要是为对业务流程进行描述和优化,而对工作流引擎的设计与系统实现缺乏连续支持。本文采用可扩展标记语言XML描述组成工作流的各种数据元素并存储业务流程,提出项目管理工作流一体化建模,实现模型中的活动、过程与引擎中的活动、过程的映射和交互,将设计完成的业务流程模型直接用于计算机仿真和执行。
2 基于XML的工作流模型
2.1 概 述
XML是一种易于使用和扩展的标记语言,它以结构化的方式描述各种类型的数据。XML文件由标记(元素)和内容组成,并以纯文本格式进行存储,提供了一种独立于软件和硬件的数据存储方法。随着XML以及其在互联网定义文档格式的日益流行,结合Java可以将业务活动的定义和顺序关系存储在XML文件中,从而实现与业务流程功能上的有效分离。XML语法与HTML相似,易于阅读和理解,并且便于编程开发基于XML工作流模型的过程执行。
2.2 元模型结构定义
任何一项业务流程通常可以分解为多个最基本的行为步骤,即“活动”。它是一个可独立执行的任务,由多个用户(角色)协作完成。一组具有不同功能的活动按照一定的顺序相连便可构成一个业务过程。工作流模型由若干可执行的业务过程、过程之间的全局共享数据,以及执行过程需要的应用和资源组成。工作流元模型是对工作流过程定义中的实体、实体的属性、实体之间的关系以及过程规则的抽象描述。工作流元模型的重点是过程定义元模型,用于对业务过程的组成元素进行定义,从而指导工作流过程建模。在实际应用中,可以对工作流管理联盟的过程定义元模型进行改进和简化,如图1所示。工作流由活动构成,对活动的执行者或参与者会分配相应角色,活动在执行过程中可以调用相关工作节点。活动之间可以是顺序连接关系,也可以是多分支并行或聚合连接关系。下面给出具体的元模型定义。
图1 改进的过程定义元模型
(1) 工作流过程(Process)
工作流过程定义构成了工作流模型的主体部分,它包含了工作流过程的自身属性以及组成工作流过程的所有活动和转移信息,主要属性如下:
• 过程标题:Name
• 过程内容:Description
• 活动列表:ActivityList
• 连接:Connectors
• 开始活动:StartActivity
• 终止活动:EndActivity
• 计划时间:PlanTime
• 实际时间:RealTime
• 制定者:Designer
• 制定时间:CreateDate
(2) 活动(Activity)
每个活动是一个独立的工作单元,它可能是最小的独立单元,也可以是由一系列更小独立单元组成的子过程。通常一个基本活动应该包含以下属性:
• 活动标识:ActivityID
• 活动内容:Description
• 参与者:Participants
• 参数:Parameter
• 处理节点:HandlerNode
• 计划时间:PlanTime
• 实际时间:RealTime
(3) 连接(Connector)
活动之间的关联和执行顺序是通过连接实现的。一个活动可以有多个输入连接,也可以有多个输出连接。在连接中包含了活动状态流转的规则,即与连接相连的前驱活动转移至后继活动应该满足的相关条件。可以将前驱活动状态和返回结果保存在连接信息中,以便为活动的转移提供参照信息。当设置转移条件为“真”时,则前驱活动执行完毕即可执行后继活动。连接的描述信息包括:
• 连接标识:ConnectorID
• 连接类型:Style
• 前驱活动:PreActivities
• 输出结果:OutputParam
• 前驱活动状态:PreStatus
• 后继活动:NextActivities
• 时间约束:TimeConstraint
• 转移条件:TransCondition
根据前驱活动与后继活动之间的执行关系,一个过程中的多个活动之间存在一对一、一对多、多对一和多对多的连接关系。为了便于控制,可以将多对多的连接关系之间增加一个中间状态,从而转化为一对多的连接关系。因此连接类型可包括五种:顺序、循环、选择、并发、合并。如果为顺序连接类型,则只要满足转移条件或者时间约束时即可推进流程转去执行后继活动;如果为循环连接类型,则在执行后继活动后根据转移条件判断是否又转去执行前驱活动;如果前驱活动有两个或两个以上的后继活动时,连接类型通常为选择或并发;如果后继活动有两个或两个以上的前驱活动时,连接类型通常为合并。
(4) 角色(Role)
角色主要描述企业经营过程中参与某个活动的人或组织单位。主要包括两个属性:
• 角色名称:RoleName
• 角色描述:Description
(5) 参与者(Participant)
参与者指实际完成某个活动的人或设备,参与者要被定义为一个或多个角色。参与者包含以下主要属性:
• 标识:ParticipantID
• 名称:Name
• 角色名称:RoleName
(6) 工作节点(API_Node)
工作节点指与工作流活动处理相关的应用程序接口,主要属性包括:
• 应用程序名称:AppName
• 功能描述:Description
• 路径:AppPath
• 运行参数:Paramters
• 输出:Output
2.3 基于XML的工作流过程建模
工作流过程定义是业务过程的一种形式化描述,是工作流模型的主体构成部分。可以将组成工作流过程的各个部分作为XML文档的元素或属性进行描述。在XML文档中,XML元素是可扩展的,在XML元素的开始标签中可以包含属性,而属性用来提供不属于数据组成部分的信息。通常我们将数据本身作为元素来存储,而将元数据存储为属性。依据这个原则,根据改进的工作流元模型,相应的工作流过程的完整定义格式如下:
xml version=“1.0” encoding=“utf-8” ?>
……
……
……
……
在工作流过程模型定义中,活动是核心元素。
3 工作流引擎设计思想
工作流引擎是工作流管理系统的核心部分,负责工作流过程实例的创建、解释和执行。需要接受外部用户的请求事件并执行相应动作,从而驱动和控制流程在各业务节点的流转。对于有严格时间限制的活动,需要设置活动的启动时间和结束时间,因此可以采用时间触发机制和事件触发机制相结合的方式控制工作流的执行。工作流引擎的核心是过程管理器、活动管理器和连接管理器。当项目管理实例被启动,也就触发了工作流引擎开始工作。
基于上述改进的工作流过程模型,工作流引擎的主要设计思想为:
(1) 工作流引擎首先读取业务过程XML文档中过程定义实例信息,根据当前用户角色创建过程实例,其所有活动状态为未完成态“Undo”。
(2) 根据XML文档中的连接元素信息生成一张活动连接表,其中包括过程中的所有连接的前驱活动、后继活动、连接类型和时间约束等,从而根据活动连接表实现过程的监控和运行。
(3) 启动事件监听器侦听用户操作。
(4) 当活动执行完毕,修改活动状态为完成态“Done”,并且判断当前活动是否为终止活动。
(5) 如果不是,则将其作为前驱活动在活动连接表中查找其相应的所有后继活动,其返回结果传递给
(6) 如果当前活动为终止活动,则意味着整个过程执行结束。
4 过站航班运行保障流程建模
民航业是我国经济社会发展的重要战略产业, 机场规模日益扩大,对日常业务工作效率的要求越来越高。A-CDM(机场协同决策系统)模型在我国机场的开发和应用将有助于我国民航业的快速健康发展。航班地面服务是机场高效的重要环节,在航班过站工作过程中,有多个关键节点,如开/关舱门、上/下客、装/卸货、加油等。如图2所示是一个过站航班运行保障典型流程,各个航班保障服务节点之间存在一定的时间约束关系,例如只有机舱保洁和加油服务完成后才能开始上客。整个流程的运行需要多个部门参与协调,航班接受各种保障车辆的服务具有严格的流程性,任何一方的工作情况变化会影响到其他参与方的工作进展。
图2 过站航班工作流程
在过站航班管理子系统中,由系统高级管理人员将航班保障进程分解成可跟踪的若干个任务节点,设置任务节点的属性(如任务名称、开始时间、执行人员等),以及任务节点之间的工作关系等,继而生成工作流程的关键事件模型和过程定义。如图3所示为航班从落地到起飞的部分工作流,流程中的任务节点首先由管理员进行定义,然后依据时间标尺将节点拖放到相应的位置,再添加节点之间的关系。当添加任务节点后,可以在相应的属性框中编辑节点的属性(如图3中的上客节点属性),节点间的连接关系也可同样进行定义和修改。制作航班流程时,任务节点的定义以及航班工作流的绘制使用webflow.js框架+HTML5实现[6]。Webflow.js支持在web界面上绘制流程图,同时可以将绘制的流程图保存为XML文档格式。
图3 过站航班工作流定义
一个完整的过程模型数据按照2.3节中的格式存储在XML文档中。以下是ground_passenger.xml文件中对“上客”节点的一次模拟活动定义,在旅客登机过程中需要记录本次航班号(FFID)、登机口(BGate),开始登机时间(RSBT)和结束登机时间(REBT),并对异常情况进行处理。
当该工作流程启动后,工作流引擎读取流程数据,应用节点协同调用算法[7],触发预置的各种处理流程,及时将关键事件通知相关环节。各参与方需要及时地维护自己负责的节点的里程碑时间,更新XML文档数据。
5 XML解析
随着XML的广泛应用,解析技术成为XML应用的关键。当处理较小的XML数据流时可以解析后直接在内存进行处理。而当处理的XML信息以GB为单位时,可以将解析出来的数据存储在数据库中,继而使用SQL进行后台的查询处理。由于关系数据库中存储的是结构化的数据,而XML数据是半结构化的,所以要实现存储需要进行模式映射[8],而各大数据库厂商都对XML的动态应用提供了技术支持[9]。目前主流的XML解析接口主要有:DOM、SAX、JDOM和DOM4J,它们以不同方式提供了对XML文档的存取和处理功能。目前许多开源项目中大量采用DOM4J,它采用了Java集合框架并完全支持DOM、SAX和JAXP[10],具有很好的性能。DOM4J解析步骤如下:
(1) 导入解析过程需要使用的DOM4J包中的类;
(2) 使用SAXReadr类创建解析器Reader;
(3) 通过Reader的read方法获取文档对象Doc;
(4) 使用Doc的getRootElement方法获取XML文档中的根节点Root;
(5) 通过ElementIterator类对XML节点进行遍历。
读取ground_passenger.xml文件的实现代码如下:
public void ReadData() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(″ground_passenger.xml″));
Element root = document.getRootElement();
GetNodes(root);
}
//遍历当前节点下的所有节点
public void GetNodes(Element node) {
NodeValue[count][0] = node.getName();
List
for (Attribute attribute : list) {
NodeValue[count][1] += attribute.getValue() + ″,″;
}
if (!(node.getTextTrim().equals(""))) {
NodeValue[count][1] = node.getText();
}
count++
//使用递归迭代当前节点下面的所有子节点
Iterator
while (iterator.hasNext()) {
Element e = iterator.next();
GetNodes(e);
}
}
6 结 语
企业从自身需求和特点出发,建立合理的项目管理工作流系统,一方面可以规范企业的业务流程,另一方面可以通过对项目实施的主要阶段进行管理和控制,对整个企业的成本管理和经济效益起到重要作用。XML能够描述组成工作流模型中的任意元素、属性及其关系,文档具有很好的可读性和可扩展性。本文运用改进的工作流元模型,对基于XML的工作流过程模型的设计与实现进行了一体化研究,相对文献[11-12]等已有研究,给出了工作流过程模型的具体描述和定义,说明了工作流引擎主要设计思想和DOM4J解析技术。并以过站航班工作流程为例,说明基于XML的工作流过程模型设计,可以更好地实现企业项目工作流管理系统。
[1] 范玉顺,罗海滨,林慧,等.工作流管理技术基础[M].北京:清华大学出版社,2001.
[2] 肖作斌,孙鹏,张智慧,等.基于Petri网的工作流过程建模和时间性能分析[J].电子科技,2015,28(10):44-48.
[3] 黄冬梅,许琼琼,贺琪,等.基于TC-Net的工作流模型研究[J].计算机工程与应用,2016,52(15):260-265.
[4] 余兴华,仲梁维.一种改进的流程图相似度检索算法及实现[J].计算机应用研究,2015,32(11):3300-3303,3308.
[5] 蔡敏,卢佩.基于时间扩展UML活动图的工作流过程建模方法[J].计算机集成制造系统,2014,20(7):1758-1767.
[6] 余飞.基于HTML5的图形图像协同处理技术研究与实现[D].长江大学,2015.
[7] 冯霞,任子云.基于遗传算法的加油车和摆渡车协同调度研究[J].交通运输系统工程与信息,2016,16(2):155-163.
[8] 李占波,李娜.XML数据在关系数据库中的存储[J].微计算机信息,2007,23(27):192-194.
[9] 张振莲,李金莱.XML数据与关系数据库的转换及实现[J].南阳师范学院学报,2009,8(12):77-80.
[10] 陈飞飞.基于DOM4J的XML文档解析技术研究与应用[J].软件导刊,2016,15(3):36-37.
[11] 陈海燕,刘珍,刘建勋.基于XML的工作流模型表示及映射算法研究[J].计算机工作与科学,2010,32(7):147-150.
[12] 邹冰,张旭,伊晓强,等.一种基于XML的工作流过程模型的设计与和实现[J].计算机科学,2002,29(10):101-103.
RESEARCHONINTEGRATIONOFWORKFLOWMODELINGOFPROJECTMANAGEMENTBASEDONXML
Song Xin’ai Qiu Xiaohua Qin Shuanshuan
(SchoolofComputerScience,Xi’anShiyouUniversity,Xi’an710065,Shaanxi,China)
According to the characteristics of a large enterprise business processes constantly change and management problems, a project management workflow model based on XML is proposed. The workflow process definition meta model made by the workflow management coalition was improved and simplified firstly, and the elements and related attributes were given. Then based on the improved workflow process meta model, the workflow process model was defined in XML. Finally, the main design idea of the workflow engine and the DOM4J parse step were introduced. Based on the experimental result of the over station flight operation support process modeling, it is show that the workflow model based on XML can well represent the task nodes and their relationships, and is convenient for data transmission and sharing.
Workflow Meta model Process Activity XML parse
2017-01-16。陕西省工业科技攻关计划项目(2016GY132,2015GY026)。宋新爱,副教授,主研领域:管理信息系统与计算机网络。仇小花,硕士生。秦栓栓,硕士生。
TP3
A
10.3969/j.issn.1000-386x.2017.12.054