李騰飛
(四川省水文水資源勘測(cè)中心,四川 成都 610036)
水文資料是通過(guò)實(shí)地調(diào)查、觀測(cè)及計(jì)算研究所得的與水文有關(guān)的各項(xiàng)資料,如降水量、蒸發(fā)量、水位、流量、含沙量等,以及從這些資料求得的在一定時(shí)期內(nèi)的最大值、最小值、平均值、總量、過(guò)程線和等值線等,水文資料廣泛應(yīng)用于國(guó)家機(jī)關(guān)決策和防災(zāi)減災(zāi)、國(guó)防建設(shè)、公共安全、環(huán)境保護(hù)、應(yīng)急管理等相關(guān)社會(huì)事務(wù)中。水文資料對(duì)外服務(wù)主要是水文資料存儲(chǔ)保管單位,面向政府機(jī)構(gòu)和社會(huì)公眾編制重要規(guī)劃、進(jìn)行重點(diǎn)項(xiàng)目建設(shè)、防災(zāi)減災(zāi)、水資源管理等需求,提供水文資料的一種服務(wù)活動(dòng)。
《“十四五”智慧水利建設(shè)規(guī)劃》《水文現(xiàn)代化建設(shè)規(guī)劃》《四川省水文事業(yè)發(fā)展規(guī)劃(2021—2035 年)》等文件對(duì)水文領(lǐng)域信息數(shù)字化轉(zhuǎn)型提出,要根據(jù)政府部門和社會(huì)公眾對(duì)水災(zāi)害、水資源、水生態(tài)、水環(huán)境等不同水文信息的需求,提供前瞻性數(shù)字化產(chǎn)品服務(wù)[1],目前水利部長(zhǎng)江委實(shí)現(xiàn)了面向Web 的水文數(shù)據(jù)“一站式”服務(wù)[2],氣象、測(cè)繪等行業(yè)也實(shí)現(xiàn)了資料的線上服務(wù)。由于水文資料對(duì)外服務(wù)不屬于行政審批事項(xiàng),全國(guó)各地對(duì)此信息化改進(jìn)重視不夠,大多數(shù)依舊沿襲使用單位提出實(shí)際需求、手工填寫數(shù)據(jù)申請(qǐng),層層審批,最終由工作人員從水文數(shù)據(jù)庫(kù)提取后提供的服務(wù)模式,工作效率低、容易出錯(cuò)、溝通成本大,基于此,本研究力求實(shí)現(xiàn)水文資料對(duì)外服務(wù)的高效化、標(biāo)準(zhǔn)化、準(zhǔn)確化,以國(guó)家基本水文測(cè)站提供水文資料為例,基于面向Web 設(shè)計(jì),從水文資料在線查詢、在線申請(qǐng)等全流程服務(wù)環(huán)節(jié)出發(fā),制定系統(tǒng)架構(gòu)、網(wǎng)絡(luò)組織、數(shù)據(jù)表設(shè)計(jì)等一系列標(biāo)準(zhǔn)化體系,建立四川水文數(shù)據(jù)對(duì)外服務(wù)系統(tǒng),實(shí)現(xiàn)了水文數(shù)據(jù)需求與資料服務(wù)的關(guān)聯(lián)轉(zhuǎn)換,從而提升水文信息服務(wù)現(xiàn)代化能力。
基于不跑路、少跑路、無(wú)紙化、遠(yuǎn)程申請(qǐng)、在線獲取的總體要求,該研究采取了面向Web 服務(wù)的方式,采用B/S 架構(gòu),即瀏覽器/服務(wù)器模式(Browser/Server),將系統(tǒng)功能實(shí)現(xiàn)的核心部分和數(shù)據(jù)集中到Web 服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器上,用戶通過(guò)訪問(wèn)Web 瀏覽器端進(jìn)行數(shù)據(jù)訪問(wèn),從而實(shí)現(xiàn)信息交互、數(shù)據(jù)服務(wù)。系統(tǒng)層級(jí)結(jié)構(gòu)和網(wǎng)絡(luò)架構(gòu)見(jiàn)圖1 和圖2。
圖1 系統(tǒng)層級(jí)結(jié)構(gòu)
圖2 系統(tǒng)網(wǎng)絡(luò)架構(gòu)
以服務(wù)用戶為主旨,設(shè)計(jì)了用戶注冊(cè)登錄、數(shù)據(jù)申請(qǐng)、數(shù)據(jù)查詢和提交等主要工作流程,后臺(tái)管理設(shè)置了用戶資料審核、數(shù)據(jù)申請(qǐng)審核、數(shù)據(jù)資料目錄復(fù)核等操作流程,見(jiàn)圖3。
圖3 水文數(shù)據(jù)對(duì)外服務(wù)基本流程
基于角色的訪問(wèn)控制(RBAC)是實(shí)施面向Web服務(wù)的一種有效的訪問(wèn)控制方式,可以對(duì)客戶進(jìn)行識(shí)別,減輕服務(wù)器負(fù)擔(dān),同時(shí)加強(qiáng)管理。設(shè)置了用戶角色、流程管理角色、管理員角色。流程管理主要由內(nèi)部審核人員負(fù)責(zé),如數(shù)據(jù)管理員復(fù)核數(shù)據(jù),一個(gè)水文資料可以分發(fā)給多個(gè)資料管理部門進(jìn)行復(fù)核審核。RBAC 基本框架見(jiàn)圖4。
圖4 RBAC 基本框架
該系統(tǒng)按功能劃分為基礎(chǔ)設(shè)施層、數(shù)據(jù)資源層、業(yè)務(wù)應(yīng)用層?;A(chǔ)設(shè)施層是系統(tǒng)的基礎(chǔ)保障,提供存儲(chǔ)、網(wǎng)絡(luò)等資源設(shè)施;數(shù)據(jù)資源層主要包括水文站點(diǎn)數(shù)據(jù)、水文資料目錄等數(shù)據(jù)庫(kù);業(yè)務(wù)應(yīng)用層是直接提供水文資料服務(wù)的窗口,主要包括用戶進(jìn)行數(shù)據(jù)索引、數(shù)據(jù)申請(qǐng)、數(shù)據(jù)資料填報(bào),管理員進(jìn)行角色訪問(wèn)控制、類別管理等功能。
按照前臺(tái)、后臺(tái)組成系統(tǒng)整體進(jìn)行了設(shè)計(jì),同時(shí)設(shè)置了導(dǎo)出、記錄、統(tǒng)計(jì)、訂單答疑等功能,可以開(kāi)展價(jià)格統(tǒng)計(jì),訂單月度、年度分析等[3]。針對(duì)使用過(guò)程中存在的問(wèn)題,對(duì)每個(gè)訂單設(shè)置了答疑模塊,主要針對(duì)提供的水文資料、服務(wù)流程等方面答疑。系統(tǒng)功能模塊見(jiàn)圖5。
圖5 系統(tǒng)功能模塊結(jié)構(gòu)
該系統(tǒng)業(yè)務(wù)流程單一,在數(shù)據(jù)庫(kù)的設(shè)計(jì)上,選用較為輕便的服務(wù)器作為內(nèi)部平臺(tái)的補(bǔ)充,圍繞用戶來(lái)完成,由必要的站點(diǎn)表、站點(diǎn)數(shù)據(jù)表、用戶表、用戶申請(qǐng)數(shù)據(jù)表等組成,對(duì)于唯一字段和關(guān)鍵字段,數(shù)據(jù)表設(shè)計(jì)見(jiàn)表1,水文資料計(jì)價(jià)表字段定義見(jiàn)表2。
表1 數(shù)據(jù)表設(shè)計(jì)
表2 水文資料計(jì)價(jià)表字段定義
資料清單編碼設(shè)計(jì)參考《水文數(shù)據(jù)目錄服務(wù)規(guī)范》(SL 736—2016)要素代碼表,按照《四川省水文資料和成果有償使用收費(fèi)標(biāo)準(zhǔn)》(川水文函〔2016〕54 號(hào)),水文資料對(duì)外服務(wù)共分為水文、水質(zhì)、墑情、地下水四大類。一級(jí)類選用1 位編碼,即1~4;水文一類中二級(jí)類最多,接近2 位數(shù),考慮以后的擴(kuò)展,二級(jí)類選用2 位編碼,即01~99;水文一類流量二類三級(jí)類最多,接近2 位數(shù),考慮以后的擴(kuò)展,三級(jí)類選用2 位編碼即01~99。如獲取某站月最大值該項(xiàng)數(shù)據(jù)資料的編碼即為10306,資料共采用5 位編碼。
設(shè)計(jì)了3 類申請(qǐng)的狀態(tài),一類狀態(tài)是申請(qǐng)狀態(tài)(撤銷、已申請(qǐng)、推進(jìn)中、已完成),二類狀態(tài)是資料狀態(tài)(已初核資料;申請(qǐng)走完流程已收到,資料未提供;與已提供資料不一致;與已提供資料一致),三類狀態(tài)是合同付款狀態(tài)(未簽訂合同未付款、已簽訂合同未付款、未簽訂合同已付款、已簽訂合同已付款)。根據(jù)二類、三類狀態(tài),自動(dòng)更新一類狀態(tài)。在訂單狀態(tài)中增加客戶申請(qǐng)數(shù)據(jù)和客戶獲得數(shù)據(jù)一致性校驗(yàn),避免出現(xiàn)申請(qǐng)數(shù)據(jù)與獲得數(shù)據(jù)存在差錯(cuò)的情況。
2.7.1 服務(wù)器程序設(shè)計(jì)模式
MVC 設(shè)計(jì)模式是一種將應(yīng)用程序的邏輯層和表現(xiàn)層分離出來(lái)的軟件設(shè)計(jì)方法,包括模型(Model)、視圖(View)和控制器(Controller),三者之間關(guān)系見(jiàn)圖6。
圖6 MVC 設(shè)計(jì)模式
模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則,負(fù)責(zé)轉(zhuǎn)發(fā)請(qǐng)求,對(duì)請(qǐng)求進(jìn)行處理,模型類包含幫助對(duì)數(shù)據(jù)庫(kù)進(jìn)行增刪改查的方法。視圖是用戶看到并與之交互的界面,是一種輸出數(shù)據(jù)并允許用戶操縱的方式??刂破魇悄P?、視圖以及其他任何處理 HTTP 請(qǐng)求所必需資源之間的中介,接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。MVC 三個(gè)部件中模型擁有最多的處理任務(wù),MVC 優(yōu)點(diǎn)在于能為應(yīng)用程序處理不同的視圖。
2.7.2 設(shè)計(jì)程序語(yǔ)言和框架選擇
CodeIgniter 框架采用MVC 設(shè)計(jì)模式構(gòu)建,是一個(gè)小巧但功能強(qiáng)大的PHP 框架。作為一個(gè)簡(jiǎn)單而“優(yōu)雅”的工具包,它提供一套豐富的標(biāo)準(zhǔn)庫(kù)以及簡(jiǎn)單的接口和邏輯結(jié)構(gòu),可以快速幫助PHP 程序員建立功能完善的Web 應(yīng)用程序[4]。
Codelgniter 系統(tǒng)數(shù)據(jù)流程為:index.php 文件作為前端控制器,初始化運(yùn)行 CodeIgniter 所需的基本資源;路由Routing 檢查HTTP 請(qǐng)求,以確定如何處理該請(qǐng)求;如果存在緩存Caching 文件,將直接輸出到瀏覽器,不用走下面正常的系統(tǒng)流程;在加載應(yīng)用程序控制器Application Controller 之前,對(duì) HTTP 請(qǐng)求以及任何用戶提交的數(shù)據(jù)進(jìn)行安全Security 檢查;控制器加載模型Models、核心類庫(kù)Libraries、輔助函數(shù)Helpers 以及其他所有處理請(qǐng)求所需的資源;渲染視圖View 并發(fā)送至瀏覽器,如果開(kāi)啟了緩存,視圖先緩存起來(lái)用于后續(xù)的請(qǐng)求。Codelgniter 系統(tǒng)數(shù)據(jù)流程見(jiàn)圖7。
2.7.3 WebGIS 類庫(kù)選擇
在站點(diǎn)選擇中,為了增加可視化、直觀查看的效果,基于四川省政府網(wǎng)站公開(kāi)數(shù)據(jù)平臺(tái)的公開(kāi)站點(diǎn)數(shù)據(jù),使用OpenLayers 在網(wǎng)頁(yè)前端進(jìn)行展示。OpenLayers是一個(gè)以面向?qū)ο笮问介_(kāi)發(fā)的JavaScript 類庫(kù),用于WebGIS 前端,主要用來(lái)在瀏覽器中展現(xiàn)地圖數(shù)據(jù),它提供了大量的地圖組件,如圖層加載、控件、標(biāo)準(zhǔn)顯示、信息查看彈出窗口等。
《中華人民共和國(guó)網(wǎng)絡(luò)安全法》《中華人民共和國(guó)數(shù)據(jù)安全法》《中華人民共和國(guó)個(gè)人信息保護(hù)法》規(guī)定,網(wǎng)站涉及用戶登錄名、密碼、電話等敏感信息,采用Md5 加密,對(duì)相應(yīng)字段信息加密后存入數(shù)據(jù)庫(kù)。
通過(guò)近5 年統(tǒng)計(jì),按照新建大中小型水庫(kù)建設(shè)、生態(tài)流量、水文水資源等需要水文資料的實(shí)際,資料目錄量并不多,按照無(wú)償、有償?shù)确诸悺?/p>
操作系統(tǒng)采用CenOS 5.4 64 位,服務(wù)器為Apache 2.4,數(shù)據(jù)庫(kù)選擇Mysql 5.1.48,PHP 環(huán)境為5.2 版本,CodeIgniter 版本為2.1.3。
Codelgniter 基本結(jié)構(gòu)為入口程序文件(index.php)、system 框架程序目錄文件夾和application 項(xiàng)目程序文件夾,application 文件夾中主要存放了controllers、views、models 等主要文件夾,對(duì)應(yīng)MVC 模式的程序文件。
按照查詢流程,設(shè)計(jì)了查詢首頁(yè)、關(guān)鍵詞選擇查詢等頁(yè)面,頁(yè)面效果預(yù)覽見(jiàn)圖8~圖10。
圖8 水文資料申請(qǐng)表單填寫
圖9 站點(diǎn)資料查詢選擇
圖10 管理頁(yè)面
針對(duì)政府機(jī)構(gòu)和社會(huì)公眾對(duì)四川省水文資料對(duì)外服務(wù)的實(shí)際需求,通過(guò)分析現(xiàn)有水文資料對(duì)外服務(wù)存在的線下審批、溝通不暢等不足,立足于系統(tǒng)結(jié)構(gòu)、網(wǎng)絡(luò)、數(shù)據(jù)表設(shè)計(jì)等一系列標(biāo)準(zhǔn)化建設(shè),搭建四川省水文資料對(duì)外在線服務(wù)信息系統(tǒng),可全天候服務(wù)于社會(huì)公眾獲取水文資料的全過(guò)程管理,在水文資料服務(wù)的內(nèi)容、服務(wù)的效率和服務(wù)的質(zhì)量上均得到提升,更加方便快捷全面地服務(wù)于社會(huì)公眾。四川省水文資料對(duì)外服務(wù)系統(tǒng)現(xiàn)已上線試運(yùn)行,業(yè)務(wù)人員可通過(guò)此系統(tǒng)在線查看水文資料價(jià)格和資料完整情況、提交資料申請(qǐng)以及下載所需水文資料,得到了水文資料需求單位的一致好評(píng)。也要看到該系統(tǒng)目前支持的服務(wù)還是基本需求,受可選擇站點(diǎn)覆蓋不全、水文站點(diǎn)資料更新不及時(shí)等影響,下一步還需加入專用站、中小河流站點(diǎn)等水文站點(diǎn)資料,在當(dāng)前適應(yīng)手機(jī)、平板電腦等多類型終端需求上,還要繼續(xù)完善功能模塊、提供接口服務(wù)、開(kāi)發(fā)手機(jī)App 等。