李 琳 郭 易 蓋優(yōu)普 武 煒 朱吉生
(中國(guó)水利水電科學(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),不可能通過(guò)印刷版本的頒布,以及傳統(tǒng)的會(huì)議、培訓(xùn)實(shí)施標(biāo)準(zhǔn)的宣貫。在國(guó)外,這類信息技術(shù)標(biāo)準(zhǔn)大都需要研發(fā)相應(yīng)的軟件工具,借助軟件工具開(kāi)展標(biāo)準(zhǔn)化的信息管理。而在我國(guó),在水利行業(yè)尚未實(shí)現(xiàn)采用軟件工具來(lái)進(jìn)行元數(shù)據(jù)管理和推進(jìn)元數(shù)據(jù)標(biāo)準(zhǔn)的宣慣。
鑒于元數(shù)據(jù)的制作管理的復(fù)雜性,為進(jìn)一步推進(jìn) SL473-2010的實(shí)施,同時(shí)方便元數(shù)據(jù)的管理,通過(guò)信息技術(shù),開(kāi)發(fā)一套符合SL473-2010的水利信息核心元數(shù)據(jù)編制工具。這在水利行業(yè)標(biāo)準(zhǔn)中是初次嘗試,為貫徹實(shí)施元數(shù)據(jù)標(biāo)準(zhǔn)提供技術(shù)支撐尤為必要。本文以 SL473-2010為依據(jù),使用目前流行的 Flex技術(shù)開(kāi)發(fā)水利核心元數(shù)據(jù)管理系統(tǒng),實(shí)現(xiàn)對(duì)核心元數(shù)據(jù)的制作、查詢、修改、導(dǎo)入/導(dǎo)出等功能,以提高元數(shù)據(jù)管理的準(zhǔn)確性和效率。同時(shí),實(shí)現(xiàn)了B/S(Browser/Server)和C/S(Client/Server)終端的統(tǒng)一,大大提高了開(kāi)發(fā)人員的開(kāi)發(fā)和部署效率,極大的方便了專業(yè)人員在不同環(huán)境下進(jìn)行核心元數(shù)據(jù)的管理,對(duì)水利信息核心元數(shù)據(jù)標(biāo)準(zhǔn)的推廣具有重要意義。
本系統(tǒng)采用富客戶應(yīng)用(Rich Internet Application,簡(jiǎn)稱RIA)[3]中的Flex 技術(shù)框架實(shí)現(xiàn)。Macromedia Flex 是目前開(kāi)發(fā)RIA的最流行的一種解決方案,通過(guò) Flex技術(shù)和相關(guān)服務(wù)器端技術(shù),開(kāi)發(fā)者能夠賦予Flash 與后端服務(wù)器交互的能力。
Flex 以ActionScript、MXML和擴(kuò)展類庫(kù)作為基礎(chǔ),編譯生成SWF 格式文件(Flash文件格式),用戶訪問(wèn)Flex RIA 應(yīng)用時(shí)需預(yù)先安裝Flash Player 作為ActionScript 的解析引擎。同時(shí),F(xiàn)lex 框架生成的SWF 格式文件,能運(yùn)行于各種安裝了Flash Player的操作系統(tǒng)上,具有良好的通用性和跨平臺(tái)性。而且,F(xiàn)lash Player 的強(qiáng)大解析能力為 Flex 應(yīng)用程序提供了更強(qiáng)大的交互和動(dòng)畫能力。
按照“分層設(shè)計(jì)、模塊構(gòu)建”的思想[4設(shè)計(jì)總體框架,系統(tǒng)整體框架分為三層,分別為數(shù)據(jù)層、服務(wù)層和表示層,如圖1所示。
數(shù)據(jù)層用來(lái)存取元數(shù)據(jù),本系統(tǒng)采用XML文件庫(kù)的形式進(jìn)行存取。服務(wù)層是整個(gè)體系結(jié)構(gòu)應(yīng)用的核心,用來(lái)實(shí)現(xiàn)系統(tǒng)應(yīng)用的功能,通過(guò)ActionScript語(yǔ)言來(lái)實(shí)現(xiàn)。表示層是系統(tǒng)展示層,通過(guò)Flex來(lái)實(shí)現(xiàn),可以實(shí)現(xiàn)應(yīng)用程序客戶端和網(wǎng)頁(yè)客戶端的同步部署和更新。
圖1 系統(tǒng)架構(gòu)
系統(tǒng)按照SL473-2010[2]技術(shù)標(biāo)準(zhǔn),其數(shù)據(jù)結(jié)構(gòu)由1個(gè)數(shù)據(jù)實(shí)體和8個(gè)元數(shù)據(jù)子集構(gòu)成。其中,標(biāo)識(shí)信息為必選子集,內(nèi)容信息、數(shù)據(jù)質(zhì)量信息、覆蓋范圍信息、限制信息、參照系信息、維護(hù)信息和分發(fā)信息為可選子集。數(shù)據(jù)結(jié)構(gòu)如圖2所示。
圖2 元數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)集采用XML語(yǔ)言進(jìn)行數(shù)據(jù)描述,共設(shè)計(jì)五個(gè)屬性:分別為 name、value、id、style、edit和 del,采用ActionScript 語(yǔ)言對(duì)XML節(jié)點(diǎn)進(jìn)行增刪改操作。按照 SL473-2010[2]技術(shù)要求數(shù)據(jù)集XML屬性如表1所示。
依照水利核心元數(shù)據(jù)的內(nèi)容,將系統(tǒng)主要分為八個(gè)模塊,分別為:標(biāo)識(shí)信息、內(nèi)容信息、數(shù)據(jù)質(zhì)量信息、覆蓋范圍信息、限制信息、參照系信息、維護(hù)信息和分發(fā)信息模塊。幾個(gè)模塊彼此獨(dú)立,互不干擾。
2.3.1 模塊工作流程
在主要的八個(gè)模塊中,標(biāo)識(shí)信息模塊為必選模塊,其他模塊可選。其中,標(biāo)識(shí)信息、數(shù)據(jù)質(zhì)量信息、參照系信息、內(nèi)容信息、覆蓋范圍信息和限制信息模塊可以重復(fù)調(diào)用,維護(hù)信息和分發(fā)信息模塊只能調(diào)用一次。主要模塊工作流程如圖3所示。
表1 元數(shù)據(jù)集屬性說(shuō)明
圖3 模塊工作流程
2.3.2 模塊功能描述
(1)標(biāo)識(shí)信息模塊。標(biāo)識(shí)信息模塊為系統(tǒng)必選模塊,它完成唯一標(biāo)識(shí)數(shù)據(jù)信息的功能,標(biāo)識(shí)有關(guān)資源的基本信息,包括名稱、日期、版本、摘要、目的、關(guān)鍵詞、狀況和聯(lián)系方式等,其中聯(lián)系人和/或單位、數(shù)據(jù)獲取途徑、瀏覽圖、空間分辨率為四個(gè)子模塊。以全國(guó)主要水文站實(shí)時(shí)水情數(shù)據(jù)集元數(shù)據(jù)為例,標(biāo)識(shí)信息模塊主要內(nèi)容如圖4所示。
圖4 標(biāo)識(shí)信息模塊
(2)數(shù)據(jù)質(zhì)量信息模塊。數(shù)據(jù)質(zhì)量信息模塊為系統(tǒng)可選模塊,完成對(duì)數(shù)據(jù)資源質(zhì)量的總體評(píng)價(jià)的功能,包括范圍、數(shù)據(jù)質(zhì)量報(bào)告和數(shù)據(jù)志三個(gè)子模塊。數(shù)據(jù)質(zhì)量信息模塊主要內(nèi)容如圖5所示。
(3)維護(hù)信息模塊。維護(hù)信息模塊為系統(tǒng)可選模塊,完成有關(guān)資源的更新頻率及更新范圍的信息功能,包括聯(lián)系人信息子模塊。維護(hù)信息模塊主要內(nèi)容如圖6所示。
(4)參照系信息模塊。參照系信息模塊為系統(tǒng)可選模塊,完成對(duì)數(shù)據(jù)集使用的空間參照系和時(shí)間參照系的說(shuō)明功能。參照系信息模塊主要內(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ù)資源所涉及空間覆蓋范圍、時(shí)間覆蓋范圍的信息功能。分為時(shí)間覆蓋范圍、地理覆蓋范圍和垂向覆蓋范圍三個(gè)覆蓋范圍。覆蓋范圍信息模塊主要內(nèi)容如圖9所示。
圖9 覆蓋范圍信息模塊
(7)分發(fā)信息模塊。分發(fā)信息模塊在系統(tǒng)中只能出現(xiàn)一次,為可選模塊。完成有關(guān)資源如何分發(fā)和獲取的信息功能。包含分發(fā)者和在線信息。分發(fā)信息模塊主要內(nèi)容如圖10所示。
圖10 分發(fā)信息模塊
(8)限制信息模塊。限制信息模塊為可選模塊,完成訪問(wèn)資源和使用資源的限制信息功能。限制信息主要內(nèi)容如圖11所示。
圖11 限制信息模塊
系統(tǒng)使用Flex Builder 作為開(kāi)發(fā)工具,語(yǔ)言使用ActionScript,數(shù)據(jù)結(jié)構(gòu)采用XML實(shí)現(xiàn)。
系統(tǒng)開(kāi)發(fā)主要使用了Flex Builder 軟件的AdvancedDatagrid組件[5],AdvancedDatagrid可以采用XML作為數(shù)據(jù)源,并且能在組件中靈活實(shí)現(xiàn)XML數(shù)據(jù)的增加、修改和刪除等操作。
主要代碼實(shí)現(xiàn)如下:
其中:designViewDataType 表示數(shù)據(jù)的顯示形式,在這里designViewDataType ="tree",表示樹(shù)形顯示。dataProvider為AdvancedDatagrid的數(shù)據(jù)源,editable="true"表示AdvancedDatagrid列數(shù)據(jù)可進(jìn)行修改操作。
顯示效果如圖12所示。
圖12 系統(tǒng)AdvancedDatagrid組件應(yīng)用
(1)增加數(shù)據(jù)。主要通過(guò)AdvancedDatagrid的selectedItem屬性獲取要增加數(shù)據(jù)的位置,通過(guò)ActionScript中的prependChild()、insertChild-Before()、insertChildAfter()、appendChild()方法來(lái)進(jìn)行XML數(shù)據(jù)的插入。
(2)刪除數(shù)據(jù)。主要通過(guò)AdvancedDatagrid的selectedItem屬性獲取要增加數(shù)據(jù)的位置,通過(guò)ActionScript中的delete()方法刪除XML數(shù)據(jù)。
(3)修改數(shù)據(jù)。使用AdvancedDataGrid 的項(xiàng)目編輯器功能實(shí)現(xiàn)數(shù)據(jù)編輯修改功能。利用DataGridColumn的itemEditor屬性,直接為屬性賦值,直接指定可視化控件類為項(xiàng)目編輯器。此項(xiàng)目使用的編輯器為TextInput和ComboBox。
對(duì)于一般軟件開(kāi)發(fā)技術(shù)來(lái)說(shuō),如果想要將一個(gè)BS 應(yīng)用改造成為一個(gè)CS 應(yīng)用,必須對(duì)整個(gè)應(yīng)用進(jìn)行重新設(shè)計(jì)和開(kāi)發(fā),其復(fù)雜程度和成本都是無(wú)法估計(jì)的。但是,對(duì)于Flex 技術(shù)來(lái)說(shuō),它通過(guò)虛擬機(jī)的形式實(shí)現(xiàn)跨平臺(tái)的Web應(yīng)用,AIR技術(shù)則可以通過(guò)對(duì)Flex 應(yīng)用代碼進(jìn)行極少量的修改,將Flex開(kāi)發(fā)的Web應(yīng)用移植到桌面,而且為移植的應(yīng)用提供了比Web應(yīng)用更為多樣的接口和本地訪問(wèn)能力,從而為大批量操作效率的提高提供了可能。
Flex開(kāi)發(fā)Web應(yīng)用的主程序體如下代碼:
如果將主程序移植到桌面應(yīng)用,僅僅需要在此基礎(chǔ)上做簡(jiǎn)單的修改,修改后的代碼如下:
本文介紹了水利元數(shù)據(jù)管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)過(guò)程,系統(tǒng)采用XML和Flex技術(shù)將水利元數(shù)據(jù)和管理流程有效的結(jié)合起來(lái),實(shí)現(xiàn)數(shù)據(jù)管理、導(dǎo)入和導(dǎo)出等豐富功能,提高元數(shù)據(jù)編制的質(zhì)量和效率。
本文設(shè)計(jì)實(shí)現(xiàn)的水利元數(shù)據(jù)管理系統(tǒng)是水利技術(shù)標(biāo)準(zhǔn)在信息化領(lǐng)域的初次嘗試,目前只限于對(duì)xml文件和文本文件的操作。隨著信息化技術(shù)的飛速發(fā)展,水利元數(shù)據(jù)標(biāo)準(zhǔn)必將在信息化領(lǐng)域深入發(fā)展,水利元數(shù)據(jù)標(biāo)準(zhǔn)將在元數(shù)據(jù)信息集成、應(yīng)用平臺(tái)化方面長(zhǎng)期持續(xù)發(fā)展。今后,隨著元數(shù)據(jù)管理工作的不斷推進(jìn),將在現(xiàn)有基礎(chǔ)上重點(diǎn)開(kāi)發(fā)水利元數(shù)據(jù)標(biāo)準(zhǔn)庫(kù)、元數(shù)據(jù)標(biāo)準(zhǔn)平臺(tái)等應(yīng)用,充分利用信息化的高技術(shù)手段,不斷提升水利元數(shù)據(jù)管理系統(tǒng)的功能,提高水利技術(shù)標(biāo)準(zhǔn)貫徹實(shí)施水平。
[1]朱星明,張行南,白婧怡,等.水利科學(xué)數(shù)據(jù)共享元數(shù)據(jù)理論的應(yīng)用探討[J].水利學(xué)報(bào),2005,36(8):1-5
[2]SL473-2010 水利信息核心元數(shù)據(jù)[S]
[3]楊占坡,楊銘,等.Flex 3 RIA 開(kāi)發(fā)詳解與精深實(shí)踐[M].北京:清華大學(xué)出版社,2009
[4]董龍飛,肖娜.Adobe Flex 大師之路[M].北京:電子工業(yè)出版社,2010
[5]Tariq Ahmed,Jon Hirschi,等.Flex 3 實(shí)戰(zhàn)[M].北京:清華大學(xué)出版社,2010
[6]胡少英,李曉斌,等.基于Web Servic和Flex的水調(diào)自動(dòng)化系統(tǒng)[J].水電自動(dòng)化與大壩監(jiān)測(cè),2011,35(3)