李 琳 郭 易 蓋優(yōu)普 武 煒 朱吉生
(中國水利水電科學(xué)研究院,北京 100038)
水利信息元數(shù)據(jù)的相關(guān)標(biāo)準(zhǔn)是水利信息交換、共享,以及數(shù)據(jù)中心數(shù)據(jù)管理的關(guān)鍵性技術(shù)標(biāo)準(zhǔn)[1]。水利部于2010年頒布了《水利信息核心元數(shù)據(jù)》(SL473-2010)[2]技術(shù)標(biāo)準(zhǔn)。元數(shù)據(jù)標(biāo)準(zhǔn)不同于傳統(tǒng)的技術(shù)標(biāo)準(zhǔn),不可能通過印刷版本的頒布,以及傳統(tǒng)的會議、培訓(xùn)實施標(biāo)準(zhǔn)的宣貫。在國外,這類信息技術(shù)標(biāo)準(zhǔn)大都需要研發(fā)相應(yīng)的軟件工具,借助軟件工具開展標(biāo)準(zhǔn)化的信息管理。而在我國,在水利行業(yè)尚未實現(xiàn)采用軟件工具來進(jìn)行元數(shù)據(jù)管理和推進(jìn)元數(shù)據(jù)標(biāo)準(zhǔn)的宣慣。
鑒于元數(shù)據(jù)的制作管理的復(fù)雜性,為進(jìn)一步推進(jìn) SL473-2010的實施,同時方便元數(shù)據(jù)的管理,通過信息技術(shù),開發(fā)一套符合SL473-2010的水利信息核心元數(shù)據(jù)編制工具。這在水利行業(yè)標(biāo)準(zhǔn)中是初次嘗試,為貫徹實施元數(shù)據(jù)標(biāo)準(zhǔn)提供技術(shù)支撐尤為必要。本文以 SL473-2010為依據(jù),使用目前流行的 Flex技術(shù)開發(fā)水利核心元數(shù)據(jù)管理系統(tǒng),實現(xiàn)對核心元數(shù)據(jù)的制作、查詢、修改、導(dǎo)入/導(dǎo)出等功能,以提高元數(shù)據(jù)管理的準(zhǔn)確性和效率。同時,實現(xiàn)了B/S(Browser/Server)和C/S(Client/Server)終端的統(tǒng)一,大大提高了開發(fā)人員的開發(fā)和部署效率,極大的方便了專業(yè)人員在不同環(huán)境下進(jìn)行核心元數(shù)據(jù)的管理,對水利信息核心元數(shù)據(jù)標(biāo)準(zhǔn)的推廣具有重要意義。
本系統(tǒng)采用富客戶應(yīng)用(Rich Internet Application,簡稱RIA)[3]中的Flex 技術(shù)框架實現(xiàn)。Macromedia Flex 是目前開發(fā)RIA的最流行的一種解決方案,通過 Flex技術(shù)和相關(guān)服務(wù)器端技術(shù),開發(fā)者能夠賦予Flash 與后端服務(wù)器交互的能力。
Flex 以ActionScript、MXML和擴展類庫作為基礎(chǔ),編譯生成SWF 格式文件(Flash文件格式),用戶訪問Flex RIA 應(yīng)用時需預(yù)先安裝Flash Player 作為ActionScript 的解析引擎。同時,F(xiàn)lex 框架生成的SWF 格式文件,能運行于各種安裝了Flash Player的操作系統(tǒng)上,具有良好的通用性和跨平臺性。而且,F(xiàn)lash Player 的強大解析能力為 Flex 應(yīng)用程序提供了更強大的交互和動畫能力。
按照“分層設(shè)計、模塊構(gòu)建”的思想[4設(shè)計總體框架,系統(tǒng)整體框架分為三層,分別為數(shù)據(jù)層、服務(wù)層和表示層,如圖1所示。
數(shù)據(jù)層用來存取元數(shù)據(jù),本系統(tǒng)采用XML文件庫的形式進(jìn)行存取。服務(wù)層是整個體系結(jié)構(gòu)應(yīng)用的核心,用來實現(xiàn)系統(tǒng)應(yīng)用的功能,通過ActionScript語言來實現(xiàn)。表示層是系統(tǒng)展示層,通過Flex來實現(xiàn),可以實現(xiàn)應(yīng)用程序客戶端和網(wǎng)頁客戶端的同步部署和更新。

圖1 系統(tǒng)架構(gòu)
系統(tǒng)按照SL473-2010[2]技術(shù)標(biāo)準(zhǔn),其數(shù)據(jù)結(jié)構(gòu)由1個數(shù)據(jù)實體和8個元數(shù)據(jù)子集構(gòu)成。其中,標(biāo)識信息為必選子集,內(nèi)容信息、數(shù)據(jù)質(zhì)量信息、覆蓋范圍信息、限制信息、參照系信息、維護(hù)信息和分發(fā)信息為可選子集。數(shù)據(jù)結(jié)構(gòu)如圖2所示。

圖2 元數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)集采用XML語言進(jìn)行數(shù)據(jù)描述,共設(shè)計五個屬性:分別為 name、value、id、style、edit和 del,采用ActionScript 語言對XML節(jié)點進(jìn)行增刪改操作。按照 SL473-2010[2]技術(shù)要求數(shù)據(jù)集XML屬性如表1所示。
依照水利核心元數(shù)據(jù)的內(nèi)容,將系統(tǒng)主要分為八個模塊,分別為:標(biāo)識信息、內(nèi)容信息、數(shù)據(jù)質(zhì)量信息、覆蓋范圍信息、限制信息、參照系信息、維護(hù)信息和分發(fā)信息模塊。幾個模塊彼此獨立,互不干擾。
2.3.1 模塊工作流程
在主要的八個模塊中,標(biāo)識信息模塊為必選模塊,其他模塊可選。其中,標(biāo)識信息、數(shù)據(jù)質(zhì)量信息、參照系信息、內(nèi)容信息、覆蓋范圍信息和限制信息模塊可以重復(fù)調(diào)用,維護(hù)信息和分發(fā)信息模塊只能調(diào)用一次。主要模塊工作流程如圖3所示。

表1 元數(shù)據(jù)集屬性說明

圖3 模塊工作流程
2.3.2 模塊功能描述
(1)標(biāo)識信息模塊。標(biāo)識信息模塊為系統(tǒng)必選模塊,它完成唯一標(biāo)識數(shù)據(jù)信息的功能,標(biāo)識有關(guān)資源的基本信息,包括名稱、日期、版本、摘要、目的、關(guān)鍵詞、狀況和聯(lián)系方式等,其中聯(lián)系人和/或單位、數(shù)據(jù)獲取途徑、瀏覽圖、空間分辨率為四個子模塊。以全國主要水文站實時水情數(shù)據(jù)集元數(shù)據(jù)為例,標(biāo)識信息模塊主要內(nèi)容如圖4所示。

圖4 標(biāo)識信息模塊
(2)數(shù)據(jù)質(zhì)量信息模塊。數(shù)據(jù)質(zhì)量信息模塊為系統(tǒng)可選模塊,完成對數(shù)據(jù)資源質(zhì)量的總體評價的功能,包括范圍、數(shù)據(jù)質(zhì)量報告和數(shù)據(jù)志三個子模塊。數(shù)據(jù)質(zhì)量信息模塊主要內(nèi)容如圖5所示。
(3)維護(hù)信息模塊。維護(hù)信息模塊為系統(tǒng)可選模塊,完成有關(guān)資源的更新頻率及更新范圍的信息功能,包括聯(lián)系人信息子模塊。維護(hù)信息模塊主要內(nèi)容如圖6所示。
(4)參照系信息模塊。參照系信息模塊為系統(tǒng)可選模塊,完成對數(shù)據(jù)集使用的空間參照系和時間參照系的說明功能。參照系信息模塊主要內(nèi)容如圖7所示。
(5)內(nèi)容信息模塊。內(nèi)容信息模塊為可選模塊,完成提供數(shù)據(jù)內(nèi)容特征的描述信息功能。內(nèi)容信息模塊主要內(nèi)容如圖8所示。

圖5 數(shù)據(jù)質(zhì)量信息模塊

圖6 維護(hù)信息模塊

圖7 參照系信息模塊

圖8 內(nèi)容信息模塊
(6)覆蓋范圍信息模塊。覆蓋范圍信息模塊為可選模塊,完成數(shù)據(jù)資源所涉及空間覆蓋范圍、時間覆蓋范圍的信息功能。分為時間覆蓋范圍、地理覆蓋范圍和垂向覆蓋范圍三個覆蓋范圍。覆蓋范圍信息模塊主要內(nèi)容如圖9所示。

圖9 覆蓋范圍信息模塊
(7)分發(fā)信息模塊。分發(fā)信息模塊在系統(tǒng)中只能出現(xiàn)一次,為可選模塊。完成有關(guān)資源如何分發(fā)和獲取的信息功能。包含分發(fā)者和在線信息。分發(fā)信息模塊主要內(nèi)容如圖10所示。

圖10 分發(fā)信息模塊
(8)限制信息模塊。限制信息模塊為可選模塊,完成訪問資源和使用資源的限制信息功能。限制信息主要內(nèi)容如圖11所示。

圖11 限制信息模塊
系統(tǒng)使用Flex Builder 作為開發(fā)工具,語言使用ActionScript,數(shù)據(jù)結(jié)構(gòu)采用XML實現(xiàn)。
系統(tǒng)開發(fā)主要使用了Flex Builder 軟件的AdvancedDatagrid組件[5],AdvancedDatagrid可以采用XML作為數(shù)據(jù)源,并且能在組件中靈活實現(xiàn)XML數(shù)據(jù)的增加、修改和刪除等操作。
主要代碼實現(xiàn)如下:

其中:designViewDataType 表示數(shù)據(jù)的顯示形式,在這里designViewDataType ="tree",表示樹形顯示。dataProvider為AdvancedDatagrid的數(shù)據(jù)源,editable="true"表示AdvancedDatagrid列數(shù)據(jù)可進(jìn)行修改操作。
顯示效果如圖12所示。

圖12 系統(tǒng)AdvancedDatagrid組件應(yīng)用
(1)增加數(shù)據(jù)。主要通過AdvancedDatagrid的selectedItem屬性獲取要增加數(shù)據(jù)的位置,通過ActionScript中的prependChild()、insertChild-Before()、insertChildAfter()、appendChild()方法來進(jìn)行XML數(shù)據(jù)的插入。
(2)刪除數(shù)據(jù)。主要通過AdvancedDatagrid的selectedItem屬性獲取要增加數(shù)據(jù)的位置,通過ActionScript中的delete()方法刪除XML數(shù)據(jù)。
(3)修改數(shù)據(jù)。使用AdvancedDataGrid 的項目編輯器功能實現(xiàn)數(shù)據(jù)編輯修改功能。利用DataGridColumn的itemEditor屬性,直接為屬性賦值,直接指定可視化控件類為項目編輯器。此項目使用的編輯器為TextInput和ComboBox。
對于一般軟件開發(fā)技術(shù)來說,如果想要將一個BS 應(yīng)用改造成為一個CS 應(yīng)用,必須對整個應(yīng)用進(jìn)行重新設(shè)計和開發(fā),其復(fù)雜程度和成本都是無法估計的。但是,對于Flex 技術(shù)來說,它通過虛擬機的形式實現(xiàn)跨平臺的Web應(yīng)用,AIR技術(shù)則可以通過對Flex 應(yīng)用代碼進(jìn)行極少量的修改,將Flex開發(fā)的Web應(yīng)用移植到桌面,而且為移植的應(yīng)用提供了比Web應(yīng)用更為多樣的接口和本地訪問能力,從而為大批量操作效率的提高提供了可能。
Flex開發(fā)Web應(yīng)用的主程序體如下代碼:

如果將主程序移植到桌面應(yīng)用,僅僅需要在此基礎(chǔ)上做簡單的修改,修改后的代碼如下:

本文介紹了水利元數(shù)據(jù)管理系統(tǒng)的設(shè)計和實現(xiàn)過程,系統(tǒng)采用XML和Flex技術(shù)將水利元數(shù)據(jù)和管理流程有效的結(jié)合起來,實現(xiàn)數(shù)據(jù)管理、導(dǎo)入和導(dǎo)出等豐富功能,提高元數(shù)據(jù)編制的質(zhì)量和效率。
本文設(shè)計實現(xiàn)的水利元數(shù)據(jù)管理系統(tǒng)是水利技術(shù)標(biāo)準(zhǔn)在信息化領(lǐng)域的初次嘗試,目前只限于對xml文件和文本文件的操作。隨著信息化技術(shù)的飛速發(fā)展,水利元數(shù)據(jù)標(biāo)準(zhǔn)必將在信息化領(lǐng)域深入發(fā)展,水利元數(shù)據(jù)標(biāo)準(zhǔn)將在元數(shù)據(jù)信息集成、應(yīng)用平臺化方面長期持續(xù)發(fā)展。今后,隨著元數(shù)據(jù)管理工作的不斷推進(jìn),將在現(xiàn)有基礎(chǔ)上重點開發(fā)水利元數(shù)據(jù)標(biāo)準(zhǔn)庫、元數(shù)據(jù)標(biāo)準(zhǔn)平臺等應(yīng)用,充分利用信息化的高技術(shù)手段,不斷提升水利元數(shù)據(jù)管理系統(tǒng)的功能,提高水利技術(shù)標(biāo)準(zhǔn)貫徹實施水平。
[1]朱星明,張行南,白婧怡,等.水利科學(xué)數(shù)據(jù)共享元數(shù)據(jù)理論的應(yīng)用探討[J].水利學(xué)報,2005,36(8):1-5
[2]SL473-2010 水利信息核心元數(shù)據(jù)[S]
[3]楊占坡,楊銘,等.Flex 3 RIA 開發(fā)詳解與精深實踐[M].北京:清華大學(xué)出版社,2009
[4]董龍飛,肖娜.Adobe Flex 大師之路[M].北京:電子工業(yè)出版社,2010
[5]Tariq Ahmed,Jon Hirschi,等.Flex 3 實戰(zhàn)[M].北京:清華大學(xué)出版社,2010
[6]胡少英,李曉斌,等.基于Web Servic和Flex的水調(diào)自動化系統(tǒng)[J].水電自動化與大壩監(jiān)測,2011,35(3)