戚 平,何俊博
(1.中國石油大學(華東)山東 青島266580;2.中國移動通信集團新疆有限公司博州分公司 新疆 博爾塔拉蒙古自治州833500)
基于B/S架構的自主生成報表引擎系統設計與實現
戚 平1,何俊博2
(1.中國石油大學(華東)山東 青島266580;2.中國移動通信集團新疆有限公司博州分公司 新疆 博爾塔拉蒙古自治州833500)
基于當前社會對報表應用的需求,為滿足開發人員對已有數據庫查詢顯示的不同需要,采用B/S架構,使用JSP編程,設計實現了自主生成報表引擎系統。該系統使用瀏覽器登錄服務器,為用戶劃分個人工作空間,根據用戶需求自由設定報表的查詢項目,解決了時間、地點的局限,突破了只能按系統設定好的報表模版查詢的桎梏。經測試該系統具有良好的穩定性、兼容性和可擴展性,達到了設計的要求。
自主生成;報表引擎;B/S架構;報表生成器
在信息社會中,各種信息都需要進行處理并直觀的展現出來。很多企業的系統中都需要將大量數據以報表的方式顯示和分析,報表的重要性越來越得到了企業決策者的肯定。隨著時代的變遷,傳統紙質報表在社會的進步以及科技的發展中逐漸被電子報表所取代,各大公司也投入了大量資金進行報表設計工具的開發[1-2]。目前大型企業基于B/S的報表系統開發模式越來越成熟,但是很多開發人員仍在根據實際需求直接寫代碼實現數據的分析、處理、展現功能。這樣的實現方式會做很多重復工作,比如很多項目中都需要通過報表數據和圖表來展現業務趨勢,而展現的時間粒度、地域粒度、數據緯度和指標卻各不相同,所以結果也是不同的[3-4]。
報表引擎是用來生成相應的報表并展示給用戶的一種工具。報表引擎起源于流行的工作流引擎的原理、報表格式的定義、報表內容的各種算法,產生報表引擎的思想。它主要是引用工作流引擎的流程運轉原理,在原始數據的基礎上,定義報表的格式、報表的算法,根據定義的算法自動執行計算,并輸出計算后的結果,再根據定義的報表格式顯示報表的內容[5]。
客戶使用的系統中經常需要顯示大量的報表,這些報表中的指標隨著客戶的需求變化也在不斷地發生改變,這對管理人員來說當用戶需求改變時就要大規模的更改系統,修改顯示報表的頁面。為了使管理人員解脫束縛,在已有數據的基礎上開發一套能夠通過自定義來生成報表的系統,這會大大降低管理人員對于系統的維護時間。隨著需求的出現,技術人員開發出了很多系統平臺,比如:巫喬順等設計并實現了一種基于XML和Excel技術的自定義動態報表系統,系統由數據層、業務層、定義層及展現層組成[6];潘永才等則提出了一種可定制報表系統的設計方法:給出了可定制報表系統架構與實現方法,并在.NET平臺下設計了由報表定制模塊、報表解析模塊等組成的可定制報表系統[7]。
隨著當前網絡環境的無處不在,各種電子產品大都具備了連通網絡,處理各種信息乃至工作任務的強大功能,直接利用這些工具通過網絡瀏覽器來完成一些報表的定制將會極大地方便從事相關工作的從業人員。基于B/S架構的自主生成報表引擎系統的設計與實現,為解決這樣的社會需求提供了一種解決的思路。報表從某種方式上可以劃分為兩類:用來查詢顯示的報表,提供數據上報的報表。在這個系統里只涉及用來查詢顯示的報表。
自主生成報表引擎系統是一個通過瀏覽器訪問服務器端,調用報表生成工具來完成一系列報表任務的系統平臺。它通過Web方式實現報表的生成、預覽與打印,為用戶提供滿足其要求的報表格式。根據不同用戶對報表的不同需求,系統中所顯示的報表會隨著用戶的自主設定而不斷地變化。由于傳統的編寫jsp報表頁面工作量巨大,因此自定義生成報表引擎系統將功能進行了模塊化設計,以提高工作效率。
系統根據用戶提供的要求來定制報表,需要實現以下功能:
1)用戶名認證:限定用戶的工作區間,即用戶登錄后只能修改其用戶權限下定制的報表。
2)定制報表:此功能是本系統的主體功能。一個完整的報表由表名,表頭,表格數據,日期組成,用戶通過輸入表名、表頭、數據查詢語句,選擇時間粒度,即可完成一個簡單的報表定制。
3)報表列表:顯示用戶定制的報表信息(包括報表名,生成時間,定制人id)。
4)預覽報表:預覽已經定制的報表。
5)修改報表:進入修改界面,可更改表名,表頭,數據查詢語句,時間粒度。
6)報表下載打?。簩蟊韺С龅紼xcle表格中或者打印。
將以上功能進行歸納,可以將系統劃分為3大模塊:
1)用戶工作區:完成用戶的登錄驗證并設定用戶的工作區間,使用戶之間不會互相干擾。
2)報表定制、修改模塊:使用新建報表功能,填寫報表生成器的內容,創建報表。完成后,用戶可以查看報表信息內容,進行報表的修改、刪除等管理工作。
3)報表顯示打印模塊:實現將用戶生成的報表導出并打印的功能,打印功能使用一款名為iText的開源的免費純java組件來完成,在本文中就不做介紹了。
2.1 用戶工作區的實現
用戶輸入用戶名和密碼后,點擊登錄按鈕,服務器端調用javabean通過jdbc與數據庫連接進行用戶驗證。登錄成功后顯示index.jsp主頁面,框架分為兩部分,如圖1所示。

圖1 主頁面框架
頁面的頂部,是用于顯示含有系統信息的圖片,在圖1中未做展示。第①部分位于左側,主要含有報表列表、新建報表、修改報表、報表信息四個按鈕供用戶選擇需要進行的任務;第②部分位于右側,是在主頁中嵌入了一個