工作流引擎在工程项目管理系统中的应用与研究.docx
- 文档编号:18623755
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:7
- 大小:18.96KB
工作流引擎在工程项目管理系统中的应用与研究.docx
《工作流引擎在工程项目管理系统中的应用与研究.docx》由会员分享,可在线阅读,更多相关《工作流引擎在工程项目管理系统中的应用与研究.docx(7页珍藏版)》请在冰点文库上搜索。
工作流引擎在工程项目管理系统中的应用与研究
工作流引擎在工程项目管理系统中的应用与研究
摘要:
文章对工程项目管理系统的特点及设计要求进行分析,对工作流引擎应用于该类系统的必要性进行简述。
阐述了工作流管理系统结构及工作流引擎组成,着重介绍工作流组件、工作流表、工作流实例表、工作流相关类等关键要素的设计,并以一个典型流程模型为例,给出工作流模型定义数据库的一个实现过程。
对以工作流引擎为核心的工程项目管理系统功能模块进行设计划分。
关键词:
项目管理系统;工作流引擎;应用与研究
DOI:
10.16640/ki.37-1222/t.2016.12.085
1工程项目管理系统特点
工程项目管理系统中,项目管理通常为每个项目分为"项目销售管理、招投标管理、合同与技术管理、施工准备管理、施工过程管理、竣工验收管理、竣后服务管理"这七个业务阶段[1],每业务阶段均有可能需要交叉引用之前的数据,其中各个业务阶段均涉及众多的参与人员及角色,并且还需要考虑系统作为开放式平台,为多个工程公司提供系统功能服务。
在日常的工程项目管理中,各个业务阶段的大部份环节属于流程类工作,比如开工审批、采购审批等。
一般过程是由基层业务人员发起申请,部门主管接受申请,审查后提交上一级领导,最终由某级主管审查通过后再返回给基层业务人员。
传统工程项目管理系统是基于事务管理及MIS的方式设计,该方式未将应用软件与业务流程相分离,只是把业务流程混合事务管理编写到工程项目管理系统中,由此造成的弊端是当组织机构或业务流程发生变化时,整个系统可能需要重新设计,或者需要对系统编码进行大幅修改,修改难度大、软件维护周期长。
所以若仍使用事务管理及MIS的设计方式,已经不能支撑当前项目管理内在的协作性、高效性、实用性等要求。
为此,必须采用业务驱动及流程管控的模式来提高工程项目管理系统效能,使用工作流技术可以很好地实现该目的。
在基于工作流技术的工程项目管理系统中,设计时将流程的生成、流转逻辑、执行、监控、管理等工作实现代码从具体业务中剥离独立出来,形成专门的“工作流引擎”,设计人员在设计业务流程时仅需要关注业务流程本身的业务逻辑,完成业务逻辑设计后再调用工作流引擎实现业务具体流转。
当项目所在公司的组织机构、人员角色或业务流程发生变化时,仅需要修改业务逻辑后再绑定工作流引擎即可完成业务流程的维护,大大降低维护难度及维护周期。
2工作流管理系统
2.1引言
工作流管理系统(WorkflowManagementSystem,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核心数据库表设计
在工作流引擎中最重要的数据表为工作流表(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工程项目管理系统功能模块设计
功能模块划分见图5
(1)前端页面:
前台创建、修改、显示工作流页面利用图形化交互界面,通过拖拽方式,实现创建工作流和修改与项目相关的工作流。
通过填写表单和提交表单,执行某个工作流。
组管理页面对组进行创建和删除,并对组内的组成员用户进行添加、删除管理。
(2)后台服务:
组件及其业务逻辑模块为后台服务实现组件操作及其业务逻辑。
工作流的调度与控制模块为后台服务实现工作流的调度与控制功能。
工作流及其校验模块主要功能是当用户提交一个工作流的时候,后台服务对其进行校验,判断其正确性。
5结语
在工程项目管理系统设计中通过引入工作流引擎技术,实现项目管理系统的具体业务与工作流相分离,系统运行时通过业务与工作流程分别独立设计,然后通过调用的方式来启动工作流,提高了管理效率及可用性。
此外,在工程项目管理系统中使用工作流引擎,提高了系统的适应性、可维护性,能降低整个工程项目管理系统在生命周期内的运行、维护成本。
参考文献:
[1]苗蒲,赵霁.针织企业管理信息系统的设计及其优化研究[J].企业技术开发,2008,27(10):
12-14.
[2]韩雪菲.工作流驱动的第三方物流系统设计与实现[D].哈尔滨:
哈尔滨工程大学,2012:
14.
[3]赵文,袁崇义,张世琨,王立福.一种模型驱动的工作流过程定义途径[J].计算机科学,2006,33(12):
10-15.
作者简介:
韦瀛寰(1971-),男,工程师,研究方向:
软件项目管理、工作流。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工作流 引擎 工程项目 管理 系统 中的 应用 研究