趙春生
(中國(guó)水利水電科學(xué)研究院 北京中水科信息技術(shù)有限公司,北京 100038)
隨著水利科學(xué)的不斷發(fā)展壯大,水利科學(xué)已經(jīng)劃分為水工結(jié)構(gòu)工程、水利水電工程、水文水資源和水環(huán)境等許多分支學(xué)科,各個(gè)學(xué)科具有一定獨(dú)立性和完整性。水利科學(xué)中涉及到的技術(shù)術(shù)語(yǔ)和規(guī)范標(biāo)準(zhǔn)越來(lái)越多,越來(lái)越復(fù)雜。對(duì)于不同專業(yè)、不同領(lǐng)域的水利工作者而言,要了解不同領(lǐng)域中的水利術(shù)語(yǔ)和標(biāo)準(zhǔn),是一件十分困難的事情。雖然可以通過(guò)查閱文獻(xiàn)來(lái)獲得所需的技術(shù)術(shù)語(yǔ)或是規(guī)范標(biāo)準(zhǔn),但是這種傳統(tǒng)的辦法費(fèi)時(shí)費(fèi)力,準(zhǔn)確程度不高,相關(guān)的文獻(xiàn)獲得也比較困難,尤其是獲得最新的技術(shù)術(shù)語(yǔ)和標(biāo)準(zhǔn)規(guī)范幾乎不可能。這就使水利技術(shù)術(shù)語(yǔ)和規(guī)范標(biāo)準(zhǔn)很難被充分利用,使水利技術(shù)術(shù)語(yǔ)和規(guī)范標(biāo)準(zhǔn)的制定和實(shí)際應(yīng)用相脫節(jié),從某種程度上來(lái)說(shuō)影響了水利技術(shù)標(biāo)準(zhǔn)化的發(fā)展。
為滿足當(dāng)前水利科研及水利工作對(duì)水利技術(shù)術(shù)語(yǔ)和水利標(biāo)準(zhǔn)規(guī)范查詢檢索的需要,解決水利技術(shù)術(shù)語(yǔ)和水利標(biāo)準(zhǔn)規(guī)范查詢不便、數(shù)字化和結(jié)構(gòu)化程度較低的問(wèn)題,本文對(duì)水利技術(shù)術(shù)語(yǔ)和水利標(biāo)準(zhǔn)規(guī)范查詢進(jìn)行了研究,提出以網(wǎng)絡(luò)為依托建立水利技術(shù)術(shù)語(yǔ)與標(biāo)準(zhǔn)規(guī)范查詢系統(tǒng),將現(xiàn)有的水利技術(shù)術(shù)語(yǔ)標(biāo)準(zhǔn)和水利標(biāo)準(zhǔn)規(guī)范標(biāo)準(zhǔn)數(shù)字化、結(jié)構(gòu)化,以便更好的使用、共享和完善現(xiàn)有的水利技術(shù)術(shù)語(yǔ)標(biāo)準(zhǔn)和水利標(biāo)準(zhǔn)規(guī)范。
2.1 用戶登錄和注冊(cè) 登陸和注冊(cè)功能是系統(tǒng)的基本功能,以便于進(jìn)行訪問(wèn)控制和用戶控制,而且為了方便用戶訪問(wèn),此功能可以打開(kāi)或關(guān)閉。具體功能如下:(1)用戶注冊(cè)。用戶可以根據(jù)用戶注冊(cè)界面的提示輸入相應(yīng)的信息,用戶信息通過(guò)驗(yàn)證后就可以注冊(cè)成功;(2)用戶登錄。用戶可以輸入已經(jīng)注冊(cè)的用戶名和設(shè)定的密碼登陸水利技術(shù)查詢系統(tǒng);(3)用戶信息校驗(yàn)。對(duì)用戶輸入的個(gè)人信息(用戶名、密碼、郵箱等)按照相應(yīng)的規(guī)則進(jìn)行校驗(yàn);(4)出錯(cuò)提示。如果用戶輸入的個(gè)人信息有錯(cuò)誤,需要在界面上提示對(duì)應(yīng)的錯(cuò)誤;(5)開(kāi)關(guān)配置。登錄和注冊(cè)功能可以在配置文件中打開(kāi)或者關(guān)閉。
2.2 術(shù)語(yǔ)的查詢和展示 術(shù)語(yǔ)的查詢和展示是系統(tǒng)的主要功能,用戶可以根據(jù)術(shù)語(yǔ)的中文名稱或者英文名稱進(jìn)行模糊搜索,系統(tǒng)會(huì)返回所有符合條件的術(shù)語(yǔ)。具體功能如下:(1)術(shù)語(yǔ)查詢。用戶可以鍵入關(guān)鍵字,后臺(tái)根據(jù)關(guān)鍵字到數(shù)據(jù)庫(kù)中進(jìn)行模糊搜索,返回查詢結(jié)果;(2)術(shù)語(yǔ)列表展示。根據(jù)術(shù)語(yǔ)查詢的返回結(jié)果以表格的方式展示中文名稱、英文名稱、術(shù)語(yǔ)定義和參考標(biāo)準(zhǔn)信息;(3)查詢結(jié)果統(tǒng)計(jì)。根據(jù)術(shù)語(yǔ)查詢的返回結(jié)果長(zhǎng)度,在界面上提示符合查詢條件的術(shù)語(yǔ)個(gè)數(shù);(4)術(shù)語(yǔ)屬性提示。當(dāng)鼠標(biāo)移動(dòng)到術(shù)語(yǔ)列表的相應(yīng)屬性時(shí),界面會(huì)展示相應(yīng)的提示信息(Tooltip);(5)超長(zhǎng)則顯示省略號(hào)。如果術(shù)語(yǔ)屬性的長(zhǎng)度超出表格的寬度,則超出的部分以省略號(hào)代替;(6)術(shù)語(yǔ)詳細(xì)信息展示。用戶可以點(diǎn)擊術(shù)語(yǔ)列表,查看術(shù)語(yǔ)的詳細(xì)信息(中文名稱、英文名稱、術(shù)語(yǔ)定義、參考標(biāo)準(zhǔn)、章節(jié)條款);(7)術(shù)語(yǔ)列表下載。用戶可以下載當(dāng)前的術(shù)語(yǔ)列表,并另存為Excel文件至用戶電腦硬盤(pán)中。
2.3 術(shù)語(yǔ)評(píng)論 術(shù)語(yǔ)評(píng)論功能主要是為了收集用戶對(duì)于術(shù)語(yǔ)標(biāo)準(zhǔn)的意見(jiàn)反饋,為標(biāo)準(zhǔn)的修訂和升級(jí)提供參考依據(jù)。具體功能如下:(1)評(píng)論瀏覽。在術(shù)語(yǔ)詳細(xì)信息展示界面中展示當(dāng)前術(shù)語(yǔ)的評(píng)論列表(用戶名、評(píng)論時(shí)間、評(píng)論內(nèi)容);(2)發(fā)表評(píng)論。在術(shù)語(yǔ)詳細(xì)信息展示界面中用戶可以針對(duì)當(dāng)前的術(shù)語(yǔ)發(fā)表評(píng)論;(3)評(píng)論權(quán)限。只有登陸用戶才能發(fā)表評(píng)論;(4)開(kāi)關(guān)配置。術(shù)語(yǔ)評(píng)論功能可以在配置文件中打開(kāi)或者關(guān)閉。
3.1 MVC設(shè)計(jì)模式 MVC英文即Model-View-Controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成3個(gè)層——模型層、視圖層、控制層。
視圖(View)代表用戶交互界面,對(duì)于Web應(yīng)用來(lái)說(shuō),可以概括為HTML界面,但有可能為XHTML、XML和Applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖,MVC設(shè)計(jì)模式對(duì)于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請(qǐng)求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。比如一個(gè)訂單的視圖只接受來(lái)自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請(qǐng)求傳遞給控制和模型。
模型(Model)就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過(guò)程對(duì)其它層來(lái)說(shuō)是黑箱操作,模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計(jì)可以說(shuō)是MVC最主要的核心。目前流行的EJB模型就是一個(gè)典型的應(yīng)用例子,它從應(yīng)用技術(shù)實(shí)現(xiàn)的角度對(duì)模型做了進(jìn)一步的劃分,以便充分利用現(xiàn)有的組件,但它不能作為應(yīng)用設(shè)計(jì)模型的框架。它僅僅說(shuō)明按這種模型設(shè)計(jì)就可以利用某些技術(shù)組件,從而減少了技術(shù)上的困難,可以專注于業(yè)務(wù)模型的設(shè)計(jì)。MVC設(shè)計(jì)模式表明,把應(yīng)用的模型按一定的規(guī)則抽取出來(lái),抽取的層次很重要,這也是判斷系統(tǒng)結(jié)構(gòu)是否優(yōu)秀的設(shè)計(jì)依據(jù)。抽象與具體不能隔得太遠(yuǎn),也不能太近。MVC并沒(méi)有提供模型的設(shè)計(jì)方法,而只是組織管理這些模型,以便于模型的重構(gòu)和提高重用性。如果用面向?qū)ο缶幊虂?lái)做比喻,MVC定義了一個(gè)頂級(jí)類(lèi),它的子類(lèi)必須要做這些,但無(wú)法限制它只做這些,這點(diǎn)對(duì)于系統(tǒng)開(kāi)發(fā)非常有益。
業(yè)務(wù)模型還有一個(gè)很重要的模型即數(shù)據(jù)模型。數(shù)據(jù)模型主要指實(shí)體對(duì)象的數(shù)據(jù)保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)獲取訂單。設(shè)計(jì)者可以將這個(gè)模型單獨(dú)列出,所有有關(guān)數(shù)據(jù)庫(kù)的操作只限制在該模型中。
控制(Controller)可以理解為從用戶接收請(qǐng)求,將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。劃分控制層的作用也很明顯,它清楚地告訴用戶,這是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請(qǐng)求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點(diǎn)擊一個(gè)連接,控制層接受請(qǐng)求后,并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模型。
模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過(guò)某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映出這些變化。因此,無(wú)論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種模型的變化—傳播機(jī)制。模型、視圖、控制器3者之間的關(guān)系和各自的主要功能,如圖1所示。
圖1 MVC結(jié)構(gòu)
3.2 數(shù)據(jù)庫(kù)設(shè)計(jì) 該系統(tǒng)后臺(tái)采用Oracle數(shù)據(jù)庫(kù),針對(duì)水利技術(shù)術(shù)語(yǔ)標(biāo)準(zhǔn)、水利技術(shù)術(shù)語(yǔ)定義、技術(shù)術(shù)語(yǔ)分類(lèi)目錄、技術(shù)術(shù)語(yǔ)評(píng)論和系統(tǒng)用戶,分別創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)表模型,不僅方便數(shù)據(jù)的管理和查詢,而且便于系統(tǒng)的擴(kuò)展。整個(gè)數(shù)據(jù)庫(kù)以水利技術(shù)術(shù)語(yǔ)數(shù)據(jù)表為核心,通過(guò)術(shù)語(yǔ)標(biāo)準(zhǔn)表和術(shù)語(yǔ)分類(lèi)表對(duì)術(shù)語(yǔ)進(jìn)行分類(lèi)管理,數(shù)據(jù)表之間通過(guò)外鍵關(guān)聯(lián),針對(duì)查詢字段建立索引以提高查詢的效率和準(zhǔn)確率,可以滿足系統(tǒng)的查詢需求。數(shù)據(jù)庫(kù)設(shè)計(jì)如圖2所示。
圖2 數(shù)據(jù)庫(kù)E-R
系統(tǒng)的服務(wù)器端表示層采用了目前最流行的Struts框架,但是僅僅依靠Struts框架并不能很好的完成本系統(tǒng)的構(gòu)架問(wèn)題,因?yàn)閷W⒂诒硎緦拥腟truts框架對(duì)于J2EE模型來(lái)說(shuō)只是一層的實(shí)現(xiàn),所以本系統(tǒng)還整合了Hibernate持久層框架和Spring框架來(lái)實(shí)現(xiàn)整個(gè)系統(tǒng)的構(gòu)架。其中Hibernate持久層框架對(duì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)進(jìn)行封裝,以O(shè)/R Mapping實(shí)現(xiàn)了POJO和數(shù)據(jù)庫(kù)表之間的映射,并在Hibernate中完成SQL語(yǔ)句的運(yùn)行。Spring框架主要負(fù)責(zé)業(yè)務(wù)邏輯接口和業(yè)務(wù)邏輯實(shí)現(xiàn)類(lèi)的解耦工作。上述3種框架通過(guò)Struts緊密的結(jié)合在一起,每種框架都明確自己的職責(zé),確保系統(tǒng)具有良好的穩(wěn)定性和擴(kuò)展性,下面具體說(shuō)明上述3種框架的工作內(nèi)容。系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)結(jié)構(gòu)
4.1 服務(wù)器端表示層框架Struts Struts框架從出現(xiàn)發(fā)展到現(xiàn)在已經(jīng)成為服務(wù)器端表示層的經(jīng)典MVC框架,它以清晰的構(gòu)架,簡(jiǎn)單的使用,完備的文檔成為表示層解決方案的首選。在本系統(tǒng)中,服務(wù)器端表示層框架Struts完成如下工作:(1)管理請(qǐng)求和響應(yīng);(2)提供控制器來(lái)完成頁(yè)面流轉(zhuǎn);(3)完成業(yè)務(wù)邏輯的委托;(4)返回到客戶端顯示頁(yè)面。
4.2 業(yè)務(wù)邏輯層框架Spring Spring框架是符合J2EE標(biāo)準(zhǔn)的一組框架,除了支持J2EE框架的標(biāo)準(zhǔn)技術(shù)外,Spring框架還提供了更好的額外功能。它提供了一個(gè)IOC容器來(lái)實(shí)行依賴注入,保證程序員針對(duì)接口編成,保證各層之間的耦合度降到最低。在本系統(tǒng)中,業(yè)務(wù)邏輯層框架Spring完成如下工作:(1)為服務(wù)器端的表示層提供松散的耦合;(2)處理真實(shí)的JavaBean;(3)協(xié)調(diào)各種業(yè)務(wù)邏輯對(duì)象之間的依賴關(guān)系;(4)為持久層和業(yè)務(wù)邏輯層之間提供松散耦合;(5)實(shí)現(xiàn)持久層的業(yè)務(wù)邏輯。
4.3 持久層框架Hibernate Hibernate框架是最優(yōu)秀的持久層框架之一,它為JAVA應(yīng)用提供了一個(gè)高效的O/R Mapping框架。Application通過(guò)PO作為Hibernate框架的橋梁,而PO會(huì)根據(jù)Hibernate的配置文件找到映射文件,并通過(guò)映射文件與數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)進(jìn)行運(yùn)行時(shí)的映射。本系統(tǒng)的持久層框架Hibernate完成如下工作:(1)對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢,得到持久化對(duì)象PO;(2)對(duì)數(shù)據(jù)庫(kù)進(jìn)行添加、刪除、修改的動(dòng)作并以PO來(lái)進(jìn)行。
本系統(tǒng)一方面為用戶提供水利技術(shù)術(shù)語(yǔ)的在線查詢服務(wù),促進(jìn)水利技術(shù)術(shù)語(yǔ)標(biāo)準(zhǔn)的推廣和使用;另一方面也可以收集用戶反饋,為水利技術(shù)術(shù)語(yǔ)標(biāo)準(zhǔn)的修訂提供參考依據(jù)。通過(guò)該系統(tǒng)的推廣和使用可給水利標(biāo)準(zhǔn)的管理和宣傳貫徹帶來(lái)新的思路,但今后還有很多工作要做。
(1)提高水利技術(shù)術(shù)語(yǔ)的信息化程度。目前水利信息化建設(shè)正在穩(wěn)步開(kāi)展,水利技術(shù)術(shù)語(yǔ)是水利信息化建設(shè)的重要基礎(chǔ),應(yīng)該在水利信息化建設(shè)的背景下,加強(qiáng)水利技術(shù)術(shù)語(yǔ)的信息化程度,開(kāi)發(fā)一系列的配套軟件和在線資源。
(2)建立共享機(jī)制、統(tǒng)一管理。目前水利技術(shù)術(shù)語(yǔ)基本上是孤立的,缺乏規(guī)范性指導(dǎo)和共享機(jī)制,給水利技術(shù)術(shù)語(yǔ)的統(tǒng)一管理造成困難。水利技術(shù)術(shù)語(yǔ)的建設(shè)工作是一項(xiàng)持續(xù)性的工作,應(yīng)該借助信息化技術(shù)加強(qiáng)水利技術(shù)術(shù)語(yǔ)的共享和修訂,使其滿足水利行業(yè)不斷發(fā)展的需要。
[1]方巍,孫涌,張書(shū)奎.整合Struts和Hibernate的Web系統(tǒng)應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2005(12):39-41.
[2]宋秀琴,侯殿昆,方中純.基于Struts和Hibernate的Web應(yīng)用的構(gòu)建[J].網(wǎng)絡(luò)與通信,2005,21(3):125-127.
[3]朱慶紅,吳宇紅.一種對(duì)象/關(guān)系映射框架的分析和應(yīng)用[J].電子科技,2004(1):54-60.
[4]高昂,衛(wèi)文學(xué).基于Hibernate與Struts框架的數(shù)據(jù)持久化應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用,2005,25(12):31-35.
[5]宋秀琴,侯殿昆,方中純.基于Struts和Hibernate的Web應(yīng)用的構(gòu)建[J].微計(jì)算機(jī)信息,2005(11):125-127.
中國(guó)水利水電科學(xué)研究院學(xué)報(bào)2010年2期