汪 洋,惠 昕,王蓓蓓
(中國軟件與技術(shù)服務(wù)股份有限公司,北京 100081)
水文年報(bào)統(tǒng)計(jì)系統(tǒng)中自定義報(bào)表功能的設(shè)計(jì)與實(shí)現(xiàn)
汪 洋,惠 昕,王蓓蓓
(中國軟件與技術(shù)服務(wù)股份有限公司,北京 100081)
通過綜合分析當(dāng)前各類常用報(bào)表工具的優(yōu)缺點(diǎn),設(shè)計(jì)水文年報(bào)統(tǒng)計(jì)系統(tǒng)中自定義報(bào)表的功能,解決每次發(fā)布報(bào)表需要重新發(fā)布的問題,實(shí)現(xiàn)模板靈活定義的功能,并且不需要安裝任何編輯軟件。實(shí)際應(yīng)用證明,本系統(tǒng)中的自定義報(bào)表功能擁有易維護(hù)性和可擴(kuò)展性。
自定義報(bào)表;重新發(fā)布;模板;可擴(kuò)展性
報(bào)表是水文年報(bào)統(tǒng)計(jì)系統(tǒng)中不可或缺的關(guān)鍵部分,也是絕大部分行業(yè)系統(tǒng)中經(jīng)常用到的功能。當(dāng)前世面上流行的報(bào)表可分為固定格式和自定義報(bào)表[1]。所謂固定格式報(bào)表是指,在開發(fā)階段,完成定義報(bào)表格式和數(shù)據(jù)來源的那些報(bào)表,程序發(fā)布后,用戶就無法繼續(xù)對(duì)報(bào)表的格式做出調(diào)整;自定義類型報(bào)表是指,在程序發(fā)布后,用戶可以根據(jù)業(yè)務(wù)需求設(shè)計(jì)報(bào)表框架格式,包括添加新的報(bào)表,即在用戶使用階段的自定義。
水文年報(bào)統(tǒng)計(jì)系統(tǒng)中的報(bào)表采用的是自定義報(bào)表功能,用戶可以在使用階段根據(jù)需求添加報(bào)表。系統(tǒng)還利用樹形結(jié)構(gòu)[2]設(shè)計(jì)了匯總報(bào)表的模板定制功能,動(dòng)態(tài)增加或刪除地方填寫報(bào)文的信息項(xiàng),提高系統(tǒng)的可維護(hù)性和可擴(kuò)展性。
水文統(tǒng)計(jì)是水文行業(yè)管理的一項(xiàng)重要的基礎(chǔ)工作,是以各流域機(jī)構(gòu)水文局(處)、省、自治區(qū)、直轄市水文水資源(勘測(cè))局(總站)、新疆生產(chǎn)建設(shè)兵團(tuán)水利局水文處開展的轄區(qū)水文統(tǒng)計(jì)工作為基礎(chǔ)。在各單位報(bào)送統(tǒng)計(jì)數(shù)據(jù)的基礎(chǔ)上,通過水文年報(bào)統(tǒng)計(jì)系統(tǒng)對(duì)上報(bào)的數(shù)據(jù)進(jìn)行匯總、校核與審定,并結(jié)合全國水文工作的基本情況,進(jìn)行統(tǒng)計(jì)和分析。
在水文年報(bào)統(tǒng)計(jì)的整個(gè)報(bào)送、統(tǒng)計(jì)、匯總和分析的過程中,報(bào)表是關(guān)鍵部分,具有極其重要的作用。為了確保系統(tǒng)可維護(hù)性和可擴(kuò)展性,自定義報(bào)表的設(shè)計(jì)成了必然的趨勢(shì)。
全國水文統(tǒng)計(jì)年報(bào)分別從水文站網(wǎng)、設(shè)施設(shè)備、人才隊(duì)伍、經(jīng)費(fèi)投入等反應(yīng)水文事業(yè)發(fā)展的主要指標(biāo)進(jìn)行統(tǒng)計(jì)和分析,這就要求每 1 項(xiàng)都要對(duì)應(yīng)1 張報(bào)表。每張報(bào)表如果由開發(fā)人員完成,則會(huì)造成后續(xù)維護(hù)工作的繁瑣,而且每次都需要重新發(fā)布系統(tǒng)。自定義報(bào)表功能的設(shè)計(jì)就是為了使系統(tǒng)脫離開發(fā)人員,由業(yè)務(wù)人員自己根據(jù)需要的指標(biāo)定義報(bào)表模板,并能簡單地修改報(bào)表中各個(gè)指標(biāo)。因此,根據(jù)報(bào)表在水文統(tǒng)計(jì)工作中的重要性,可以推斷出自定義報(bào)表是水文統(tǒng)計(jì)工作發(fā)展的必然趨勢(shì)。
自定義報(bào)表在大部分行業(yè)中是經(jīng)常用到的功能,縱觀當(dāng)前常用的報(bào)表工具,歸納起來,可主要?jiǎng)澐譃橐韵?3 種類型[3]:
1)集成型。在開發(fā)環(huán)境中與所使用的環(huán)境緊密結(jié)合或作為插件進(jìn)行集成,報(bào)表在系統(tǒng)編譯時(shí)與應(yīng)用程序是不可分割的。這種類型的報(bào)表優(yōu)點(diǎn)是:可視化的設(shè)計(jì)過程,使用簡單,與所使用的平臺(tái)結(jié)合緊密,不需要切換到其他設(shè)計(jì)環(huán)境,開發(fā)人員也能進(jìn)行所有的設(shè)計(jì)工作。這種類型報(bào)表的缺點(diǎn)也是非常明顯的,因?yàn)樽儎?dòng)其中 1 個(gè)報(bào)表可能使整個(gè)應(yīng)用系統(tǒng)重新進(jìn)行編譯,甚至需要重新打包和發(fā)布整個(gè)應(yīng)用系統(tǒng)。
2)控件型。這種類型的報(bào)表工具只需要在應(yīng)用系統(tǒng)開發(fā)過程中的某個(gè)特定的模塊中插入一個(gè)以 ActiveX 形式提供的控件即可。類似于 Excel 工具,這類控件同樣提供了一個(gè)單元格用于訪問數(shù)據(jù)單元,單元格是以 2 × 2 矩陣形式出現(xiàn)的。應(yīng)用程序在內(nèi)存中組織所需要的復(fù)雜的報(bào)表數(shù)據(jù),然后存入這類控件對(duì)應(yīng)的單元格中,并由控件自身的內(nèi)置打印引擎輸出。這種類型報(bào)表的優(yōu)點(diǎn)是:靈活的設(shè)計(jì)過程,可利用其內(nèi)置接口通過編程的方法輸出報(bào)表。但其缺點(diǎn)是:在沒有提供可視化設(shè)計(jì)環(huán)境的情況下,必須啟動(dòng)一個(gè)設(shè)計(jì)環(huán)境,將設(shè)計(jì)的結(jié)果以模板的形式提供給應(yīng)用程序訪問。該模板必須預(yù)先設(shè)定訪問路徑,如果對(duì)模板的文件路徑或文件名進(jìn)行了修改,則可能造成應(yīng)用程序出現(xiàn)錯(cuò)誤。
3)OLE 型。這種類型的報(bào)表工具是通過 OLE技術(shù)啟動(dòng)如 Word,Excel 等人們常用的編輯工具作為 OLE 服務(wù)器。這種設(shè)計(jì)報(bào)表方法的優(yōu)點(diǎn)是:使用簡單,對(duì)人們普遍熟悉的編輯工具充分的利用,可用特定的文件格式對(duì)報(bào)表結(jié)果數(shù)據(jù)進(jìn)行保留,并且用戶還可以手工二次加工報(bào)表結(jié)果。但其缺點(diǎn)在于用戶必須安裝相應(yīng)的編輯軟件,程序運(yùn)行效率比較低,并有控件型報(bào)表工具固有的缺點(diǎn),即必須為輸出的報(bào)表提供一個(gè)模塊文件,因而對(duì)應(yīng)用程序的健壯性產(chǎn)生了影響。
水文統(tǒng)計(jì)是對(duì)各項(xiàng)指標(biāo)進(jìn)行統(tǒng)計(jì)和分析,客觀直接地反映了當(dāng)年全國水文事業(yè)的發(fā)展、科技水平的提高、服務(wù)領(lǐng)域的拓寬和現(xiàn)代化水平的提高。每年的指標(biāo)都會(huì)根據(jù)當(dāng)年的情況做出對(duì)應(yīng)的調(diào)整。這就要求系統(tǒng)在自定義報(bào)表的設(shè)計(jì)上要脫離開發(fā)人員,使業(yè)務(wù)人員操作簡單,可方便地修改報(bào)表中的指標(biāo)項(xiàng)。根據(jù)上面常用報(bào)表工具的分析,結(jié)合水文統(tǒng)計(jì)工作的特點(diǎn),水文年報(bào)統(tǒng)計(jì)系統(tǒng)在其自定義報(bào)表功能的設(shè)計(jì)上有效地避免了當(dāng)前常用的報(bào)表工具缺陷。
系統(tǒng)采用 J2EE 架構(gòu)體系[4]設(shè)計(jì)實(shí)現(xiàn),保證業(yè)務(wù)系統(tǒng)具有良好的移植性,其中自定義報(bào)表的功能前臺(tái)展示頁面是基于 Jsp 開發(fā)的,利用 Jsp 的優(yōu)點(diǎn)實(shí)現(xiàn)報(bào)表格式的自定義設(shè)計(jì);后臺(tái)是基于 Java 與數(shù)據(jù)庫的交互實(shí)現(xiàn)了報(bào)表中數(shù)據(jù)來源的設(shè)定。解決了每次發(fā)布報(bào)表需要重新發(fā)布的問題,實(shí)現(xiàn)了模板[5]靈活定義的功能,并且不需要安裝任何編輯軟件。
系統(tǒng)中的報(bào)表自定義設(shè)計(jì)主要包括填報(bào)[6]和統(tǒng)計(jì)匯總報(bào)表模板設(shè)計(jì) 2 種。其中,統(tǒng)計(jì)匯總報(bào)表模板的字段是根據(jù)填報(bào)報(bào)表模板中存在的字段進(jìn)行選擇,創(chuàng)建統(tǒng)計(jì)匯總模板需要的合計(jì)字段,創(chuàng)建過程利用樹形結(jié)構(gòu)選擇對(duì)應(yīng)填報(bào)報(bào)表模板的字段。
3.1 填報(bào)報(bào)表模板設(shè)計(jì)
自定義報(bào)表是整個(gè)系統(tǒng)自擴(kuò)展的核心功能,提供給用戶一個(gè)設(shè)計(jì)報(bào)表工具。可以自行設(shè)計(jì)某類信息對(duì)應(yīng)的數(shù)據(jù)項(xiàng)、調(diào)整展示的位置和填報(bào)時(shí)需要的數(shù)據(jù)校驗(yàn)。根據(jù)用戶在前臺(tái)頁面添加的數(shù)據(jù)項(xiàng),后臺(tái)自動(dòng)在數(shù)據(jù)庫中生成相應(yīng)的表格與對(duì)應(yīng)的字段。新添加的字段不受深度級(jí)別限制,加強(qiáng)了字段之間的靈活性,能夠任意調(diào)整字段的位置及相關(guān)的信息。具體填報(bào)報(bào)表模板設(shè)計(jì)流程如圖 1 所示。
圖 1 填報(bào)報(bào)表模板設(shè)計(jì)流程
3.2 統(tǒng)計(jì)匯總報(bào)表模板設(shè)計(jì)
統(tǒng)計(jì)報(bào)表是在單一填報(bào)報(bào)表的字段上附加統(tǒng)計(jì)字段形成;匯總報(bào)表是匯總各填報(bào)報(bào)表及統(tǒng)計(jì)字段形成的,附加的字段和現(xiàn)實(shí)位置都支持自定義。統(tǒng)計(jì)匯總報(bào)表模板設(shè)計(jì)主要利用樹形結(jié)構(gòu)顯示填報(bào)報(bào)表中的字段,選擇需要的字段創(chuàng)建統(tǒng)計(jì)匯總字段,并確定統(tǒng)計(jì)匯總字段的位置,通過“預(yù)覽”功能瀏覽生成的統(tǒng)計(jì)匯總報(bào)表模板中的字段是否正確。具體統(tǒng)計(jì)匯總報(bào)表模板設(shè)計(jì)流程如圖 2 所示。
圖 2 統(tǒng)計(jì)匯總報(bào)表模板設(shè)計(jì)流程
3.3 系統(tǒng)的實(shí)現(xiàn)
水文情況年報(bào)統(tǒng)計(jì)系統(tǒng)中的自定義報(bào)表功能都已實(shí)現(xiàn),并應(yīng)用到全國水文工作的填報(bào)中。填報(bào)報(bào)表模板實(shí)現(xiàn)界面如圖 3 所示,統(tǒng)計(jì)匯總報(bào)表模板實(shí)現(xiàn)界面如圖 4 所示。
圖 3 填報(bào)報(bào)表模板實(shí)現(xiàn)界面
綜上所述,通過對(duì)自定義報(bào)表功能的分析和對(duì)比,得出水文情況年報(bào)統(tǒng)計(jì)系統(tǒng)的自定義報(bào)表功能的設(shè)計(jì)解決了每次發(fā)布報(bào)表需要重新發(fā)布的問題,實(shí)現(xiàn)了模板靈活定義的功能,并且不需要安裝任何編輯軟件,擁有易維護(hù)性和可擴(kuò)展性。
圖 4 統(tǒng)計(jì)匯總報(bào)表模板實(shí)現(xiàn)界面
[1] 吳宏杰,呂強(qiáng),楊季文. 一種基于 MS Excel 的通用自定義報(bào)表解決方案[J]. 計(jì)算機(jī)與現(xiàn)代化,2005 (1): 109-112.
[2] 符丁,黃漢堂. 基于本體和多 Agent 的面向任務(wù)協(xié)同編程[J]. 計(jì)算機(jī)工程,2010, 36 (9): 47-49.
[3] 陳國華,劉海林. 管理信息系統(tǒng)中自定義報(bào)表工具的研究與設(shè)計(jì)[J]. 計(jì)算機(jī)應(yīng)用與軟件,2006, 23 (5): 74 -76.
[4] 蔣郁,劉偉平,江曉慶,等. 基于 J2EE 架構(gòu)的 LBS 平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2010 (3): 651-654.
[5] 譚賀春. 基于 Excel 模板的報(bào)表導(dǎo)出框架的設(shè)計(jì)與實(shí)現(xiàn)[C].//中國電子學(xué)會(huì)第十七屆信息論學(xué)術(shù)年會(huì)論文集. 北京:國防工業(yè)出版社,2010: 65-69.
[6] 李雄成,宋瀚濤. 一種報(bào)表模板框架[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2003 (9): 127-130.
Design and Implementation of User-defined Reports Functionin Hydrological Annual Statistic Report System
WANG Yang, HUI Xin, WANG Beibei
(China National Software and Service CO.,LTD, Beijing 100081, China)
Through comprehensively analyzing advantages and disadvantages of common reporting tools, the function of user-defined reports in the Hydrological Annual Statistic Report System is designated to solve the problem of republishing reports every time. The flexible template definition is realized without installment of any editing software. Practical applications prove that user-defined reports in this system have well maintainability and extensibility.
user-defined reports; republishing; template; extendibility
P337
A
1674-9405(2015)03-0015-04
2014-12-29
汪 洋(1981-),男,湖北武穴人,碩士,從事企業(yè)信息化系統(tǒng)管理工作。