999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于B/S架構的自主生成報表引擎系統設計與實現

2017-04-25 13:27:12何俊博
電子設計工程 2017年8期
關鍵詞:引擎頁面數據庫

戚 平,何俊博

(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架構的自主生成報表引擎系統的設計與實現,為解決這樣的社會需求提供了一種解決的思路。報表從某種方式上可以劃分為兩類:用來查詢顯示的報表,提供數據上報的報表。在這個系統里只涉及用來查詢顯示的報表。

1 系統設計

自主生成報表引擎系統是一個通過瀏覽器訪問服務器端,調用報表生成工具來完成一系列報表任務的系統平臺。它通過Web方式實現報表的生成、預覽與打印,為用戶提供滿足其要求的報表格式。根據不同用戶對報表的不同需求,系統中所顯示的報表會隨著用戶的自主設定而不斷地變化。由于傳統的編寫jsp報表頁面工作量巨大,因此自定義生成報表引擎系統將功能進行了模塊化設計,以提高工作效率。

系統根據用戶提供的要求來定制報表,需要實現以下功能:

1)用戶名認證:限定用戶的工作區間,即用戶登錄后只能修改其用戶權限下定制的報表。

2)定制報表:此功能是本系統的主體功能。一個完整的報表由表名,表頭,表格數據,日期組成,用戶通過輸入表名、表頭、數據查詢語句,選擇時間粒度,即可完成一個簡單的報表定制。

3)報表列表:顯示用戶定制的報表信息(包括報表名,生成時間,定制人id)。

4)預覽報表:預覽已經定制的報表。

5)修改報表:進入修改界面,可更改表名,表頭,數據查詢語句,時間粒度。

6)報表下載打?。簩蟊韺С龅紼xcle表格中或者打印。

將以上功能進行歸納,可以將系統劃分為3大模塊:

1)用戶工作區:完成用戶的登錄驗證并設定用戶的工作區間,使用戶之間不會互相干擾。

2)報表定制、修改模塊:使用新建報表功能,填寫報表生成器的內容,創建報表。完成后,用戶可以查看報表信息內容,進行報表的修改、刪除等管理工作。

3)報表顯示打印模塊:實現將用戶生成的報表導出并打印的功能,打印功能使用一款名為iText的開源的免費純java組件來完成,在本文中就不做介紹了。

2 系統實現

2.1 用戶工作區的實現

用戶輸入用戶名和密碼后,點擊登錄按鈕,服務器端調用javabean通過jdbc與數據庫連接進行用戶驗證。登錄成功后顯示index.jsp主頁面,框架分為兩部分,如圖1所示。

圖1 主頁面框架

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

由于不同的用戶擁有不同的工作區間,所以在登錄后,系統會記錄當前用戶信息進行區分,該用戶制作的報表會被標注上該用戶信息以區分從屬關系。登錄時,服務器端會創建一個session對象,將用戶名信息保存在session中。session在客戶端連接到服務器時創建,session生成后,只要用戶繼續訪問,服務器就會更新session的最后訪問時間,并維護該session。用戶每訪問服務器一次,無論是否讀寫session,服務器都認為該用戶的session活躍(active)了一次[8]。session的信息保存在服務器端,而session的id則保存到客戶機的cookie中,由于采用服務器端保持狀態的方案在客戶端也需要保存一個標識,所以session需要借助于cookie來達到保存標識的目的。要注意,在session中保存的信息是有類型上的限制,基本數據類型如 int,double等是不可以的,在session中的參數類型必須為java的相應的對象,如Integer,Double等。

創建session的過程如圖2所示:客戶端發出請求,由服務器端響應請求為客戶端創建一個session或者使用已有的session。服務器收到客戶端的請求后,檢查客戶端的請求是否存在session標識信息即session id。如果 session id存在,服務器就根據session id檢索并使用關聯的session。如果session id不存在,則為此客戶端創建一個session并生成一個與之關聯的session id,id的值為一串特殊的字符串,在本次響應中會被返回給客戶端保存到cookie中。

圖2 session創建流程

2.2 報表生成、修改功能的實現

報表就是用表格、圖表等格式來動態顯示數據,可以用公式表示為:“報表=多樣的格式+動態的數據”。生成報表則不可避免的涉及到數據的處理。數據存取是指數據庫數據存儲組織和存貯路徑的實現和維護[9]。報表呈現過程中包括兩個功能模塊,分別是報表統計模塊和數據源加載模塊。報表統計模塊用于報表輸出和數據加載,即設計出符合客戶要求的報表樣式,并設計好數據加載接口。數據源加載模塊用于數據的提取、轉換及存儲,即在業務系統的業務流中選擇適當位置設計數據源加載模塊,獲取流經該業務的原始數據,轉換后存儲在存儲表中,并保持數據的一致性[10]。

在自主生成報表引擎系統中,通過頁面調用的報表生成器來實現報表的自主設計,如圖3所示。

圖3 報表生成頁面

報表生成器中需要設定的內容有一下幾部分。

報表名稱:在文本域內輸入想要新建的報表名。

數據集:此功能對數據操作語言能力要求較高,數據庫存有數據源,數據是從不同的地方采集入庫得到,對于本系統的使用者只擁有數據庫的原始數據,用戶會隨時提出對報表的不同需求,所以不能只是單純的從數據庫取得一個表的數據作為報表的顯示,在數據集里輸入的是較為復雜的數據查詢以及計算語句。

時間粒度選擇:報表的表格內數據都是有時間標識的,添加時間粒度來對數據進行動態查詢。再輸入數據集的時候,所有對時間的查詢都要把日期替換為{day},因為要獲取時間來替換{day},從而對數據庫進行動態查詢,選擇不同時間來顯示報表數據。同時可以選擇時間粒度是日粒度還是月粒度的。

查詢列:根據輸入的數據集來獲取對應有多少列,并顯示列名,由于數據庫里存的列名是自定義的,如果直接以列名顯示在報表里用戶是無法理解這個列的含義,因此需要自定義每個列的指標名。操作時點擊查詢列會顯示列名,并在列名后提供了輸入指標名的文本框以供編輯。在文本框后面設計添加了“鏈接折線圖”選項,當選中該選項后會對指標值進行處理繪制出該指標的近期數據折線圖。可以選擇任意指標來繪制折線圖。

在全部相關設置填寫完畢并提交后,系統將所有的設置項提交并進行處理,將設置的內容分類添加入數據庫進行保存。相關JavaBean部分代碼如下:

設置完成后,生成相應報表如圖4所示。

圖4 生成報表

報表顯示分為3部分內容,報表名稱、日期選擇、表格數據。報表名稱通過前一個頁面傳值獲取,然后在頁面顯示。日期選擇使用了“My97datepicker選擇器”,此選擇器能夠多元化的顯示各種類型的時間選項,從年份選擇到分鐘選擇,不會產生手動輸入日期不規范等常規性錯誤,并自帶的改正錯誤系統。表格數據的顯示是在報表頁面中添加了一個< iframe>進行動態顯示,動態數據是根據選擇的日期時間生成的,在第一次加載報表頁面時,通過如下方法獲得系統日期時間:

也可選擇日期時間,通過編寫JavaScript方法獲得日期時間并傳給

2.3 繪制折線圖功能實現

報表圖形化是一種對數據結果直觀的展示,非技術開發人員可以通過報表圖形化工具自定義報表的查詢內容和查詢展現方式,并可供其他用戶查看分析[11]。在定制報表過程中,一些指標設置了鏈接折線圖(如圖3)的選項,在加載數據時程序會進行判斷,如果鏈接折線圖功能被選擇,則生成相應報表圖形,如圖5所示。

圖5 折線圖

折線圖的繪制采用的了JFreeChart包來完成。JFreeChart是Java平臺上的一個開放的圖表繪制類庫,它完全使用 Java語言編寫,可應用于 Java Applications、Applets、Servlets和JSP等。使用控件的優點是省時、省力并具極大的靈活性,使用非常方便,容易繪制出各種復雜、漂亮的圖表[12]。利用JFreeChart可生成餅圖、柱狀圖、折線圖、時序圖、散點圖、甘特圖等平時所需的多種圖表,并且可以產生PNG和JPEG格式的兩種輸出[13]。常用的PDF文件以及微軟公司的EXCEL表格同樣可以與之相接從而傳輸數據。

3 結束語

優秀的報表可以對基礎數據進行過濾、合并、統計、分析,提供直觀的表達形式,并為決策提供良好的依據[14]。報表的設計與實現是平臺建設中非常重要的、必不可少的組成部分,在應用系統的設計實現中占有十分突出的地位[15]。自主生成報表引擎系統,為定制生成報表提供了一個網絡應用思路,通過瀏覽器訪問服務器,根據用戶個人需求定制生成報表,這種模式開發成本較低,周期短,應用卻十分廣泛,在應用中對于用戶設備、地點、時間要求不高,具有良好的穩定性,可擴展性,極大解放了相關用戶使用的限制,從而提高工作效率,也符合當前時代發展與生活節奏的需求。該系統不足之處在于沒有解決非專業技術人員的數據庫操作方面的局限,沒有做到所見即所得。下一步將會把直接在瀏覽器頁面點選數據庫,點選指標放在改進的內容中,讓系統能為所有用戶服務,用戶不需要太多后臺數據庫操作的技術知識,只需要知道自己要用到哪些數據,要什么樣的報表就可以了,以使得該系統受用面更加廣泛。

[1]Paul Turley.SQL Server 2005報表服務高級編程[M].謝文亮,譯.北京:清華大學出版社,2007.

[2]趙曉輝,張璟,李軍懷,等.基于GEF框架的報表設計引擎設計與實現[J].計算機工程與設計,2009(19):4567-4570.

[3]Toffoli G.IReport User Manual[M].San Francisco,Califomia,UnitedStates:JasperSoftCorporation,2006.

[4]馬燕,王文發,許淳,等.基于Web的生產統計報表的設計與實現[J].計算機技術與發展,2012,22(2): 213-216.

[5]Tomasedision,360百科詞條:報表引擎[EB/OL]. [2012-10-19].[2015-08-03].http://baike.so.com/ doc/4576231-4787425.html.

[6]巫喬順,彭海波,李杰.一種自定義動態報表系統的設計與應用[J].機械設計與制造工程,2013(1):80-82.

[7]潘永才,劉海龍.可定制報表系統的設計與應用[J].物聯網技術,2015(1):104-106.

[8]劉京華,Java Web整合開發王者歸來[M].北京:清華大學出版社,2010.

[9]朱文芬,杜志銀.基于共詞分析的信息構建研究熱點分析[J].現代情報,2012,32(8):84-87.

[10]余肖生,汪宏舟.信息系統的報表存取模式研究[J].現代情報,2015(2):53-56.

[11]高涵,周國祥,石雷.B/S下一種報表圖形化方法的研究與實現[J].合肥工業大學學報:自然科學版,2015,38(3):341-344.

[12]王征強.利用JfreeChart開發包繪制圖表[J].邢臺職業技術學院學報,2007(1):39-41.

[13]朱賀新,穆榮,盧建軍.JFreeChart的應用開發與改進[J].西安科技大學學報,2008,12(28):789-791.

[14]Lin Qintan,Jun Shan.Designing and Realizing of Web Report Form Based on Struts Framework[J]. Computer Systems&Applications,2006(11):25-28.

[15]李宇,陸倜,邵秀鳳.基于XML的Web報表解決方案的研究與實現[J].航空計算技術,2004,34(1): 62-65.

Design and implementation of a self reporting engine system based on B/S

QI Ping1,HE Jun-bo2
(1.China University of Petroleum(East China),Qingdao 266580,China;2.China Mobile group Xinjiang Co.Ltd.Bozhou branch,Bortala Mongolia Autonomous Prefecture 833500,China)

Design and implementation of the system of independent reporting engine are generated to meet different needs of the developers for the present database query and display as well as current social requirements for report.The system employs B/S architecture and JSP programming.It offers the developers to log in server via a browser to get their own work space.According to the users'needs,it sets report query projects,which solve the limitations of time and location and shake off query mode involving report format set by the system.After testing,it indicates good stability,compatibility and scalability,which meets the requirements of design.

self-generate;report Engine;B/S architecture;report builder

TN915.09

:A

:1674-6236(2017)08-0078-05

2016-03-18稿件編號:201603245

戚 平(1975—),男,山東青島人,工程師。研究方向:計算機網絡、計算機應用。

猜你喜歡
引擎頁面數據庫
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
藍谷: “涉藍”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
數據庫
財經(2017年2期)2017-03-10 14:35:35
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
無形的引擎
河南電力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame開發
同一Word文檔 縱橫頁面并存
主站蜘蛛池模板: 日本高清视频在线www色| 综合久久久久久久综合网| 亚洲精品久综合蜜| 欧美一级黄片一区2区| 国产精品女主播| 91无码人妻精品一区| 亚洲中文在线看视频一区| 69精品在线观看| 天天色天天操综合网| 网友自拍视频精品区| a国产精品| 国产高清在线观看| 精品欧美视频| 国产综合网站| 亚洲成人动漫在线观看| 日韩123欧美字幕| 九九视频免费在线观看| 激情乱人伦| 欧美日韩在线成人| 国产成人av一区二区三区| 欧美一级大片在线观看| 久草视频精品| 免费AV在线播放观看18禁强制| 毛片基地美国正在播放亚洲| 国产精品大白天新婚身材| 亚洲V日韩V无码一区二区 | 久久这里只有精品2| 欧美国产综合视频| 日韩色图区| 99精品伊人久久久大香线蕉| 91啪在线| 久久久久亚洲AV成人网站软件| 五月天婷婷网亚洲综合在线| 国产产在线精品亚洲aavv| 欧美一级高清片欧美国产欧美| 国产午夜精品鲁丝片| 久久综合五月| 国产精品综合久久久| 91黄视频在线观看| 国产精品乱偷免费视频| 国产aⅴ无码专区亚洲av综合网| 亚洲国产中文精品va在线播放| 中文字幕无线码一区| 国产日韩AV高潮在线| 伊人色天堂| 亚洲中文字幕手机在线第一页| 亚洲久悠悠色悠在线播放| 国产精品成人一区二区| 国产剧情伊人| 91福利免费| 精品欧美一区二区三区久久久| 国产一级在线播放| 最新国产高清在线| 色综合中文| 国产精品久久久久久久久久久久| 色妞www精品视频一级下载| 91网址在线播放| 国产天天色| 久久国产精品电影| 欧美激情第一欧美在线| 99福利视频导航| 久久久久中文字幕精品视频| 国产欧美专区在线观看| 九九精品在线观看| 欧美人与性动交a欧美精品| 在线观看欧美国产| 国产免费精彩视频| 国产香蕉在线| 国产91丝袜在线播放动漫 | 国产交换配偶在线视频| 国产精品不卡片视频免费观看| 欧美日韩综合网| 亚洲品质国产精品无码| 91视频99| 人妻熟妇日韩AV在线播放| 久久香蕉国产线看观看式| 精品一区二区三区四区五区| 国产激情无码一区二区三区免费| 久久综合成人| 亚洲无码37.| 久久一日本道色综合久久| 5555国产在线观看|