刘毅
摘 要:随着高校科研项目的增多,对科研项目的管理也提出了更高的要求,如何利用信息技术使项目管理工作更加规范化、科学化,提高工作效率及管理水平,值得探究。在分析科研项目从申报到结题管理流程的基础上,充分利用管理学和软件工程方法,设计并实现了一款项目管理系统,试运行表明该系统基本满足设计需求。
关键词关键词:B/S模式;科研项目;项目管理系统;数据库设计;智慧校园
DOIDOI:10.11907/rjdk.161865
中图分类号:TP319
文献标识码:A 文章编号:1672-7800(2016)008-0119-03
0 引言
在计算机日益普及的今天,科技高速发展,高校对科技项目的研究也越来越重视,每年都有很多项目要上报学院、教育厅、教育部,纸制的项目申报报告审批浪费了大量的人力、物力、财力等,也不便于再次管理。为了适应社会发展需求,使学校所有的项目申报及其信息统计工作更加科学、规范、高效、简便,本文设计并开发了一款项目管理系统。该系统是为方便教师申报项目,理清项目管理与评审顺序,增强申报负责人与科研管理部门间的信息沟通与反馈,促进科研管理部门了解各项目建设进度及存在的问题,帮助学院领导从宏观上协调安排前期工作,进行资金统筹管理和项目进度汇总而设计开发的应用软件系统。
1 系统开发主要需求
一般而言,学校科研项目从申报、多级审核、项目实施、采购支付到项目结题,需要经历一个漫长的过程。对于高校而言,每年都可以申报省市区、教育厅、科技局、环保厅等不同级别不同名义的项目,而且经常各项目的申报时间都很紧迫,如何组织专家快速、公平、合理地从众多申报项目中筛选出符合当前政策导向和时代需求,并且既有创新性,又能为社会创造效益的项目成为各级科研管理部门共同关心的问题。
通过调研收集用户(学院领导、科研管理人员、学科带头人和普通教师)需求,分析学院近5年来各类项目管理情况,本系统将用信息化的手段支持从项目申报到项目结题的整个过程,主要需求点如下:①规范管理——规范项目申报、审核及后续管理业务流程,理清各岗位职责;②打通关键控制环节——完善预算指导计划,计划控制实际发生的管控机制;③多级审批——分配多重功能角色,系部、学院领导、评审专家、财务人员、采购管理人员可以及时审核更新;④理清业务帐——项目管理部门可以随时查看每个项目的历史业务帐;⑤项目资金辅助分析——通过系统数据可以支撑学院领导对所有科研经费的预算进行分析,支持对资金使用状况的即时掌控;⑥提升管理人员水平——通过管理软件的使用,提升管理人员的计算机操作水平和业务能力,提升效率;⑦各种文档的集中有效管理——系统收集的各种申报文件可以方便查阅,项目开展过程中的各种项目资料可以集中管理归档,防止文件丢失给学院带来的潜在损失;⑧建设项目池——系部各阶段都可以进行项目资料的填写,对于审核没通过的项目自动进入项目池,下次申报项目可以直接从项目池选择。
2 项目管理系统设计
2.1 整体架构和关键技术
为提供更好的系统性能,操作系统采用Linux,数据库服务器采用MySQL,综合考虑系统的业务和技术需求,Web服务器采用Nginx。PHP+MySQL是目前最为成熟、稳定、安全的企业级Web开发技术,同时也是最节省系统资源和经济成本的开发技术,不管是中小企业,还是超大型站点,都能完美支持,其成熟的架构、稳定的性能、嵌入式开发方式、简洁的语法,使得系统能快速进行迭代开发,同时PHP+MySQL可跨UNIX、Linux、Windows等平台运行,跨平台移植、无附加成本。
系统设计采用B/S架构,基于Yii开源框架加以实现,从MVC、DAO/ActiveRecord、Widgets、Caching、等级式RBAC、Web服务,到主题化、I18N和L10N,Yii提供了目前Web 2.0应用开发所需要的几乎一切功能。Yii开源框架是纯粹的面向对象框架,并具有高度可扩展性,能利用PHP的一些更高级功能,同时该框架使用简化的安全方案,很大程度上縮短开发时间,系统功能模块的实现无须关注底层数据库的查询、添加、修改、删除方法实现,只需要对前面业务功能进行实现即可,Yii开源框架的MVC架构如图1所示[1]。
2.2 业务流程设计
为适应多用户角色和不断变化的项目需求,通过分解项目的评审流程,对各信息流向进行合理角色分配,通过定义不同的角色明确权限功能,相比传统纸质申报评审大幅度减少了信息传递时间和滞留时间[2]。设计思路以人为中心,以项目库建设为导向,实现复杂的项目管理业务流程。项目整体业务流程如图2所示。
2.3 系统模块设计
经过充分的论证和调研,为满足高校项目管理需求,系统主要包括项目申报、项目采购管理、项目经费管理、用户管理、系统管理5个功能模块。
(1)项目管理模块。本模块是系统的核心功能模块,主要实现申报资料提交、附件上传,对于更高权限的用户,该模块包括项目多级审核、专家评审打分及资金分配等功能;可以通过系统多条件组合查询和模糊查询方法,查询、预览或者打印所需信息;项目统计可以实现对不同年度、不同单位项目立项结题数量和经费总额等信息的分析统计;项目预警提示可以提示项目负责人使用经费或项目是否达到结题时间。
(2)项目采购管理模块。本模块主要为采购管理人员实现流程化、标准化的采购管理和运作,实现采购计划通知发布,更新采购进度,并更新项目验收情况。
(3)项目经费管理模块。本模块主要实现财务管理人员对各项目经费划拨和使用情况的管理,也可用于学校管理部门对经费的年终统计。
(4)用户管理模块。本模块包括用户注册、用户登录、密码修改和角色权限分配管理,其中用户角色根据功能区分为普通教师、系部管理员、学院管理员、职能部门管理员、评审专家、财务管理员、采购管理员。
(5)系统管理。本模块包括项目年度管理、项目资金来源管理、项目附件类型管理、系部管理、系统操作日志管理、数据库的维护和管理等功能。其中,项目年度管理可以自由选择项目类型及附件类型,实现自由组合,满足不同项目申报内容的要求。系统管理员可以按年度对已完成的项目进行数据导出,将产生的各类项目资料进行备份,并做好统一管理。同时,用户根据不同权限实现项目资料的查看和下载等,系统发布一些项目申报、项目审核的动态新闻,方便广大教师及时了解信息[3]。
2.4 数据库设计
数据库设计是在对业务需求和实体模型进行详细分析的基础上,通过建立数据结构实现数据存储、查询的过程。作为高校科研项目管理系统,要求数据库的访问是高效、安全的,采用 B/S 结构模式,用户并行访问数据库概率大,选用MySQL十分合适。系统中所有表的创建都依据数据库设计的原则进行,主要包括了系统用户信息表(t_admin)、角色表(t_role)、操作日志表(t_log)、项目类型表(t_project_type)、项目信息表(t_project)、项目评审表(t_audit)、项目采购状态表(t_caigou)、项目支付情况表(t_caiwu)、系部表(t_department)、新闻表(t_news)等。其中,系统用户信息表数据库设计如表1所示。
3 项目管理系统实现
利用Yii进行项目开发过程中,Yii能很方便地实现CRUD后端内容,前端主要是在HTML、JavaScript、CSS上进行开发,其中前端可以通过引入Bootstrap扩展的形式,统一页面元素风格,加快开发速度。本文仅对在Controller中的关键代码实现进行举例介绍。
(1)项目列表根据当前登录用户ID只显示所管理的项目,避免非法操作,项目列表实现关键代码如下:
public function actionAdmin() {
$adminid = Yii::app()->admin->getState('admin_id');//获取当前登录用户的session信息
$this->setUnionTitle('项目列表');
$criteria = new CDbCriteria;//定义数据查询条件
$criteria->order = 'rank desc,school_id asc ,created desc';
$criteria->addCondition('status<>3');//根据项目状态显示数据
$criteria->addCondition('admin_id=' . $adminid);
$count = Application::model()->count($criteria);
$page = new CPagination($count);
$offset = $page->getOffset();
$limit = $page->getLimit();
$page->applyLimit($criteria); //分页查询
$data = Application::model()->findAll($criteria);
$this->render('admin', array( 'data' => $data,'pages' => $page ));
}
(2)用户角色权限实现。用户角色具有什么功能权限可以进行灵活定制,将所有赋予权限的Action方法名称通过序列化的方法存入acl_desc字段,用户在登录后对通过Session载入所具有的权限进行比对,由此控制不同的功能操作权限及视图显示。用户角色权限实现关键代码如下:
protected function getAllowActions()
{
$acl= Yii::app()->admin->getState('allowActions');//获取session
if ($acl) {
$roleAcl= $acl;
} else {
$roleId= AdminhtmlAdmin::model()->loadRoleIdByAccount(Yii::app()->admin->name);
$roleAcl= AdminhtmlRole::model()->getOneAclArray($roleId);//获取用户所具有的操作功能集
Yii::app()->admin->setState('allowActions', $roleAcl);//写入session
}
….
}
(3)用戶登录实现。通过判断输入的用户名和密码是否合法,提交数据库登录前需要进行数据Validate合法性验证,禁止提交非法字符,登录成功可跳到登录前的页面。详细实现代码如下:
public function actionLogin()
{
…
if(isset($_POST['AdminhtmlLoginForm'])) {
$model->attributes=$_POST['AdminhtmlLoginForm'];
if($model->validate() && $model->login()) {//提交数据库登录前,需要进行数据validate验证,禁止提交非法字符
...
}
…
}
4 结语
系统开发后,在广东环境保护工程职业学院试运行,结果表明该系统基本满足设计需求,具有角色功能科学合理、简单易用、安全性和系统使用流畅等特点,可以实现对各种类型的项目进行有效管理。本系统的优势是建立在B/S基础上,利用开源框架技术,由学院自主开发,不依赖于供应商,实现迭代进化式开发。由于笔者所在的高职院校建院时间较短,各种信息系统的开发和使用都还处于初级阶段,缺乏统一的门户管理平台,项目的信息建设主要还是记录课题和经费等静态信息。因此,本系统的未来升级设计必须考虑跟人事、财务、设备等业务系统的数据流通,并实现项目动态过程化管理,即以项目为中心,对项目申报、项目推进、经费使用的动态走向进行跟踪和监督,并自动体现在学院的其它业务系统上,避免“信息孤岛”,通过数据资源共享促进实现智慧校园。
参考文献:
[1]深入理解Yii2.0[EB/OL].http://www.digpage.com/mvc.html,2016-5-20.
[2]张强伟.基于工作流的项目申报管理信息系统的设计与实现[D].成都:西南交通大学,2010.
[3]张志强.基于Web环境的高校科研管理系统的设计与实现[D].成都:电子科技大学,2006.
(责任编辑:孙 娟)