水利技术标准术语查询系统的设计与实现
2010-05-21赵春生
赵春生
(中国水利水电科学研究院 北京中水科信息技术有限公司,北京 100038)
1 研究背景
随着水利科学的不断发展壮大,水利科学已经划分为水工结构工程、水利水电工程、水文水资源和水环境等许多分支学科,各个学科具有一定独立性和完整性。水利科学中涉及到的技术术语和规范标准越来越多,越来越复杂。对于不同专业、不同领域的水利工作者而言,要了解不同领域中的水利术语和标准,是一件十分困难的事情。虽然可以通过查阅文献来获得所需的技术术语或是规范标准,但是这种传统的办法费时费力,准确程度不高,相关的文献获得也比较困难,尤其是获得最新的技术术语和标准规范几乎不可能。这就使水利技术术语和规范标准很难被充分利用,使水利技术术语和规范标准的制定和实际应用相脱节,从某种程度上来说影响了水利技术标准化的发展。
为满足当前水利科研及水利工作对水利技术术语和水利标准规范查询检索的需要,解决水利技术术语和水利标准规范查询不便、数字化和结构化程度较低的问题,本文对水利技术术语和水利标准规范查询进行了研究,提出以网络为依托建立水利技术术语与标准规范查询系统,将现有的水利技术术语标准和水利标准规范标准数字化、结构化,以便更好的使用、共享和完善现有的水利技术术语标准和水利标准规范。
2 系统定位和功能分析
2.1 用户登录和注册 登陆和注册功能是系统的基本功能,以便于进行访问控制和用户控制,而且为了方便用户访问,此功能可以打开或关闭。具体功能如下:(1)用户注册。用户可以根据用户注册界面的提示输入相应的信息,用户信息通过验证后就可以注册成功;(2)用户登录。用户可以输入已经注册的用户名和设定的密码登陆水利技术查询系统;(3)用户信息校验。对用户输入的个人信息(用户名、密码、邮箱等)按照相应的规则进行校验;(4)出错提示。如果用户输入的个人信息有错误,需要在界面上提示对应的错误;(5)开关配置。登录和注册功能可以在配置文件中打开或者关闭。
2.2 术语的查询和展示 术语的查询和展示是系统的主要功能,用户可以根据术语的中文名称或者英文名称进行模糊搜索,系统会返回所有符合条件的术语。具体功能如下:(1)术语查询。用户可以键入关键字,后台根据关键字到数据库中进行模糊搜索,返回查询结果;(2)术语列表展示。根据术语查询的返回结果以表格的方式展示中文名称、英文名称、术语定义和参考标准信息;(3)查询结果统计。根据术语查询的返回结果长度,在界面上提示符合查询条件的术语个数;(4)术语属性提示。当鼠标移动到术语列表的相应属性时,界面会展示相应的提示信息(Tooltip);(5)超长则显示省略号。如果术语属性的长度超出表格的宽度,则超出的部分以省略号代替;(6)术语详细信息展示。用户可以点击术语列表,查看术语的详细信息(中文名称、英文名称、术语定义、参考标准、章节条款);(7)术语列表下载。用户可以下载当前的术语列表,并另存为Excel文件至用户电脑硬盘中。
2.3 术语评论 术语评论功能主要是为了收集用户对于术语标准的意见反馈,为标准的修订和升级提供参考依据。具体功能如下:(1)评论浏览。在术语详细信息展示界面中展示当前术语的评论列表(用户名、评论时间、评论内容);(2)发表评论。在术语详细信息展示界面中用户可以针对当前的术语发表评论;(3)评论权限。只有登陆用户才能发表评论;(4)开关配置。术语评论功能可以在配置文件中打开或者关闭。
3 系统设计
3.1 MVC设计模式 MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成3个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model)就是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。它仅仅说明按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难,可以专注于业务模型的设计。MVC设计模式表明,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断系统结构是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的设计方法,而只是组织管理这些模型,以便于模型的重构和提高重用性。如果用面向对象编程来做比喻,MVC定义了一个顶级类,它的子类必须要做这些,但无法限制它只做这些,这点对于系统开发非常有益。
业务模型还有一个很重要的模型即数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,从数据库获取订单。设计者可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告诉用户,这是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映出这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化—传播机制。模型、视图、控制器3者之间的关系和各自的主要功能,如图1所示。
图1 MVC结构
3.2 数据库设计 该系统后台采用Oracle数据库,针对水利技术术语标准、水利技术术语定义、技术术语分类目录、技术术语评论和系统用户,分别创建对应的数据表模型,不仅方便数据的管理和查询,而且便于系统的扩展。整个数据库以水利技术术语数据表为核心,通过术语标准表和术语分类表对术语进行分类管理,数据表之间通过外键关联,针对查询字段建立索引以提高查询的效率和准确率,可以满足系统的查询需求。数据库设计如图2所示。
图2 数据库E-R
4 系统框架设计与实现
系统的服务器端表示层采用了目前最流行的Struts框架,但是仅仅依靠Struts框架并不能很好的完成本系统的构架问题,因为专注于表示层的Struts框架对于J2EE模型来说只是一层的实现,所以本系统还整合了Hibernate持久层框架和Spring框架来实现整个系统的构架。其中Hibernate持久层框架对数据库表结构进行封装,以O/R Mapping实现了POJO和数据库表之间的映射,并在Hibernate中完成SQL语句的运行。Spring框架主要负责业务逻辑接口和业务逻辑实现类的解耦工作。上述3种框架通过Struts紧密的结合在一起,每种框架都明确自己的职责,确保系统具有良好的稳定性和扩展性,下面具体说明上述3种框架的工作内容。系统结构如图3所示。
图3 系统结构
4.1 服务器端表示层框架Struts Struts框架从出现发展到现在已经成为服务器端表示层的经典MVC框架,它以清晰的构架,简单的使用,完备的文档成为表示层解决方案的首选。在本系统中,服务器端表示层框架Struts完成如下工作:(1)管理请求和响应;(2)提供控制器来完成页面流转;(3)完成业务逻辑的委托;(4)返回到客户端显示页面。
4.2 业务逻辑层框架Spring Spring框架是符合J2EE标准的一组框架,除了支持J2EE框架的标准技术外,Spring框架还提供了更好的额外功能。它提供了一个IOC容器来实行依赖注入,保证程序员针对接口编成,保证各层之间的耦合度降到最低。在本系统中,业务逻辑层框架Spring完成如下工作:(1)为服务器端的表示层提供松散的耦合;(2)处理真实的JavaBean;(3)协调各种业务逻辑对象之间的依赖关系;(4)为持久层和业务逻辑层之间提供松散耦合;(5)实现持久层的业务逻辑。
4.3 持久层框架Hibernate Hibernate框架是最优秀的持久层框架之一,它为JAVA应用提供了一个高效的O/R Mapping框架。Application通过PO作为Hibernate框架的桥梁,而PO会根据Hibernate的配置文件找到映射文件,并通过映射文件与数据库中的表结构进行运行时的映射。本系统的持久层框架Hibernate完成如下工作:(1)对数据库进行查询,得到持久化对象PO;(2)对数据库进行添加、删除、修改的动作并以PO来进行。
5 结论
本系统一方面为用户提供水利技术术语的在线查询服务,促进水利技术术语标准的推广和使用;另一方面也可以收集用户反馈,为水利技术术语标准的修订提供参考依据。通过该系统的推广和使用可给水利标准的管理和宣传贯彻带来新的思路,但今后还有很多工作要做。
(1)提高水利技术术语的信息化程度。目前水利信息化建设正在稳步开展,水利技术术语是水利信息化建设的重要基础,应该在水利信息化建设的背景下,加强水利技术术语的信息化程度,开发一系列的配套软件和在线资源。
(2)建立共享机制、统一管理。目前水利技术术语基本上是孤立的,缺乏规范性指导和共享机制,给水利技术术语的统一管理造成困难。水利技术术语的建设工作是一项持续性的工作,应该借助信息化技术加强水利技术术语的共享和修订,使其满足水利行业不断发展的需要。
[1]方巍,孙涌,张书奎.整合Struts和Hibernate的Web系统应用[J].计算机与现代化,2005(12):39-41.
[2]宋秀琴,侯殿昆,方中纯.基于Struts和Hibernate的Web应用的构建[J].网络与通信,2005,21(3):125-127.
[3]朱庆红,吴宇红.一种对象/关系映射框架的分析和应用[J].电子科技,2004(1):54-60.
[4]高昂,卫文学.基于Hibernate与Struts框架的数据持久化应用研究[J].计算机应用,2005,25(12):31-35.
[5]宋秀琴,侯殿昆,方中纯.基于Struts和Hibernate的Web应用的构建[J].微计算机信息,2005(11):125-127.