基于B/S+C/S模式的防洪调度决策支持系统研究及其应用

2010-06-05 09:43王国利梁国华吕涑琦
大连理工大学学报 2010年2期
关键词:决策支持系统防洪洪水

王国利, 彭 勇, 何 斌, 梁国华, 吕涑琦

(大连理工大学水利工程学院,辽宁大连 116024)

0 引 言

我国洪水发生频繁且洪灾损失巨大.由于水库在防洪减灾中的重要作用,建设水库洪水调度系统已经成为最重要的非工程措施.1998年水利部设立专项基金,开始在全国范围内选择重要的大型水库建设洪水调度系统[1、2];随着水、雨情自动测报系统的建设和计算机网络技术的迅速发展,已经有越来越多的水库建立了类似的系统,并且部分系统已经发挥了巨大作用[2、3].

目前国内水库防洪调度系统中应用最为广泛的是客户端/服务器(C lient/Server,即C/S)计算机网络模式[3~7].Internet/Intranet通信网络技术的爆炸性发展,使人们对信息化提出了更高的要求,不仅对传统的C/S洪水调度系统造成很大冲击,也使C/S系统的一些弊端不断地凸显出来,因此基于Web技术的浏览器/服务器(Brow ser/Server,即B/S)模式的防洪调度系统开始得到开发与应用[8~10],并显著提高了水库防洪调度的信息管理和决策水平.尽管B/S模式具有优化资源、易于维护、扩展性好、共享度高等优点,但C/S模式对数据管理更安全和高效、网络通信量更少等优点也是B/S模式无法比拟的,且用户对系统结构的偏好不一致,因此在今后相当长一段时间内,B/S和C/S模式的洪水调度系统都将同时存在和运行.然而,已开发的B/S或C/S模式的洪水调度系统均存在明显弊端,即系统开发人员几乎都是针对一种模式单独设计开发的,既便是已进行了有限集成的两系统也往往是将用户界面、业务逻辑和数据库紧紧地绑在一起,当用户需求发生变化时,代码的修改量非常大,尤其在两种模式相互转换时,都需要重新开发一个新系统,这样势必导致系统重复开发,造成大量的资源浪费[11].在两种模式同时存在和运行的条件下,如何做到既充分发挥两模式的优越性,满足不同用户对系统结构的需求,又能避免代码重写并使整个系统高效集成,是目前国内外急需解决却尚未深入探讨的问题,也是本文的研究重点.

本文以辽浑太流域防洪调度决策支持系统为工程背景,采用 Java编程设计研发基于B/S+C/S模式的水库群洪水调度系统.

1 系统架构设计和目标

防洪调度决策支持系统由多个子系统组成,主要包括系统时间设置、自动测报数据自动提取、PA计算、防洪形势分析、洪水预报、洪水调度、成果查询、数据维护、用户权限管理等几大模块.由于系统所依赖的信息具有广泛性、多源性和异构性,设计中既要考虑系统的总体结构,又要考虑各子系统的结构特点,同时还要考虑不同权限用户对系统的功能需求,以期获得可复用的决策信息支持平台.为适应用户在系统结构上的不同要求,各模块采用了4层模式进行开发,即显示层、业务逻辑层、持久层和数据层,使其在逻辑上各自独立,并且可单独实现.系统的拓扑结构如图1所示.

图1 洪水调度系统总体结构Fig.1 The general structure o f flood operating system

系统在预报库、调度库、实时库、系统库、遥测库、工情库、公用库等数据库的共同支持下运行,用户通过显示界面能完成洪水预报、洪水调度、遥测水雨情管理、基本信息查询以及数据库管理等功能的操作,而且各子系统的功能模块既能单独运行,又能与其他子系统交互运行.用户可同时采用Web浏览器和Java窗口两种方式与洪水预报调度系统交互,还增加了持久层来完成对各种数据的持久化工作,并为系统业务逻辑层提供服务,这是其他已建成的洪水调度系统所不具备的.

2 系统集成管理

为实现B/S与C/S模式的通用化,使交互显示页面和业务逻辑层最大程度地复用,系统开发应遵循先进性、实用性、可扩充性、可维护性、可靠性、安全保密、经济性、功能分解等原则[2],因此系统采用如图2所示的分层体系结构.

从图2可知,显示层有Web浏览器和Java窗口两种形式,B/S模式通过Web服务器调用JA pp let以网页形式显示,C/S模式采用JFrame以Java窗口形式显示.每种显示形式在和业务逻辑层交互时有不同的通信方式:当采用JA pp let作为前端显示界面时,与业务逻辑层交互用Servlet调用方式;而当采用Java窗口作为前端显示界面时,若与业务逻辑层在同一个终端时可直接调用,否则采用Socket调用方式[11].这样,当用户需要采用B/S结构时,只需要将交互页面加载到JApp let的子类上即可;而当需要用C/S结构时,只需要将交互页面加载到JFrame的子类上即可.其显著优点是在两种模式之间相互转化时,无需修改系统的其他部分,系统的整体结构也不需调整,系统各组件即可被移植、重用和扩展.

图2 洪水调度系统分层体系结构Fig.2 The hierarchical structure of flood operating system

水库洪水预报调度系统是一个多用户系统,不同的授权用户有不同的系统操作许可,如一般用户只能浏览一些基本信息,有的权限用户只能操作基本的预报调度而不能修改模型参数等,因此必须进行用户授权.为实现这一功能,采用了代理(Proxy)设计模式,就是在业务逻辑模块的基础上增加了“保护代理”模块,单独进行权限控制,这样把权限授理和具体业务逻辑分离开,有利于系统扩展和维护.

3 采用的关键技术

3.1 系统开发平台的选定

操作系统为W indow s、Linux,系统数据库为M ysql,编程语言采用Java,开发过程中还采用了JFreeChart、Hibernate、JSP 、XM L、H TM L 等技术,功能模块的显示主要采用树状菜单、工具条和图表等形式.

3.2 Hibernate框架的应用

已建成的水库洪水调度系统把业务逻辑层与数据库绑在一起,业务逻辑层不仅要负责与洪水预报调度相关的业务逻辑,还需负责与数据库交互来完成对预报调度相关数据的查询、更新、删除和增加等操作,这既增加了系统维护的难度,又降低了系统的通用性.ORM(object-relation mapping)模式能在对象与关系数据库之间建立映射关系,将数据访问细节封装,从而使数据库访问从具体的业务逻辑层分离,形成独立的数据持久层.H ibernate框架作为一款功能强大的非商业ORM中间件,支持目前几乎所有的主流数据库系统,并能按照Java的基本语义进行持久层开发,使用面向对象编程的思想操作数据库.利用 Hibernate技术将设计好的数据库关系表的字段映射为对象的属性,通过操作对象来达到操作关系表的目的,减少了繁琐且容易出错的JDBC操作,大大简化了开发工作,提高了防洪调度系统的可维护性、可扩展性和通用性.同时Hibernate还支持多种缓存机制,通过简单的配置,用户即可使用第三方的缓存服务,可显著提高数据库的操作效率[12].

3.3 桥(Bridge)模式的应用

桥模式主要用来分离抽象的接口和相应的实现,以保证它们在两个不同的类层次结构中能独立变化,并能动态结合.

当交互页面与通信模块交互时,需要判断采用哪种方式调用数据,若直接在交互页面中判断,虽做到了交互页面的复用,但程序的内聚性降低、耦合性增加,且程序臃肿,以后每次调用通信模块时都要进行判断,并且如果以后需要增加调用方式时,每个判断语句都需要修改,这不仅降低了运行效率,还使模块的独立性大大降低,并且类之间的公有方法及变量增加,严重妨碍系统的可维护性、经济性与安全性.为此,改进系统采用了如图3所示的桥模式.

图3 通信桥(Bridge)模式Fig.3 The Bridge Mode of communication

系统运行时,交互显示页面会根据上下文环境来调用“调用接口”的具体子类.如果需要其他没有实现的调用方式,程序员只需增加一个继承“调用接口”的具体子类,而其他类都无需修改,这充分体现了“开-闭”原则:对扩展开放,对修改关闭[13、14].

下面以调度功能模块为例来说明通过桥模式实现B/S与C/S结合的具体过程,其统一建模语言(UM L)静态图如图4所示.

图4 改进系统洪水调度模块的具体实现Fig.4 The accomp lishment of imp roved sub-flood operating system

ResfcConnDB 类、Basic InfoConnDB 类、RealDataConnDB类、M odelControlConnDB类均通过持久层与数据库交互,获取与洪水调度模块相关的数据;ResfcOperationFunction类定义了与洪水调度有关的所有业务逻辑运算;ResfcFunctionServlet类是为Web服务器提供的Servlet类,并且持有 ResfcOperationFunction类的实例;ResfcInterface通信接口封装了所有调用业务逻辑运算的方法,为调度页面与业务逻辑交互提供了桥梁;ResfcJPanel类是交互显示页面的中间容器,向洪水调度界面加载工具条、按钮和图表等;ResfcJApplet类或 ResfcJFrame类是顶层容器类,实现了ResfcInterface接口中的所有方法.如需增加其他显示方式时,程序员只需要增加一个实现了 ResfcInterface接口并持有ResfcJPanel实例的子类即可.

3.4 采用代理(Proxy)模式实现对用户的授权

与桥模式一样,代理模式也属于对象结构型模式.在代理模式中,实体定义了关键功能,而代理提供(或拒绝)对它的访问.使用代理模式的意图就是为其他对象提供一种代理以控制对这个对象的访问,以便于只有在确实需要这个对象时才对它进行创建和初始化.保护代理(Protection Proxy)控制对原始对象的访问,主要用于对象应该有不同的访问权限的时候.B/S+C/S洪水调度系统通常是多用户系统,必须约定不同授权用户的操作许可,如一般用户只能浏览一些基本信息,而不能修改数据等.如果直接修改原有方法,就会使得原有类的功能变得模糊和多元化,明显违背了“开-闭”原则;而用“保护代理”来调用原有方法并对方法产生的结果进行控制,这种弱连接使得防洪调度系统具有良好的可扩展性和可维护性,在一定程度上降低了系统的耦合度.下面以水位库容的用户权限管理为例,其 UM L静态图如图5所示.

U serA ttribute类是用户属性的封装;UserPermissions类描述了不同用户的权限;AbstractZV类是对水位库容关系的抽象类;ZV类和ZVProxy类是对AbstractZV类的继承.ZV类具体实现了对水位库容的各种操作;而ZVProxy类是先根据 UserA ttribute类和UserPerm issions类提供的具体信息判断用户的操作权限,再对水位库容关系进行相应的操作,如查询、修改等.

图5 保护代理模式的应用Fig.5 The app lication of Protection Proxy Mode

4 辽浑太流域防洪调度决策支持系统

辽河流域是中国七大流域之一,含辽河、浑河、太子河3条主要支流,流域面积21.96×104km2.辽河流域虽已具备较完备的单库水雨情自动测报、洪水预报与调度的非工程体系,但由于系统面向单个水库,造成了水库群之间、水库群与堤防之间,以及各水库与下游控制站洪水预报调度成果相分离,只有通过人工合成的方式才能分析流域的防洪形势和决策,工作繁琐且容易出错,不能满足库群与堤防联合预报调度模拟的自动、实时、快速、移动、多方案与集成性等要求.

为解决上述问题,受辽宁省防汛指挥部委托设计开发了辽浑太流域防洪调度决策支持系统.本系统的工作目标包括7座主要大型水库、3个主要水文区间和3个重要控制站.系统基于实时调度的雨水工情信息,根据未来多种可能的降雨预报信息,分析预报水库群与下游控制站的防洪形势及其发展过程,模拟生成库群与堤防的联合调度方案,最后采用多人多目标模糊决策模型生成流域防洪调度决策,供上级主管部门决策参考.

该系统采用了B/S+C/S模式,其B/S模式显示的主要界面如图6所示.

图6 防洪调度系统主界面Fig.6 Themain interface of flood operating system

5 结 语

本文针对目前我国洪水调度系统建设中普遍存在的重复开发、资源浪费的现状,研究了基于B/S+C/S模式的防洪调度决策支持系统,详细介绍了该系统的设计思想和采用的几个关键技术,并以“辽浑太流域防洪调度决策支持系统”为工程背景进行实际开发.实践中使用H ibernate增加数据持久层来管理数据并为业务逻辑层提供服务,从而使业务逻辑层和数据库分离开;使用桥模式将交互界面与具体的业务逻辑分离开;采用保护代理模式对用户权限进行管理,使权限管理与业务逻辑分离开.完成后的整个系统具有良好的可移植性、可扩展性和可维护性,改进系统解决了B/S与C/S两种模式相互转化时,都需要重新开发新系统的麻烦,对防洪调度系统建设具有一定的参考价值.

[1]陈森林,邱瑞田,万海斌,等.全国水库防洪调度决策支持系统[J].水力发电,2003,29(5):1-5

[2]王国利,林剑艺,周惠成.碧流河水库防洪决策支持系统集成研究[J] .大连理工大学学报,2004,44(5):714-718(WANG Guo-li,LIN Jian-yi,ZHOU Hui-cheng.Study of system-integration on flood-control decision-support system for Biliuhe Reservoir[J].Journal of Dalian University of Technology,2004,44(5):714-718)

[3]唐 勇,胡和平,田富强,等.鳌江流域洪水预报调度决策支持系统[J].水科学进展,2003,14(3):295-299

[4]郭生练,彭 辉,王金星,等.水库洪水调度系统设计与开发[J].水文,2001,21(3):4-7

[5]周惠成,梁国华,王本德,等.水库洪水调度系统通用化模板设计与开发[J].水科学进展,2002,13(1):42-48

[6]周惠成,梁国华,王本德,等.基于网络的水库群防洪调度系统应用研究[J].大连理工大学学报,2002,42(3):366-370(ZHOU Hui-cheng,LIANG Guo-hua,WANG Ben-de,etal.Study of multi-reservoir flood contro l system s based on netw ork[J].Journal of Dalian University of Technology,2002,42(3):366-370)

[7]包为民,钟平安,王船海,等.水库洪水调度系统预报子系统关键技术与功能开发[J] .中国水利,2001(4):34-44

[8]周惠成,彭 勇,梁国华.基于B/S模式的水库防洪调度系统的设计与开发研究[J].计算机应用研究,2005(6):150-151

[9]林凯荣,郭生练,陈 华,等.基于Web的实时水库洪水调度自动化系统[J].水电自动化与大坝监测,2005,29(2):70-75

[10]涂扬举,马光文,刘治理,等.基于三层B/S结构的水电站中长期优化调度系统[J].水力发电学报,2006,25(2):90-93

[11]彭 勇.中长期水文预报与水库群优化调度方法及其系统集成研究[D].大连:大连理工大学,2007

[12]周惠成,唐国磊,曹玉涛.水库洪水调度系统的持久层研究与设计[J].水文,2007,27(4):5-9

[13]阎 宏.Java与模式[M].北京:电子工业出版社,2002

[14]GAMM A E,HELM R,JOHNSON R,etal.Design Patterns:Elements of ReusableObject-Oriented Software [M]. Massachusetts:Addison-W esley Pub lishing Com pany Inc.,1995

猜你喜欢
决策支持系统防洪洪水
快速组装防洪挡水墙装置
夏季防洪防汛
护理临床决策支持系统的理论基础
面向知识转化的临床决策支持系统关键技术研究
公益宣传(防洪进行时)
2019年河南省防洪除涝保护统计汇总表(本年达到)
洪水时遇到电线低垂或折断该怎么办
临床决策支持系统应用于呼吸疾病的现状概述
电务维修决策支持系统研究
又见洪水(外二首)