1、1基于文档的项目管理系统的设计和实现李艳春,李振英,李艳玲(北京市西城区三里河东路 52 号网络信息中心 0A 室,北京 100864,010-68597824 )摘要:讨论了传统项目管理系统的不足,提出了建立基于文档的项目管理系统的方法,以满足项目管理发展的需要。给出了基于文档的项目管理系统的建模方法和步骤,并给出了设计思路、总体框架和实现方法。关键词:基于文档的项目管理系统;工作流;基于文档的项目模型中图分类号:TP391The Design and Implement of Project on Document Management SystemLI Yan-chun LI Zhen-
2、ying LI Yan-ling (Computer Network Information Center, Beijing 100864)Abstract: With discussing the deficiency of traditional project management system, the project on document management system (PDM) applying workflow technical is put forward, to meet the development of project managing. The method
3、 and process of constructing PDMS is introduced, and the designing method、total frame and realization of the system are also presented.Key words:PDMS(project on document management system); workflow; the model of project on document1 引言当今,每一个单位都会有自己的项目,文档在项目中占有重要的地位。项目可以分为科技类项目、经济类项目多种类型。所有的项目都会涉及到相
4、关的资产调用,人员参与,费用产生,工作计划,效益分析等。每个项目也有它自己的生命周期,项目生命周期是指项目从立项开始到项目完成的整个过程。从项目的生命周期来看,它们都有申报、受理、评审、审批,执行、控制管理和归档等多个阶段。文档的生命周期为:拟稿、核稿、签发、审阅、发布、存档。传统的项目管理系统都是对项目本身进行管理,没有把项目与整个完成过程中每个阶段所涉及到的文档结合起来。或者文档管理系统只对文档本身进行管理,并没有把文档和与其相关的工作结合起来,这就出现了项目管理与文档管理的分离现象,不利于对项目进行合理有效的管理。本文提出了基于文档的项目管理系统(PDMSProject on Docum
5、ent Management System)是在项目的整个生命周期实施全过程中,结合工作流技术对项目的不同阶段实施基于文档的管理。能轻松的控制项目不同阶段所有信息及其所涉及到的文档,使一个项目在控制下高效进展,合理安排项目及其文档计划,以便分析一个项目的成本和效益,取得更好的收益。2 基于文档的项目管理的建模我们的基于文档的项目管理系统结合了工作流技术,因为引入工作流技术,通过业务流程的自动化,减少许多不必要的任务和步骤,提高了工作效率;通过改进业务过程的管理,实现标准化的工作方法以及有效的审核跟踪,能过更好的控制流程;以信息技术为基础的流程设计,在实际实施以前,可以根据业务需求的变化,重新定
6、义和仿真,有更大的灵活性。 工作流管理联盟给出的工作流定义是:工作流是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行。1 工作流包括三R(规则Rule,角色Role,路由Route)。结合工作流定义,描述基于文档的项目的工作流可用一个二元组表示 workflow=。status 用来表示项目的工作流状态,如执行、挂起、完成等,它由工作流管理系统来管理,它能读写工作流状态,系统通过状态属性来控制工作流,workFlowFSM 是一个有限状态机:0A(1)A有限状态集,是基于文档的项目工作流活动(Activity)集合,工作流活动
7、等同业务流程步骤;(2)有限的输入集合R 为工作流的过程规则(Rule);(3)f为流程变迁函数 ,f:A R A( 表示叉积),或用函数表示f(a ,r )=a ( a ,a A,r R,i,j N),变迁ijkikj2函数表示工作流活动a 在规则r 作用下转到工作流活动a ,a 为a 的后继工作流活动; ij ki(4) A是项目唯一的起始工作流活动; 0(5)F 为变迁函数f 的集合,它表示工作流的路由(Route),即对象流动的方向和目的,对象是工作流定义中的文档、信息或任务。基于文档的项目管理系统的工作流活动集合A 可以用一个五元组来表示:A=。其中name 表示工作流活动名称;do
8、cument表示工作流活动中所涉及到的文档;role表示处理工作流活动的角色;state表示工作流活动的状态(如就绪、执行、挂起和完成等);application表示工作流活动处理用户请求所要调用的应用程序(Application)。参考WFMC制定的工作流产品实现模型和工作流参考模型2,我们给出一种基于文档的项目管理系统工作流技术的建模模型。2.1 过程模型基于文档的项目业务流程的过程模型是一个无自环的有向图G。有向图G可以用一个五元组表示,其中:P表示过程,过程是一个子流程,在基于文档的项目管理流程中,经常包含一些子流程,这些子流程在组成上,也包含过程模型的所有要素。因为一般情况下这些子流
9、程在母流程定义时,其流转过程还不能确认,因此,用一个过程来表示,而在具体执行过程还不能确认,比如项目审核时的审批就是一个过程,审批步骤是否执行,如果执行,包含哪些文档、角色是无法确认的,在该模型实例化后,再根据需要,由相关部门的参与审核人员来定义其步骤。C为有限节点集c ,c ,c ,节点表示工作流活动与五元组A=集合表达式相对应。B表示为图G的边,边的集合与有限状态机的变迁函数集合F相对应。T为C上的(0,1)函数,表示结点的输入/输出逻辑。T(c )=0表示合取逻辑,T(c )=1表示析取逻辑,这样就可i i以根据系统满足不同的条件(单接点输入、输出;AND合取输入、合取输出;OR析取输入
10、,析取输出)来执行不同的结果。建立起过程模型后,工作人员就可以根据设计好的过程模型,建立实际的基于文档的项目的过程实例,这个工作称为过程的实例化。2.2 组织模型由于每个用户在工作流活动中都扮演着一定的角色,每个工作流活动都有相应的角色与之相对应,角色通常独立于执行角色的具体用户,包括组织单元、具体的参与人、角色功能和资源,而每种角色都拥有着一定的操作和管理权限。在基于文档的项目管理过程模型中,我们是在将过程模型实例化后,才将角色和用户相对应。用户根据所扮演的角色而拥有的权限对此系统进行访问和操作。因此,过程模型的建立和实例化需要建立角色、用户,角色、权限的关系表,这就是组织模型。在该基于文档
11、的项目管理系统中,组织模型的建立包括以下三个要素。用户:在这个系统中,用户就是基于文档的项目管理过程中的各步骤实际操作者;角色:基于文档的项目管理过程中,对具有某种权限的一些用户的统称;权限:包括查看、新建、修改、删除、查询等。组织模型与过程模型的联系如下:首先,基于文档的项目建模时,根据基于文档的项目所涉及到的用户确定他在此过程中所扮演的角色。然后,在过程模型实例化的过程中,将角色和具体的用户相对应。最后,在控制过程中,用户根据自己的权限对基于文档的项目进行不同的操作。3 系统设计3.1 系统功能结构 基于文档的项目管理系统的功能结构图如图1所示。其中,工作流管理子系统是管理和监督工作流执行
12、的子系统。它的功能有以下几方面:根据基于文档的项目工作流模型,进行基于文档的项目的过程实例化;按照项目过程实例执3行项目的工作流;能改变过程实例或工作流活动实例的状态,能暂停、恢复和退出全部或部分过程实例,以达到对工作流管理的目的;能监督过程实例的执行。应用程序是操纵应用数据的程序,由用户管理、项目管理、文档管理、系统维护等子系统组成。3.2 查询设计我们的基于文档的项目管理系统的查询是一个综合的查询系统,通过它管理员可以查询符合输入条件的过程,管理员还可以查询分配给指定用户的工作项,用户根据自己的权限进行查询与自己有关的工作项、项目和相关文档,查询的范围也可以通过对项目库和文档库的指定来加以
13、限制。条件与条件间可通过“与/或”关系的组合来进一步增强组合条件的严格性与复杂程度。3.3 数据库设计数据库系统的设计比较复杂,其中的数据主要分为属性数据和元数据。由于各个工作流程不是一成不便的,所以我们才采用元数据来表示每个工作流活动的应用数据,这样改变工作流程就不用更改整个系统,只需改写部分数据表中的数据就可以了。表 1 元数据表例中文名字 英文名字 属性 长度 备注字段号 Field_id Number 8 pk字段名称 Field_name Varchar2 50字段所在的数据表 Field_table Varchar2 50字段类型 Field_type Varchar2 50字段长
14、度 Field_size Number 10服务器用户端系统维护子系统基于文档的项目管理系统(各种界面)人员管理模块数据操作 数据查询 数据打印Web 服务器应用数据库(应用程序)元数据图 1 基于文档的项目管理系统功能图文档数据库用户管理子系统 项目管理子系统 文档管理子系统角色管理模块 权限管理模块 未启动项目管理模块 项目成果管理模块已结束项目管理模块正运行项目管理模块 建立文档管理模块 修改文档管理模块 审批文档管理模块 文档归档管理模块工作流管理子系统工作流模型库4字段是否为主键 Field_isKey Boolean字段是否为空 Field_isNull Boolean字段在数据表
15、中显示的顺序 Field_order Number 5属性数据表的设计遵循“对象关键字代码+属性字段组”的设计原则,根据工作流管理子系统我们还在数据库中创建工作流状态属性控制表、工作流活动表、规则集合表、变迁函数集合表,其中变迁函数集合表,状态属性控制是记录项目运转过程中相关属性和控制数据。元数据表记录了数据的产生、数据的定义以及数据之间关系的各种属性,包括数据的具体描述、数据结构等,每个工作流活动的应用数据可以采用元数据来表示和产生。由于元数据的可以采用相同的格式来表示,所以我们用一个通用的应用程序通过元数据去操纵应用数据,而不必为每个工作流活动的应用数据开发相应的应用程序。4 系统实现考虑
16、到支持协同设计的需要, 以及Web应用程序支持工作流管理且易于管理和移植的特点, 本系统在实现时参照WFMC规范,采用了基于B/S模式的浏览器、服务器和应用服务器、数据库服务器三层结构。同时, 为了实现系统的可扩展性、开放性和可靠性,我们采用了BEA WebLogic Server作为Web服务器的管理程序, 利用JAVA 开发Web构件、元数据定义工具和客户端下载的应用程序, 并用JSP作为系统集成的框架语言。数据库工具采用ORACLE 9i。具体的系统结构图如图2所示。4.1 系统实现的关键技术4.1.1 Java 数据库连接 JDBCSUN公司的开放的数据库连接方案JDBC为Java和数
17、据库的连接提供了解决方案。它是基于SQL层的API。通过把SQL 语句嵌入JDBC接口的方法中,用户可以通过Java 程序执行几乎所有的数据库操作。JDBC只提供了接口,具体的类的实现是我们自己完成的。JDBC是面向与“平台无关”设计的,所以在编程的时候不需要关心自己要使用的是什么数据库产品。该系统使用JDBC技术从而可以利用JDBC API来实现特定的需求。4.1.2 数据表的字段由于数据表中的数据比较多,而且数据录入人员不可能十分清楚的每张表格的每个字段的字段号,还有我们的用户不是直接对数据表进行操作的而是直接操作应用程序,所以他们不可能知道每个字段号是多少,因此我们把所有数据表的字段号作
18、为自增字段,这样就方便的数据库录入人员和用户的操作。下面以元数据表中记录号为例,记录号FIELD_ID的自增字段 Trigger 代码如下所示:CREATE OR REPLACE TRIGGER “DOCPM“.“FIELD_ID“ BEFOREINSERT ON “ METADATA _TABLE“ FOR EACH ROWDECLAREnum NUMBER;bh NUMBER;BEGIN表示层数 据请 求下载Applet请 求客户端 中间件 数据库Web浏览器Web服务器应用服务器Servlet Oracle 9i功能层 数据层Internet图 2 DPM 系统结构图5select co
19、unt(FIELD_ID) into num from METADATA_TABLE;if num=0 thenbh:=0;elseselect max(FIELD_ID) into bh from METADATA_TABLE;end if;bh :=bh + 1;:new. FIELD_ID:=bh;END;4.1.3 文件的上传、下载在对文档的操作过程中涉及到文件的上传和下载,而且还要能够支持各种文件。在基于文档的项目管理系统中文件的上传用到了 J2EE 中的 EJB 组件3。我在实现时用一个简单的 JSP 页面 up.jsp,提供一个表单,用户从这里选择文件并填写一些信息把文件上载到服
20、务器。将表单 up.jsp 的 action 属性值设为 upPro.jsp,就是将请求发送给upPro.jsp 文件。upPro.jsp 调用了名为 UpBean 的 JavaBean。下面只列出了 upPro.jsp 调用 UpBean 的代码其他代码省略, 在实现文件下载时,直接在 JSP 页面中进行文件下载操作没有调用到 Java 文件。首先将文件“file_name”用InputStream inStream=new FileInputStream(file_name)语句读到流中,然后用response.reset(); response.setContentType(“bin“)
21、; response.addHeader(“Content-Disposition“,“attachment; filename=“ + fileName + “);三条语句设置输出的格式,最后用byte b = new byte1000; int len; while(len=inStream.read(b) 0) response.getOutputStream().write(b,0,len); inStream.close();等语句循环取出流中的数据。5 总结本文在讨论了传统项目管理系统没有将项目和文档结合在一起,不能满足业务流程多样化等不足之处的基础上,提出了基于文档的项目管理系统
22、解决了上述所提出的问题,并结合工作流技术给出了系统的建模和设计的方法及其具体的实现细节。本系统是跨平台的系统,对任何计算机和操作系统都没有限制,由于采用 B/S体系结构,依赖大型关系数据库的优秀性能,保证了有关数据的安全性、完整性、一致性。设置功能权限、数据权限采用了分组授权技术,对操作员的操作权限交叉控制,对操作记录登记日志,最大限度避免损失,确保高保密性。在实际应用中,基于文档的项目管理系统综合了项目管理和文档管理,提高了办事效率,精简了工作人员,促使办公程序的规范化,公开办事程序,提高了办理过程的透明度,减少违法操作,从而积极地推动了科研机构和公司的廉政建设。参考文献:1. 范玉顺,工作
23、流管理技术基础实现企业业务过程重组、过程管理与过程自动化的核心技术M.北京:清华大学出版社,2001.2. WFMC. The Workflow Reference Model 1.1 , Document Number TC00-1003, 1995-01-19,20-45.3. Paul J.Perrone. 张志伟译. J2EE构建企业系统专家级解决方案,北京清华大学出版社, 2001.作者简介:李艳春(1979-) ,辽宁灯塔人,女,硕士学位,中国科学院计算机网络信息中心 OA 室,主要研究方向为6OA.李振英(1970-) ,内蒙古海拉尔人,女,北京机械工业学院图书馆,工程师,主要研究方向为 MIS.李艳玲(1980-) ,辽宁灯塔人,女,沈阳市交通高等专科学校,助教,主要研究方向为计算机网络.