惠 昕,王蓓蓓,韓 寧
(中國軟件與技術(shù)服務(wù)股份有限公司,北京 100081)
水文情況年報統(tǒng)計是水文行業(yè)管理中的一項重要的基礎(chǔ)工作,隨著水文事業(yè)的發(fā)展,水文科技與現(xiàn)代化建設(shè)的逐年實施,每年度的水文年報客觀地反映了水文工作的基本情況,為分析和指導(dǎo)年度水文業(yè)務(wù)和管理工作提供了重要的參考價值。全國水文情況年報系統(tǒng)是提供給各流域機(jī)構(gòu)水文局(處)和各省、自治區(qū)、直轄市水文水資源(勘測)局(總站)填報水文情況數(shù)據(jù),并將匯總報表展現(xiàn)給公眾的應(yīng)用系統(tǒng)。原水文情況年報系統(tǒng)已經(jīng)應(yīng)用多年,但隨著技術(shù)的不斷更新,每年業(yè)務(wù)數(shù)據(jù)的變化,原系統(tǒng)已經(jīng)不適應(yīng)新的應(yīng)用環(huán)境,所以系統(tǒng)面臨全面的技術(shù)改造和自擴(kuò)展的挑戰(zhàn)。
水文年報統(tǒng)計系統(tǒng)旨在利用模板[1]和樹形結(jié)構(gòu)[2]等方法改進(jìn)原有系統(tǒng)的不易維護(hù)、不可擴(kuò)展、不能自定義報表等缺點。系統(tǒng)采用模板的定制功能,動態(tài)增加或刪除地方填寫報文的信息項,提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性;采用樹形結(jié)構(gòu)顯示不同類型的報表中的字段,方便用戶根據(jù)需要選擇合計的字段,自動生成報表表頭,解決原系統(tǒng)不能自定義報表的問題。
全國水文情況年報系統(tǒng)采用4層體系結(jié)構(gòu)[3]構(gòu)建應(yīng)用程序,具體結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)
1)顯示交互層:封裝組成系統(tǒng)用戶界面的元素,例如,HTML 頁、JSP 頁、Excel 表格、Images、電子報表,由于本系統(tǒng)是通過 Web 方式交互,故也可稱為 Web 顯示交互層。
2)應(yīng)用邏輯層:包括業(yè)務(wù)/域類,實現(xiàn)應(yīng)用程序里的基本域類型。
3)應(yīng)用服務(wù)層:用于提供用以支撐的服務(wù),主要有持久性類封裝對持久性存儲的訪問,包括關(guān)系數(shù)據(jù)庫、平面文件和對象庫。還包括一些對持久化類進(jìn)行封裝操作的對象,比如那些“池”。
4)數(shù)據(jù)資源層:業(yè)務(wù)數(shù)據(jù)資源,主要容納全國水文年報數(shù)據(jù)庫,另外包括系統(tǒng)配置屬性資源。
系統(tǒng)的功能包括信息填報、數(shù)據(jù)校驗、數(shù)據(jù)比對、信息審核、報表發(fā)布、報表查詢與瀏覽、填報模板定義、報表模板定義及用戶管理。
1)信息填報。各流域機(jī)構(gòu)水文局(處)和各省、自治區(qū)、直轄市水文水資源(勘測)局(總站)每年會在特定的時間段內(nèi)對本年的水文情況信息進(jìn)行集中信息填報。系統(tǒng)提供了需要填報的報表類型,按照填報模板中定義的信息生成填報表格供用戶填寫信息。
2)數(shù)據(jù)校驗。對用戶填報的信息,系統(tǒng)提供2次數(shù)據(jù)校驗,一是校驗各數(shù)據(jù)項的類型和長度等是否合格;二是根據(jù)數(shù)據(jù)項間的校驗規(guī)則判斷填報信息是否合格。
3)數(shù)據(jù)比對。數(shù)據(jù)比對功能是系統(tǒng)提供給用戶查看當(dāng)年填報的數(shù)據(jù)與過去4a 填報數(shù)據(jù)的差別,方便校核數(shù)據(jù)的準(zhǔn)確性,對錯誤的數(shù)據(jù)及時修改。
4)信息審核。系統(tǒng)為管理員提供對填報數(shù)據(jù)審核的功能,審核狀態(tài)分為通過和不通過,通過的數(shù)據(jù)上報用戶不能再次修改,不通過的數(shù)據(jù)管理員需要填寫原因,并打回給上報用戶修改后重新審核。
5)報表發(fā)布。已審核的填報數(shù)據(jù)系統(tǒng)會自動發(fā)布到當(dāng)年的報表中,即公眾可以查看到已發(fā)布的報表數(shù)據(jù),管理員對報表里的數(shù)據(jù)可以做數(shù)據(jù)導(dǎo)出,方便后期的數(shù)據(jù)整理。
6)報表查詢與瀏覽。提供年份和報表名稱即可查詢到對應(yīng)的統(tǒng)計報表和匯總報表數(shù)據(jù),管理員還可以導(dǎo)出報表數(shù)據(jù)或查看匹配的復(fù)雜圖表。
7)自定義報表。自定義報表是整個系統(tǒng)自擴(kuò)展的核心功能,原系統(tǒng)的數(shù)據(jù)填報項是固定的,即如果填報項有變化,系統(tǒng)必須修改后才能支持,而新系統(tǒng)的填報定義提供給管理員一個工具,可以自行設(shè)計某類信息對應(yīng)的數(shù)據(jù)項、展示的位置和填報時需要的數(shù)據(jù)校驗。除了填報表格,系統(tǒng)還支持對統(tǒng)計和匯總表格的自定義。統(tǒng)計表格是在單一填報表格的字段上附加統(tǒng)計字段形成,匯總表格是匯總各填報表格及統(tǒng)計字段形成的,附加的字段和現(xiàn)實位置都支持自定義。
8)用戶管理。系統(tǒng)提供給管理員對所有用戶信息進(jìn)行瀏覽、增加、修改和刪除操作的權(quán)限;普通用戶只能對本用戶的信息進(jìn)行修改和刪除。
系統(tǒng)采用J2EE 架構(gòu)體系[4]設(shè)計實現(xiàn),保證業(yè)務(wù)系統(tǒng)具有良好的移植性;采用面向?qū)ο蟮脑O(shè)計方法,并確保系統(tǒng)具有一定的前瞻性;提供便捷的系統(tǒng)管理方式,簡化維護(hù)工作的復(fù)雜性,使得系統(tǒng)管理員日后能夠輕松地完成系統(tǒng)的日常管理維護(hù)工作;界面設(shè)計沿用用戶已有的使用習(xí)慣,便于縮短系統(tǒng)的適應(yīng)期等。
2.2.1 數(shù)據(jù)庫訪問模塊設(shè)計
本模塊用于封裝對數(shù)據(jù)庫的各種操作,簡化其他模塊訪問數(shù)據(jù)庫的操作方式,便于系統(tǒng)改造和升級;同時采用數(shù)據(jù)庫連接池的方式管理數(shù)據(jù)庫連接。
3.2.2 模板設(shè)計
系統(tǒng)中提供的模板包括填報、統(tǒng)計和圖形報表3種模板。
1)填報模板。提供界面用于維護(hù)填報模板。模板設(shè)計的填報字段不受深度級別限制,加強(qiáng)了字段與字段之間的靈活性,能夠任意調(diào)整字段的位置及相關(guān)的信息。
每份填報模板可以利用樹形結(jié)構(gòu)定義自己的校驗規(guī)則。
填報模板缺省是未發(fā)布狀態(tài),管理員可以任意修改其中的填報字段并保存,發(fā)布后的填報模板能被登錄用戶看見并接受數(shù)據(jù)填報;進(jìn)入下一個填報周期的時候,管理員可以選擇繼續(xù)沿用此表格或在此表格上延伸定義新的填報表格。
系統(tǒng)為填報模板設(shè)計了版本管理功能,每一版發(fā)布的數(shù)據(jù)模板都可隨時被管理員檢索瀏覽。
2)統(tǒng)計模板。提供界面用于維護(hù)統(tǒng)計模板。統(tǒng)計模板對應(yīng)于填報模板,即只有在生產(chǎn)填報模板的基礎(chǔ)上才能創(chuàng)建統(tǒng)計模板。統(tǒng)計模板中的字段根據(jù)填報模板中存在的字段進(jìn)行選擇,創(chuàng)建統(tǒng)計模板需要的合計字段,創(chuàng)建過程利用樹形結(jié)構(gòu)選擇對應(yīng)填報模板的字段,詳細(xì)設(shè)計同匯總字段的形成。
3)圖形報表模板。圖形報表模板維護(hù)是為了支持以圖形方式表現(xiàn)數(shù)據(jù)而創(chuàng)建的模塊。圖形的表現(xiàn)方式支持柱狀圖、餅圖和組成圖,系統(tǒng)以 Excel 模板的方式創(chuàng)建及存儲圖形模板。如需要擴(kuò)展圖形模板,只需要添加對應(yīng)的 Excel 模板文件即可。
系統(tǒng)中涉及到樹形結(jié)構(gòu)的模塊有匯總和校驗規(guī)則2種模塊。
2.3.1 匯總模塊
支持定義一種匯總模板,匯總報表模板中的數(shù)據(jù)項來自于各個已發(fā)布的填報模板,根據(jù)如圖2所示的樹形結(jié)構(gòu)顯示選擇的填報模板中的數(shù)字類型的數(shù)據(jù)項,管理員可以把各填報模板中的數(shù)據(jù)項按需根據(jù)運(yùn)算公式合并為1個匯總模板中需要的數(shù)據(jù)項。
圖2 樹形結(jié)構(gòu)
2.3.2 校驗規(guī)則模塊
此模塊是為驗證信息填報中的數(shù)據(jù)項是否合格,規(guī)則是根據(jù)實際需求而定義的,如:水文站 + 水位站 > 雨量站。從圖2所示的樹形結(jié)構(gòu)中選擇定義規(guī)則的字段,按照運(yùn)算法則創(chuàng)建校驗規(guī)則。校驗規(guī)則與填報模板中的字段密切關(guān)聯(lián),若刪除填報模板中的字段,則系統(tǒng)會刪除包含該字段的所有規(guī)則。
水文情況年報統(tǒng)計系統(tǒng)的所有功能都已實現(xiàn),并應(yīng)用到全國水文工作的填報中。
水文情況年報統(tǒng)計系統(tǒng)的突出特點是采用了自主開發(fā)的模板和樹形結(jié)構(gòu)的方法來實現(xiàn)數(shù)據(jù)填報、報表匯總等工作。主要有以下特點:1)軟件具有較好的可移植性;2)基于數(shù)據(jù)的狀態(tài)自動發(fā)布;3)自定義報表格式滿足系統(tǒng)的可擴(kuò)展需求;4)自定義校驗規(guī)則自動屏蔽不合格數(shù)據(jù),提高工作效率;5)支持?jǐn)?shù)據(jù)導(dǎo)出,便于后期的數(shù)據(jù)匯總整編。
[1] 歐健文,董守斌,蔡斌.模板化網(wǎng)頁主題信息的提取方法[J].清華大學(xué)學(xué)報,2005,45(9): 1743-1747.
[2] 符丁,黃漢堂.基于本體和多 Agent 的面向任務(wù)協(xié)同編程[J].計算機(jī)工程,2010,36(9): 47-49.
[3] 祝義,黃志球,曹子寧,等.一種基于形式化規(guī)約生成軟件體系結(jié)構(gòu)模型的方法[J].Journal of Software,2010,21(11):2738-2751.
[4] 蔣郁,劉偉平,江曉慶,等.基于 J2EE 架構(gòu)的 LBS 平臺的設(shè)計與實現(xiàn)[J].計算機(jī)工程與設(shè)計,2010(3): 651-654.