工作流引擎在工程项目管理系统中的应用与研究

2016-06-13 06:44韦瀛寰广西软件评测中心南宁530022
山东工业技术 2016年12期
关键词:应用与研究

韦瀛寰(广西软件评测中心,南宁 530022)



工作流引擎在工程项目管理系统中的应用与研究

韦瀛寰
(广西软件评测中心,南宁 530022)

摘 要:文章对工程项目管理系统的特点及设计要求进行分析,对工作流引擎应用于该类系统的必要性进行简述。阐述了工作流管理系统结构及工作流引擎组成,着重介绍工作流组件、工作流表、工作流实例表、工作流相关类等关键要素的设计,并以一个典型流程模型为例,给出工作流模型定义数据库的一个实现过程。对以工作流引擎为核心的工程项目管理系统功能模块进行设计划分。

关键词:项目管理系统;工作流引擎;应用与研究

1 工程项目管理系统特点

工程项目管理系统中,项目管理通常为每个项目分为"项目销售管理、招投标管理、合同与技术管理、施工准备管理、施工过程管理、竣工验收管理、竣后服务管理"这七个业务阶段[1],每业务阶段均有可能需要交叉引用之前的数据,其中各个业务阶段均涉及众多的参与人员及角色,并且还需要考虑系统作为开放式平台,为多个工程公司提供系统功能服务。在日常的工程项目管理中,各个业务阶段的大部份环节属于流程类工作,比如开工审批、采购审批等。一般过程是由基层业务人员发起申请,部门主管接受申请,审查后提交上一级领导,最终由某级主管审查通过后再返回给基层业务人员。

传统工程项目管理系统是基于事务管理及MIS的方式设计,该方式未将应用软件与业务流程相分离,只是把业务流程混合事务管理编写到工程项目管理系统中,由此造成的弊端是当组织机构或业务流程发生变化时,整个系统可能需要重新设计,或者需要对系统编码进行大幅修改,修改难度大、软件维护周期长。所以若仍使用事务管理及MIS的设计方式,已经不能支撑当前项目管理内在的协作性、高效性、实用性等要求。

为此,必须采用业务驱动及流程管控的模式来提高工程项目管理系统效能,使用工作流技术可以很好地实现该目的。在基于工作流技术的工程项目管理系统中,设计时将流程的生成、流转逻辑、执行、监控、管理等工作实现代码从具体业务中剥离独立出来,形成专门的“工作流引擎”,设计人员在设计业务流程时仅需要关注业务流程本身的业务逻辑,完成业务逻辑设计后再调用工作流引擎实现业务具体流转。当项目所在公司的组织机构、人员角色或业务流程发生变化时,仅需要修改业务逻辑后再绑定工作流引擎即可完成业务流程的维护,大大降低维护难度及维护周期。

图1

2 工作流管理系统

2.1 引言

工作流管理系统(Workflow Management System, WFMS)是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行。

通常,工作流管理系统是指运行在一个或多个工作流引擎上用于定义、实现和管理工作流运行的一套软件系统,它与工作流执行者(人、应用)交互,推进工作流实例的执行,并监控工作流的运行状态。工作注引擎负责处理工作流管理系统的逻辑与流程控制。因此,工作流引擎是工作流管理系统的核心部分[2]。

一般而言,工作流引擎有如下三个阶段:

(1)建立阶段:主要考虑工作流过程和相关活动的定义和建模功能。

(2)运行阶段:在一定的运行环境下,执行工作流过程,并完成每个过程中活动的排序和调度功能。

(3)人机交互阶段:实现各种活动执行过程中用户与应用工具之间的交互[3]。

2.2 工作流引擎的体系结构

如图1所示,工作流引擎系统可分为以下三个部分:

(1)数据库:用于持久化保存用户数据,工作流数据等。

(2)Web服务器:分为两部分,第一部分视图模块用于向用户提供交互的接口,第二部分控制模块用于向工作流引擎传递用户的动作与数据。

(3)工作流引擎:作为整个工作流系统的核心部分,其分为以下几个部分:

1)数据库接口:负责与数据库交互,向数据库中读写数据;

2)用户管理模块:负责管理用户的个人信息等数据,以及处理用户的登录及注册等动作;

3)组管理模块:负责管理用户组,以及组成员的管理;

4)工作流管理与控制模块:负责管理工作流,及控制其执行等操作;

5)组件及业务逻辑模块:工作流由组件构成,组件及业务逻辑模块负责管理组件及其业务逻辑。

2.3 系统的设计原则

为了保证系统的正确性和高效性,系统遵循以下设计原则:

(1)用户必须先创建好工作流并提交后,才能对其组件的属性进行设置修改。

(2)每个组件都有一个唯一的编号,此编号由前端生成,在任何地方均一致。

(3)在所有的组件中,只有choose组件能够回退到工作流已执行过的结点。

3 工作流引擎关键要素设计

3.1 工作流组件

工作流中共有8种重要的组件:开始、结束、任务、子模块、和汇聚、或汇聚、选择触发、并行触发。

(1)开始组件(start):表示一个工作流程的开始,在(系统或者人为)激活后,直接引起下一个工作的开始。

(2)结束组件(end):表示一个工作流程的结束。通知项目负责人或者相关人员项目已经到达了完成状态。

(3)任务组件(task):用于定义工作流的单个工作项。任务组件对应单个输入和单个输出。

(4)子模块组件(submodule):用于定义工作流中的某个子过程,该子过程同样可以看作是一个完整的工作流。子过程模块的输入将作为子过程中工作流的“起始”组件的输入,子过程的输出即其中的工作流的“结束”组件所传递的消息。

(5)和汇聚组件(and):和汇聚组件允许多个消息来源的同时输入,并在处理了多个消息来源后,来决策后续任务的执行与否。“和汇聚”组件只有在所有输入的消息完全到达之后才能启动后续步骤的执行。

(6)或汇聚组件(or):该组件接受多个消息来源的同时输入。当其中有一个消息到达的时候即可启动后续任务。通常情况下,启动后续任务之前,该模块要主动停止其他没有汇聚的任务。

(7)选择触发组件(choose):接受一个消息来源,并产生多个潜在的后继消息走向。选择触发有多个消息输出路径,其通常只能选择后继路径中的一条路径。

(8)并行触发组件(parallel):该组件一旦触发,则可以同时开启多个后续路径同时执行操作。可同时开启的路径数目没有限制,潜在的限制是系统运行时的承载能力和数据库中相关字段的定义。

3.2 核心数据库表设计

表1 工作流表(WorkFlow_Table)

表2 工作流实例表(Entity_Table)

图2

表3 运行实例表(Entity_Table)

图3

在工作流引擎中最重要的数据表为工作流表(WorkFlow_ Table),见表1及工作流实例表(Entity_Table)见表2,分别设计如下。

3.3 工作流运行实例样例

以图2所示典型流程模型,其工作流模型定义数据库的一个实现样例如表3:运行实例表Entity_Table(仅列出部份重要字段)

3.4 工作流相关类的设计

根据工程项目管理需求和数据库表的结构,在系统中需要创建以下工作流引擎重要类。

3.4.1 组件类

组件类用来描述组件在内存中的实例(对象),与数据库中的Entity_Table相对应,它的每一个实例都对应着Entity_Table中的一行。采用继承的方式对组件类进行设计,所有组件及其继承关系如图3所示。

工作流中共有8种重要的组件:开始、结束、任务、子模块、和汇聚、或汇聚、选择触发、并行触发。其中子模块组件是一个特殊的组件,是为强化工作流的逻辑视觉效果而添加的功能组件,因此在工作流引擎可不进行设计。为其它的7种组件设计了一个共同的基类BaseComponent。

(1)基类BaseComponent其成员变量与成员函数定义如下:

组件ID:组件的唯一标识符。

组件名称:组件的名称。

组件描述:对该组件的简单描述。

触发方式:组件开始的触发方式(默认为自动开始)。

前驱后继:记录组件的前驱结点与后继结点,用来描述工作流中的“箭头”。

完成状态:此组件所对应的实例的执行状态,包含以下四种状态:不满足开始条件,满足条件等待开始、正在运行、已完成。

Start():若组件的开始条件已满足,则调用此函数将其状态改成正在运行。

Over():若组件已执行完成,则调用此函数将其状态改成已完成,同时触发其后继结点(若后继结点是自动触发,则调用其Start函数,若为手动触发,则将其状态修改为满足条件等待开始)。

(2)终端组件类

终端组件类TermComponent 是BaseComponent类的派生类,它派生了StartComponent 和EndComponent两个子类。TermComponent类采用自动开始的触发方式,没有任何的成员变量和成员函数。StartComponent类中有一个开始时间变量,用来记录此组件(即整个工作流)的开始执行时间;EndComponent类中有一个结束时间变量,用来记录此组件(即整个工作流)的完成时间。

(3)逻辑组件类

逻辑组件类LogicComponent是BaseComponent类的派生类,它派生了AndComponent、OrComponent和ParrelComponent三个子类。LogicComponent类及其子类的实例表示的是工作流中的逻辑关系,因此采用自动开始的触发方式,没有任何的成员变量和成员函数。

(4)操作组件类

操作组件类OperComponent是BaseComponent类的派生类,它派生了ChooseComponent和TaskComponent两个子类。OperComponent类采用自动/手动开始的触发方式。

3.4.2 工作流类

工作流类用来描述工作流在内存中的表现形式,与数据库中的WorkFlow_Table相对应,它的每一个实例都对应着WorkFlow_Table中的一行。工作流类的结构图和成员变量的定义如图4所示。

图4

工作流ID:工作流的唯一标识

工作流名称:工作流名称

创建时间:工作流的创建时间

创建用户:工作流的创建用户

描述:工作流的简单描述

是否开始运行:工作流是否已经开始执行

组件结点数组:工作流里面包含的所有组

件结点组成的数组

4 工程项目管理系统功能模块设计

功能模块划分见图5

(1)前端页面:前台创建、修改、显示工作流页面利用图形化交互界面,通过拖拽方式,实现创建工作流和修改与项目相关的工作流。通过填写表单和提交表单,执行某个工作流。组管理页面对组进行创建和删除,并对组内的组成员用户进行添加、删除管理。

(2)后台服务:组件及其业务逻辑模块为后台服务实现组件操作及其业务逻辑。工作流的调度与控制模块为后台服务实现工作流的调度与控制功能。工作流及其校验模块主要功能是当用户提交一个工作流的时候,后台服务对其进行校验,判断其正确性。

5 结语

在工程项目管理系统设计中通过引入工作流引擎技术,实现项目管理系统的具体业务与工作流相分离,系统运行时通过业务与工作流程分别独立设计,然后通过调用的方式来启动工作流,提高了管理效率及可用性。此外,在工程项目管理系统中使用工作流引擎,提高了系统的适应性、可维护性,能降低整个工程项目管理系统在生命周期内的运行、维护成本。

图5

参考文献:

[1]苗蒲,赵霁.针织企业管理信息系统的设计及其优化研究[J].企业技术开发,2008,27(10):12-14.

[2]韩雪菲.工作流驱动的第三方物流系统设计与实现[D]. 哈尔滨:哈尔滨工程大学,2012:14.

[3] 赵文,袁崇义,张世琨,王立福.一种模型驱动的工作流过程定义途径[J]. 计算机科学,2006,33(12):10-15.

DOI:10.16640/j.cnki.37-1222/t.2016.12.085

作者简介:韦瀛寰(1971-),男,工程师,研究方向:软件项目管理、工作流。

猜你喜欢
应用与研究
计算机网络专业中澳合作办学模式应用与研究
浅谈建筑工程施工绿色施工技术应用
健美操在郑州市小学体育课堂中的应用与研究
水泥混凝土桥面沥青混凝土铺装的综合技术研究
中国传统艺术元素在礼品包装上的应用研究
中国传统艺术在当代设计领域的运用
广场舞在高校体育教学中的应用研究
废旧材料在中等职业院校体育游戏中的应用与研究