工程项目管理系统的设计与实现①
2011-04-13罗萍萍林济铿张耀先赵沛虎
罗萍萍,夏 巍,林济铿,张耀先,赵沛虎
(1.上海电力学院电力系,上海 200090;2.苏州供电公司变电运行中心城区操作班,苏州 215000;3.天津大学电力系统仿真控制教育部重点实验室,天津 3000724.天津泰达电力公司规划部,天津 300402)
电力工业的信息化是适应市场经济发展的需要,而工程项目管理系统的建设则是电力信息化的重要内容。它能明显地促进工程项目管理的科学性、规范性及有效性,因此它是电力企业信息化建设不可或缺的核心组成部分。
由于项目管理具有应用范围广泛、目标和内容多样性等特点,因此针对不同的应用对象和管理目标,其设计与实现也具有多样性的特点。其应用对象包括高校科研项目管理[1,2,4]、图书馆科技查新项目管理[5]、科研院所科研项目管理[6]、分布式环境下协同产品项目管理[7]、设计院项目设计流程管理[11]以及电力工程图纸管理[16]等;而其管理目标包括项目全周期的信息管理[3,8]、企业人员绩效考评[12]以及进度、成本、绩效的综合目标[10]等。基于上述对象和目标而设计出的项目管理系统都得到了不同程度的成功应用。
随着国网公司所倡导的SG-186工程的全面实施,国网公司体系下的各级电力公司的办公自动化和信息化有了长足的提高。但由于SG-186工程系统复杂,投资庞大,对于非国网公司体系的各独立地区电力公司来说,既没有资金,也没有技术实力推广使用SG-186工程;而其办公自动化及信息化又是其迫切需要解决的问题。
基于此,本文设计并开发了适用于独立地区电力公司的工程项目管理系统。该系统的特点在于:(1)通过对系统中的业务审核流程进行数学建模,创建了整个系统的底层平台和总体架构,为具体功能实现和扩展打下了坚实的基础;(2)提出了基于角色的访问控制方法(RBAC,即Role-Based Access Control),使得系统运行及信息具有良好的安全性及保密性;提出并实现了基于工作流结构的具有良好灵活性和扩展性的流程模块。系统主要包括用户登陆、工程项目注册、进度管理、项目竣工管理、档案管理、流程查询以及系统设置等模块。上述功能的实现解决了文件的远程传送、会签,工程进度的可视化及提醒和项目的科学有序管理,促进了独立地区电力企业办公自动化及信息化的进程。本文所开发的系统已长期成功地运行于天津泰达电力公司,证明了该系统的正确性和有效性。
1 工程项目管理系统具体内容及系统设计
对于独立地区电力公司的规划部,一般负责工程项目前期阶段的工作,具有明显的阶段性特点。主要工作内容为收集用户资料、编制供电方案、委托设计、勘察现场、组织图纸审查、协调解决工程施工过程中遇到的设计问题等。通过对工作过程的梳理,工程项目管理过程及内容可整理如图1所示。
本文设计了如图2所示的软件系统功能结构,以实现图1所示的项目管理过程及内容。图2软件系统结构主要由三个部分组成:项目信息管理、工程进度管理和供电方案的审核流程。
图1 项目管理过程及内容Fig.1 Process and content of the engineering project management
(1)项目信息管理主要包括对工程项目的分类注册,工程信息的编辑和查询,以及对已结束项目的分类处理三个部分。工程项目信息在工程进展过程中不断更新,从而实现对项目的科学管理。
(2)工程进度管理主要包括对工程项目进度的里程碑计划管理,实施计划管理,工程进度录入,以及对实施阶段的工程的进度查看等四个部分,以实现工程进度的可视化。工程进展过程中将会生成供电方案模板,以供项目负责人编制供电方案。
(3)供电方案的审核流程主要包括审核流程启动、供电方案自动传递以及审核完毕后的文件归档等三个部分,以解决供电方案的远程传送和会签等问题。
图2 工程项目管理系统总体框架Fig.2 Framework of engineering project management system
2 系统功能结构
针对图2所示的系统框架,系统设计了用户登陆、工程项目注册、项目进度管理、项目竣工管理、档案管理、流程查询以及系统设置七大模块。如图3所示。
图3 工程项目管理系统功能结构Fig.3 Function and structure of engineering project management system
3 系统的实现
3.1 基于Web的系统结构框架
多层结构是在分布式技术(distributed technology)不断发展、成熟的基础上建立起来的。其核心思想是在分布式技术的基础上,将用户界面同应用的企业逻辑分离。本系统采用文献[14,15]所建立的基于Web的改进三层结构框架。这三层分别为Web项目(页面显示层)、BLL项目(business logic layer,即业务逻辑层)和DAL项目(data access layer,即数据访问层)。如图4所示。
图4 基于Web的改进三层结构框架Fig.4 Improved three-layer framework based on web
其操作过程为:由客户端发出请求,经Web服务器处理,对数据库进行操作,输出结果格式化为用户需要的形式返回客户端。如图5所示。
图5 工程项目管理系统操作流程Fig.5 Operation process for engineering project management system
3.1.1 客户端
客户端是信息系统的外部接口部分,即用户与系统间信息交互的窗口。当系统接收到客户端浏览器发出的业务请求时,BLL项目解析请求并转换为Web的输入参数;当业务处理完成,Web项目生成相应页面返回至浏览器。
3.1.2 Web项目
此项目用于将业务功能在页面上显示出来,采用ASP.NET(active server page,即动态服务器页面)制作,页面部分由HTML语言和Jscript结合CSS文件制作。
3.1.3 BLL项目
BLL项目是整个系统中最重要的部分,完成所有业务功能和逻辑判断。业务逻辑层包含以下几个类:ISLOGIN(登陆信息)类,ORGAN类,PERSON类以及IdentityCard类。
3.1.4 DAL项目
数据访问层,用一个类Database来完成对数据库的基本访问与操作工作。
3.2 信息发布
本系统主要通过System.Web.UI.Page类中的IdentityCard类的实例Session来判断用户身份信息,即项目经理(审核人)可对工程信息进行查看和对附件进行浏览下载,而完成信息发布。
3.3 工作流结构设计与流程实现
根据图2所示的系统框架结构,流程的设计及实现是一重要内容。为了使所设计的流程具有灵活性及可扩展性,本文提出采用工作流模式来设计并实现它。
WFMC(workflow management coalition,即国际工作流管理联盟)给出的工作流定义是:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务,能够在不同的执行者之间传递与执行。该定义强调了工作流的执行可以"完全自动或者部分自动",即工作流反映企业的经营过程;同时需要经营过程本身任务间的执行条件、先后顺序、逻辑结构、交互信息、人员角色以及需要使用的应用程序等要素。基于此,本文设计了如图6所示的工作流子系统用于实现图2中的流程模块。
图6 工作流子系统Fig.6 Sub-system of the work stream
该工作流引擎的主要功能有:
(1)通过流程解释器对流程定义进行解释,建立流程模型;
(2)通过流程管理器控制流程实例的创建、激活、挂起、终止及流程实例状态的转换;
(3)监督流程实例的执行,并通过异常处理器对执行过程中遇到的异常进行处理。
在本工作流模型中,将流程模型统一存入流程模型库中。创建流程实例的过程,也就是从模型库中取出相应流程模型,再添加数据的过程。添加的数据分为两类:控制数据和相关数据。其中,控制数据决定着该流程实例的重要属性,如流程名称、流程状态、流程时限等等。控制数据以外的相关数据则反映了流程实例的一般属性和信息补充,如流程描述等等。为了方便使用,本流程系统将典型的流程实例存入流程实例库。从而使得,流程的定义及运行具有很高的灵活性,当实际业务模式发生变化时,只要根据其实际运行模式重新定义一次流程实例,就可按实际的业务模式进行运转。基于图6工作流子系统,本文所实现的每一工程项目管理的业务流程,均包括流程定义、流程运行、任务提示3个部分。
(1)流程定义
包括三方面的内容:流程基本信息、节点信息和节点对应字段信息。
(a)流程基本信息包括流程编号、流程名称、对应业务信息、开始节点和结束节点次序和流程时限。系统用流程编号这个字段唯一标识一个流程,故用户启动的流程是不可能出现重复的;流程名称是对流程进行文字描述;对应业务信息指的是流程所对应的项目类型。在本系统中,一个流程的开始和结束是用开始节点和结束节点来描述的,所以需要在流程基本信息中包含开始节点和结束节点次序的信息。而流程时限的设置则是为了满足用户的需求:当流程的进行时间超出了这个时限,则系统认为流程已经结束。
(b)节点信息包括节点编号、节点次序、节点名称、角色编号以及是否可退回等字段。其中,节点编号是唯一标识一个节点;节点名称是对该节点进行文字描述;节点次序表示该节点在流程中的位置;角色编号表示需要有哪些角色操作该节点才能使流程出现进展;是否可退回表示流程经过该节点时,是否可以经过某些操作返回至上一节点。
(c)节点对应字段信息包括字段编号、对应节点和业务描述。当用户所需的业务流程发生变化的时候,管理员可通过修改相应节点和业务描述来实现流程的相应更改。
(2)流程运行
流程运行主要提供给客户端调用的功能,主要分为以下两个组件:
(a)流程实例的触发及处理,包括发起一条流程,处理流程中自己所参与的活动;
(b)流程数据的查询,可以按照设定好的查询指标对流程数据进行直接查询。
(3)任务提示
任务提示主要为客户端提供任务列表,提示用户参与的活动,如待处理任务列表。
图7给出了项目审核流程。
图7 审核流程图Fig.7 Flowchart of project review
基于图6的流程运行过程为:在一定的流程时限范围内,从项目负责人上报供电方案作为开始节点,文件审核人审核文件并作出批准或退回项目负责人再次上报的决定,如此循环反复,直至所有审核人全部通过,返回项目负责人归档的过程。其过程如图7所示。
3.4 基于角色的访问权限控制(RBAC)的设计与权限实现
由于每一工程项目往往涉及的部门比较多,且事务具有保密性,因此,对于用户的访问及浏览应具有严密的权限管理。本文提出采用基于角色的访问权限控制(RBAC)方法,以实现使用人员的权限及系统安全的控制,达到既使系统的运行及使用达到保密的要求,只能专人专用,无关的人不能随便使用该系统及相关信息,达到与SG-186工程所要求的"单点登入"的相同功能,又使得系统管理员能够灵活方便地管理该系统,以维护系统的正常运行。
RBAC模型的基本工作原理是根据不同组织结构中不同的职能岗位划分不同的角色,接近于组织中自身的管理规则。RBAC通过分配和取消角色来完成对用户权限的授予和取消,并且提供角色分配规则。管理员根据需要定义各种角色,并设置合适的访问权限,角色的权限是角色所拥有的系统访问的功能,表现在对某一模块或菜单项的可执行功能上。用户根据其责任和资历被指派为不同的角色,当用户登录系统时,系统通过它所具有的角色的权限来判断是否可以访问系统资源以及可进行什么操作。这样整个访问控制过程就分成两个部分:即访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。RBAC基本模型如图8所示。
图8 RBAC结构Fig.8 Structure of RBAC
本系统通过以下信息表的定义来实现对不同用户的授权。
(1)用户基本信息表
该表定义了用户的基本信息,主要包括:
①USERID用来唯一标识一个用户;
②ORGANID表示用户的所在部门;
③USERNAME表示用户的实际姓名;
④LOGONNAME表示用户的登录账号;
⑤PASSWORD为用户登录密码;
⑥USERROLE是用户对应的角色编号等。
(2)角色表
该表定义了系统可供分配的角色,在本系统中,角色是指在业务流程中起作用的用户组,也就是指项目负责人和审核会签人。其中,项目负责人负责档案的上报和归档,审核会签人负责档案的审核。角色信息用USERROLE来表示,并通过设置不同的USERROLE值来区分不同的角色。而BASEMODULEPERVIEW则体现了角色的权限,其中包含了该角色可访问的所有页面的BASEMODULEID值。
(3)权限基本信息表
该表定义了本系统所有可以访问的页面。信息主要包括BASEMODULEID、BASEMODULENAME、PARENTMODULEID、NODEID、PAGEURL等。其中,BASEMODULEID用来标识一个可以访问的页面,也就是一个权限;BASEMODULENAME是该页面的实际名称;PARENTMODULEID是指当前页面是哪一个页面的子页面。主菜单中只有项目信息管理、进度管理、工程档案管理、竣工管理、流程查询和系统设置等6项,其他页面均为这些页面的子页面,故定义了PARENTMODULEID字段,只有属于主菜单的6个页面的PARENTMODULEID值为0,其余页面的PARENTMODULEID值为其父页面的BASEMODULEID值。NODEID描述的是页面在子菜单中的排列顺序。PAGEURL指的是该页面的相对路径。
用户角色的分配是通过设置用户的USERROLE值实现的;角色分配权限是通过设置角色的BASEMODULEPERVIEW值实现的。各种表之间的关联关系体现了系统的权限管理,其结构和相互关系如图9所示。
根据图9各种表的关系,用户登陆过程的权限管理运行过程为:当合法用户登陆系统后,按照程序控制机制首先访问用户表,提出该用户对应的角色编号USERROLE值;再根据角色编号在角色表中读出对应的权限编号BASEMODULEID;然后根据权限动态生成菜单。角色所具有的权限是由系统管理员预先分配好的,系统通过管理员可以灵活的添加或取消某个角色的权限。
在安全控制方面,本文基于RBAC方法设置了4层安全控制,以达到系统运行及信息的安全性和保密性。
图9 信息表之间的关系和结构Fig.9 Relationship structure of imformation tables
(1)用户和密码验证
用户登陆系统,需要用户输入用户名和密码,以便确认和登记,系统设计了MD5算法对用户密码进行加密与解密;在用户忘记密码情况下,通过系统管理员可以将密码重置为初始密码。
(2)Session验证
用户登录后,程序会将用户的资料放到一个Session里面,用户每打开一个网页,都会先读取Session里面的内容,如果Session为空,那么用户将不能访问该网页,以此来判断用户的登陆与否。
(3)数据库管理控制
对数据库的访问进行控制,设置专门的数据库管理员,对数据库进行日常的维护,并设置好日常备份计划,做到及时备份。
(4)角色权限的验证
系统采用基于角色的访问控制规则,在设置用户的时候,给每个用户都设置了对应角色,并分配了权限。而不同角色的用户进入系统后,可以使用的功能模块是不同的,没有访问权限的用户无法使用对应的功能菜单。
4 工程项目管理系统的实际应用
图10为管理员登陆本系统时看到的的主页面,主要分为左侧的菜单栏、上方的标题栏和中央的工作区。其中,标题栏提供帮助等提示信息,工作区显示任务信息,菜单栏提供相应的功能链接。
图10 工程项目管理系统主页面Fig.10 Main web-page of engineering project management system
系统的流程定义界面如图11所示。
图11 工程项目管理系统流程定义界面Fig.11 Stream definition interface of the engineering project management system
图12 节点信息界面Fig.12 Interface of the node information
图13 节点及对应字段编辑界面Fig.13 Edition interface of the node and its field information
图14 设置人员角色界面Fig.14 Interface for person role setting
系统建立的流程均在此界面中以列表形式展示。系统管理员可以通过点击编辑来修改相应流程信息,也可以点击流程名称链接进入该流程的节点信息界面,如图12所示。在节点信息页面里,管理员可以添加或删除节点,或者点击编辑进入节点及对应字段编辑界面,如图13所示。对于新增一流程,以及原有流程走向及结构的变化,只需在此界面根据实际情况进行相应编辑,从而使得流程具有很好的灵活性和可扩展性。
这样,管理员就可以通过上述三级界面上的相应修改来实现对所需流程的定义和修改,适应了业务的变动和扩展的需要。
另外,管理员可以在人员管理界面中对某个用户进行编辑,进入如图14所示的设置人员角色界面,就可以实现人员角色的设置。而各个角色的权限均在角色表中设置完毕。这样,基于角色的访问权限控制就实现了。
该系统已于2010年5月份通过了天津泰达电力公司组织的专家验收,并投入实际运行,迄今运行良好,已成为了泰达电力公司规划部进行项目管理的良好工具,并在全公司进行推广应用。
5 结论
本文研发了一套实用的工程项目管理系统。通过对系统中的业务审核流程进行数学建模,创建了整个系统的底层平台和总体架构;提出了基于角色的访问控制方法并实现了对系统用户权限的分配和控制,使得系统运行及信息具有良好的安全性及保密性;提出并实现了基于工作流结构的具有良好灵活性和扩展性的流程子系统。所设计的系统功能完善,界面友好,使用方便;实现了文件的远程传送、会签、工程进度的可视化和项目的科学有序管理,促进了中小规模的地区电力企业办公自动化及信息化。
[1] 魏笑笑,王成军(Wei Xiaoxiao,Wang Chengjun).基于B/S科技过程管理信息系统的设计与实现(Design and implementation of science and technology process MIS based on B/S)[J].电脑与信息技术(Computer and Information Technology),2005,13(5):20-22,63.
[2] 张小艳,赵渭泳(Zhang Xiaoyan,Zhao Weiyong).基于C/S的科研项目管理信息系统的设计与实现(Design and implementation of scientific research items management information system based on C/S)[J].科技管理研究(Science and Technology Management Research),2007,(10):247-248.
[3] 刘念华(Liu Nianhua).基于固定资产投资项目全生命周期的信息管理系统(Information management system for overall lifecycle of investment item based on fixed assets)[J].兵工自动化(Ordnance Industry Automation),2005,24(3):40-41.
[4] 侯冰,许炎义(Hou Bing,Xu Yanyi).基于设计模式的科研项目管理系统设计研究(Research on design of MIS for the management of scientific research items based on design pattern)[J].舰船电子工程(Ship Electronic Engineering),2007,27(1):83-85.
[5] 宋乐平,丁玉东(Song Leping,Ding Yudong).科技查新项目管理系统的设计与实现(Design and implementation of the literature evaluation provincial management system)[J].情报探索(Information Research),2010,(2):70-71.
[6] 吕滨,许兆新,温丽华(LüBin,Xu Zhaoxin,Wen Lihua).科研项目管理系统的设计与实现(The design and realization of scientific research project management system)[J].黑龙江工程学院学报(Journal of Heilongjiang Institute of Technology),2005,19(4):57-59.
[7] 贺辛亥,马柯,赵小惠,等(He Xinhai,Ma Ke,Zhao Xiaohui,et al).面向产品协同开发的项目管理系统研究(Study on project management system for collaborative product development)[J].机床与液压(Machine Tool &Hydraulics),2005,(7):26-27.
[8] 吴志东,赵嵩正(Wu Zhidong,Zhao Songzheng).面向项目全生命周期和过程基准控制的PMIS功能模块结构设计和流程规划(The PMIS function module structure design and process planning facing the total project life cycle and process control of benchmark)[J].西北工业大学学报:社会科学版(Journal of Northwestern Polytechnical University:Social Science),2004,24(3):56-60.
[9] 侯培文,刘军利(Hou Peiwen,Liu Junli).轻型工作流引擎在工作流管理系统中的应用(Application of JPBM in workflow management system)[J].电脑开发与应用(Computer Development &Applications),2010,23(2):46-48,51.
[10]林廷格(Lin Tingge).项目管理信息系统的设计与应用(Design and application of project management information system)[J].福建电力与电工(Fujian Electric Power and Electrical Engineering),2006,26(1):40-41.
[11]李洁,郭文超,肖杰盛(Li Jie,Guo Wenchao,Xiao Jiesheng).项目设计流程管理系统的设计与实施(Design and implement of design flowchart management system for the projects)[J].轻金属(Light Metals),2005,(9):3-7.
[12]邓文娟,曾盛绰(Deng Wenjuan,Zeng Shengchuo).一种基于流程管理的绩效考核系统研究(Research of applying performance-assessment system based on flow management)[J].现代制造工程(Modern Manufacturing Engineering),2010,(4):43-45,106.
[13]刘宇熹(Liu Yuxi).运维管理平台工作流引擎设计(Design of workflow engine of operation management)[J].现代计算机(Modern Computer),2010,(2):140-144.
[14]乌聪敏,么莉,林济铿(Wu Congmin,Yao Li,Lin Jikeng).基于改进Web三层结构的电力技术监督系统设计与实现(Electric power technical supervision system based on improved three-layer web structure)[J].电力自动化设备(Electric Power Automation E-quipment),2010,30(2):118-122.
[15]王为臣,林济铿,郭垒垒,等(Wang Weichen,Lin Jikeng,Guo Leilei,et al).基于B/S模式的电厂工作票系统(A practical work ticket system of power plant based on B/S style)[J].电力系统保护与控制(Power System Protection and Control),2009,37(18):112-115,123.
[16]李俊达,蔡泽祥,朱林,等(Li Junda,Cai Zexiang,Zhu Lin,et al).基于ActiveX技术的电力工程图纸管理系统的研究(Study on the engineering drawing management system of power system based on ActiveX technology)[J].电力系统及其自动化学报(Proceedings of the CSU-EPSA),2005,17(2):95-98.