基于开源框架的项目验收系统的研究

2010-01-08 07:28李元旦徐小良
关键词:组件架构逻辑

李元旦,徐小良

(杭州电子科技大学计算机学院,浙江杭州310018)

基于开源框架的项目验收系统的研究

李元旦,徐小良

(杭州电子科技大学计算机学院,浙江杭州310018)

该文为了简化科技计划项目验收过程,实现项目验收管理的科学化、高效性,提出了基于Java EE开源框架的验收系统解决方案。体系架构设计以Spring2框架为核心,整合Struts2框架和ExtJS脚本框架等作为Web表现层、TopLink框架作为JPA持久层,形成一个分层、松耦合的、独立于平台及关系型数据库的轻量级框架。系统已经实际应用于浙江省科技项目验收管理系统中,有效提高了验收效率,对提高我国科技计划项目管理水平具有重要意义。

项目管理;控制反转;松耦合

0 引 言

目前,基于Java EE的Web应用框架层出不穷,包括MVC模式的Struts2、服务于所有层面的Spring2[1]、完成持久化的Hibernate及TopLink等。尽管可选框架繁多,但都存在各自的优缺点。一个好的解决方案是选择不同层面的优秀框架,通过整合实现松耦合的轻量级框架。随着科技计划项目资助量的陡增,项目验收管理成为科技主管部门一项最繁重的工作。传统方式效率低下,无法有效管理验收信息,不能对项目后续导向提供有效的决策支持。互联网技术的迅速发展,促使管理模式的变革,项目管理的网络化、信息化已成必然。本文提出基于Java EE开源框架的验收系统解决方案,将项目验收核心业务归为技术审批、财务审批两个并行的业务流程,业务处负责技术审批,计划处负责财务审批。

1 系统建模

为了建立可理解的现实模型,明确系统功能,本文利用UML对系统功能需求进行分析建模。

1.1 用例模型

用例模型描述定义系统功能需求,说明系统主要参与者从外部观察系统能得到哪些功能。项目验收管理的主要参与者包括项目申报单位,项目主管部门的业务处与计划处、会计事务所。其中的参与者有:项目负责人、归口部门管理员、业务处官员,业务处处长、计划处官员、计划处处长、事务所审计人员。

各参与者通过验收申请的技术审核和财务审计审核活动相联系。项目负责人在线提交验收申请材料,由归口管理员审核通过后,主管单位的业务处和计划处分别独立进行技术审批和财务审批工作,业务处技术审核通过时从专家库系统中选取若干名验收组技术专家;计划处则通过系统自动委托某一家会计事务所对项目进行审计,会计事务所审计结束后提交审计报告由计划处进行审核确认,同时可以选取验收组财务专家。若技术审批与财务审批都通过后,则主管部门主持项目验收会。如图1所示。

1.2 业务模型

业务逻辑模型通过对整个系统的特性、能力结构状况进行分析,描述各个业务模块之间的交互关系。验收管理系统的业务模型主要可以分为项目技术审批和财务审批两大流程,由业务处负责项目技术及成果审批,计划处负责项目财务审计审批。系统整个业务模型可以分为用户填报验收申请、归口部门审核、业务处技术审批、计划处财务审批、会计事务所审计管理5个模块,如图2所示。

图1 验收系统用例图

图2 验收系统业务模型

具体业务流程步骤如下:

(1)项目负责人在线提交验收申请材料,并上报归口部门;

(2)归口部门审核验收申请,审核通过则上报科技主管部门,后续步骤(3)和(4)为独立并行进行;不通过则退回项目负责人进行修改,即返回步骤(1);

(3)业务处进行对验收申请中的技术及成果材料进行审核:若审核通过则从专家库选取/核定验收技术专家,并上报计划处即到步骤(5),至此验收申请的技术审批已经完成;若通不过则退回项目负责人进行修改,项目负责人根据意见修改验收材料后直接上报到业务处重新审核;

(4)计划处委托会计事务所进行项目财务审计。

1)根据项目承担单位所在地区,计划处选取会计事务所,开具委托审计书;

2)若会计事务所受理委托则在规定的时间内进行审计,若不受理则返回到1);

3)当审计完成后,填写并上传电子审计报告;若由某种原因无法完成审计,暂停或返回到1);

4)若计划处审核通过财务审计报告则转至步骤(5);否则退回事务所进行修改,即返回到3)。

(5)通过技术审批和财务审批后,用户提供验收材料至主管部门,召开验收会议;

(6)专家验收意见通过系统录入并进行网上公示。

2 系统技术架构

系统技术架构描述模型需求解决方案,是系统实现关键,科学的架构对开发效率有至关重要的作用。本系统采用Java EE分层架构思想、结合面向接口驱动的组件编程思想,搭建各层间松耦合的架构[2]。

2.1 松耦合的轻量级架构

在优秀的应用系统中,各功能应当相互脱离,具备高度的可维护性、可扩展性。本文所描述的系统表现层使用Struts2,业务层使用Spring2,持久层使用TopLink,3个框架以松散耦合的方式彼此作用,彼此相互独立,保持一致。Struts2有强大、成熟的标记库,能够极大地简化页面的开;用Spring2来控制事务处理,使显示、控制和事务逻辑的分工更清晰,降低各层间的耦合度,对开发复杂的系统起到了简化的作用;用功能强大的TopLink来实现数据的持久化,是使用Oracle数据库系统实现的第一选择。由于这些框架的开源性质,有很多开源组织提供的支持,很多方便的工具包,提供对利用这些框架开发系统的无缝接口。充分利用3个框架的优势,可以开发出结构清晰、简洁,具有良好可扩展性、可维护性的系统。如图3所示。

2.2 表现层

表现层对应系统MVC结构的控制器层,由Struts2中的Action来充当。以Spring2服务整合Struts2框架,通过Struts2与Spring结合使用,让Spring2管理相关的组件,避免了在代码中直接调用组件而产生的依赖关系[3]。表现层前端以FreeMarker作为模板支持,显示结果;同时采用Ext富客户端框架技术,利用JSON数据传输标准实现数据交换,给用户提供友好的操作界面,增加用户体验。

2.3 业务逻辑层

架构的业务逻辑层通过Spring2的声明事务特性实现事务封装,业务逻辑层组件由ApplicationContext IoC容器统一管理,实现细粒度的依赖注入。Spring2框架核心基于控制反转(IoC)原理,将组件间依赖关系的创建和管理置于程序外部。相比基于JNDI的依赖查找方式,IoC模式实现了对象的共享,简化对象间的调用关系。Spring2将依赖配置外置,可自由配置应用选项,在不同实现间切换变得容易,所有依赖都通过一个简单的库进行管理,让依赖管理变得极为简单、高效,如图4所示。

图3 系统技术架构

图4 采用IoC模式前后依赖关系变化

2.4 持久层

数据持久层采用TopLink作为JPA实现。JPA是一个易于使用、伸缩性强的ORM规范,提供标准的ORM解决方案,解决了ORM框架之间不兼容的问题,极大地提高系统的可移植性。基于非入侵式的设计原则,使它能很容易的与其它框架集成;通过面向对象查询方式,避免了SQL语句的紧密耦合。作为JPA实现,TopLink将应用代码和数据库模式相分离,在开发中只须关注应用和对象模型的设计。另外使用TopLink高速缓存功能,可以高效地处理大量事务[4]。

3 系统实现

3.1 表现层实现

表现层由struts2的Action实现,Action通过调用系统的业务逻辑方法处理用户请求,将结果放入struts2的ValueStack中,返回结果页面显示请求结果。Struts2的Action是一个带有execute方法的POJO类,无须继承任何基类或实现任何接口,由属性直接绑定用户表单数据,拦截器通过setter方法将用户提交的数据设置成Action类的属性值。所有Action都通过Struts.xml进行配置。

3.2 业务逻辑层实现

业务逻辑层负责系统业务逻辑,依照接口和实现相分离的原则,业务逻辑接口定义所包含的功能,业务实现类提供具体的逻辑实现。通过分离接口和实现类,Action的调用无需直接与业务逻辑实现类发生关系,仅依赖于业务逻辑接口,去除了Action类和业务逻辑实现类之间的耦合关系,降低系统代码重构的代价。业务逻辑层包含系统的业务服务和业务对象,业务服务通过调用业务对象和数据库进行数据交互任务。业务逻辑组件依赖于DAO组件进行数据库操作。在本系统中,由Spring2容器负责DAO组件的实例化,并将其注入到业务逻辑组件,使得持久层和业务逻辑层之间关系的高度解耦。如图5所示。

图5 业务服务图

用户的每一业务请求对应具体的业务逻辑,每一业务请求都是一个不可分的逻辑,因此事务控制在业务逻辑方法中十分必要。Spring2的声明事务特性实现了事务封装,借助于Spring2的声明式事务管理,所有事务管理在Spring2的配置文件中进行配置[5]。

3.3 持久化层实现

持久化层实现分为PO层和DAO层。PO层实现持久化工作;DAO层封装所有的持久层访问,持久层访问通过DAO组件实现,避免业务逻辑组件和持久化访问的耦合。PO层由两部分组成:注释和持久化类。JPA注释将持久类映射到数据表中,类中的属性和数据表的列名一一对应。如图6所示。DAO层组件实现包括DAO接口与接口实现,由Spring2容器管理。Spring2制定了面向DAO的通用体系,屏蔽具体持久化技术的差异,使业务逻辑层和具体的持久化技术达到松耦合的效果,持久化访问所需的数据库连接和事务管理都由Spring2的IoC容器注入。

在AcceptanceDAO中定义访问Acceptance数据对象的接口方法,使用TopLink持久化技术实现AcceptanceDAO接口方法,业务层AcceptanceService通过AcceptanceDAO操作数据,通过这种方法使业务层和持久层解耦,如图7所示。

图6 实体类结构

图7 业务层通过DAO接口访问数据

4 结束语

本文通过整合Struts2+Spring2+TopLink开源框架,构建一个松耦合、可扩展的轻量级Web框架,实现表现层,业务逻辑层,持久层相互分离。基于此框架开发的项目验收管理子系统已成功应用于浙江省科技计划项目管理系统中,很好地解决了项目验收效率低下的问题。另外系统具有良好的可移植性和可维护性。应用实践表明,本系统对于我国科技计划项目验收管理工作有较好的参考价值,对提高我国科技项目管理水平有重要意义,在我国各级科技计划主管部门有较好的应用推广价值。

[1]Johnson R,Hoeller J,Arendsen A.Spring Framework开发参考手册[EB/OL].http://www.jactiongroup.net/reference2/html/,2009-08-07.

[2]官全龙,姚国祥.基于Struts的应用架构的研究[J].计算机工程与设计,2005,26(12):25-27.

[3]甘林森.基于Struts+Hibernate+Spring框架的Web应用与实现[D].武汉:武汉理工大学,2008:37-38.

[4]宋波,刘杰,周传生.基于TopLink的J2EE数据持久层的实现[J].微电子学与计算机,2006,23(8):132-135.

[5]Craig Walls,Ryan Breidenbach.Spring in Action(中文版)[M].北京:人民邮电出版社,2006:163-164.

Research of Projects Acceptance System Based on Open-source Frameworks LIYuan-dan,XU Xiao-liang

(School of Computer,Hangzhou Dianzi University,Hangzhou Zhejiang310018,China)

In order to simplify the process of projects acceptancemanagement and achieve the scientificity,higheffective of theprojectmanagement,acceptancemanagementsystem solution based on Java EE open-source frameworkswas proposed.In the architecture design,we took the Spring2 framework as the core of system,integrating the Struts2 framework and ExtJS scripting framework as theWeb presentation layer,the TopLink framework as the Java persistence layer.Such,ahierarchical,loosely-coupled,p latform-independent and database-independent lightweightWeb frameworkwas formed successfully.Ithad been applied to the scienceand technology projectmanagementsystem of Zhejiang Province,improves theefficiency of project acceptance.So,the System hasagreat significance to improve themanagement level of China’s science and technology project.

Projectmanagement;inversion of control;loosely-coupled

TP393.09

A

1001-9146(2010)03-0042-05

2009-09-16

浙江省重大科技专项资助项目(C11102)

李元旦(1984-),男,浙江临海人,在读研究生,计算机软件与理论.

猜你喜欢
组件架构逻辑
基于FPGA的RNN硬件加速架构
刑事印证证明准确达成的逻辑反思
无人机智能巡检在光伏电站组件诊断中的应用
逻辑
创新的逻辑
功能架构在电子电气架构开发中的应用和实践
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
女人买买买的神逻辑
WebGIS架构下的地理信息系统构建研究