• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于B/S架構(gòu)的自主生成報表引擎系統(tǒng)設(shè)計與實現(xiàn)

    2017-04-25 13:27:12何俊博
    電子設(shè)計工程 2017年8期
    關(guān)鍵詞:折線圖引擎報表

    戚 平,何俊博

    (1.中國石油大學(xué)(華東)山東 青島266580;2.中國移動通信集團新疆有限公司博州分公司 新疆 博爾塔拉蒙古自治州833500)

    基于B/S架構(gòu)的自主生成報表引擎系統(tǒng)設(shè)計與實現(xiàn)

    戚 平1,何俊博2

    (1.中國石油大學(xué)(華東)山東 青島266580;2.中國移動通信集團新疆有限公司博州分公司 新疆 博爾塔拉蒙古自治州833500)

    基于當前社會對報表應(yīng)用的需求,為滿足開發(fā)人員對已有數(shù)據(jù)庫查詢顯示的不同需要,采用B/S架構(gòu),使用JSP編程,設(shè)計實現(xiàn)了自主生成報表引擎系統(tǒng)。該系統(tǒng)使用瀏覽器登錄服務(wù)器,為用戶劃分個人工作空間,根據(jù)用戶需求自由設(shè)定報表的查詢項目,解決了時間、地點的局限,突破了只能按系統(tǒng)設(shè)定好的報表模版查詢的桎梏。經(jīng)測試該系統(tǒng)具有良好的穩(wěn)定性、兼容性和可擴展性,達到了設(shè)計的要求。

    自主生成;報表引擎;B/S架構(gòu);報表生成器

    在信息社會中,各種信息都需要進行處理并直觀的展現(xiàn)出來。很多企業(yè)的系統(tǒng)中都需要將大量數(shù)據(jù)以報表的方式顯示和分析,報表的重要性越來越得到了企業(yè)決策者的肯定。隨著時代的變遷,傳統(tǒng)紙質(zhì)報表在社會的進步以及科技的發(fā)展中逐漸被電子報表所取代,各大公司也投入了大量資金進行報表設(shè)計工具的開發(fā)[1-2]。目前大型企業(yè)基于B/S的報表系統(tǒng)開發(fā)模式越來越成熟,但是很多開發(fā)人員仍在根據(jù)實際需求直接寫代碼實現(xiàn)數(shù)據(jù)的分析、處理、展現(xiàn)功能。這樣的實現(xiàn)方式會做很多重復(fù)工作,比如很多項目中都需要通過報表數(shù)據(jù)和圖表來展現(xiàn)業(yè)務(wù)趨勢,而展現(xiàn)的時間粒度、地域粒度、數(shù)據(jù)緯度和指標卻各不相同,所以結(jié)果也是不同的[3-4]。

    報表引擎是用來生成相應(yīng)的報表并展示給用戶的一種工具。報表引擎起源于流行的工作流引擎的原理、報表格式的定義、報表內(nèi)容的各種算法,產(chǎn)生報表引擎的思想。它主要是引用工作流引擎的流程運轉(zhuǎn)原理,在原始數(shù)據(jù)的基礎(chǔ)上,定義報表的格式、報表的算法,根據(jù)定義的算法自動執(zhí)行計算,并輸出計算后的結(jié)果,再根據(jù)定義的報表格式顯示報表的內(nèi)容[5]。

    客戶使用的系統(tǒng)中經(jīng)常需要顯示大量的報表,這些報表中的指標隨著客戶的需求變化也在不斷地發(fā)生改變,這對管理人員來說當用戶需求改變時就要大規(guī)模的更改系統(tǒng),修改顯示報表的頁面。為了使管理人員解脫束縛,在已有數(shù)據(jù)的基礎(chǔ)上開發(fā)一套能夠通過自定義來生成報表的系統(tǒng),這會大大降低管理人員對于系統(tǒng)的維護時間。隨著需求的出現(xiàn),技術(shù)人員開發(fā)出了很多系統(tǒng)平臺,比如:巫喬順等設(shè)計并實現(xiàn)了一種基于XML和Excel技術(shù)的自定義動態(tài)報表系統(tǒng),系統(tǒng)由數(shù)據(jù)層、業(yè)務(wù)層、定義層及展現(xiàn)層組成[6];潘永才等則提出了一種可定制報表系統(tǒng)的設(shè)計方法:給出了可定制報表系統(tǒng)架構(gòu)與實現(xiàn)方法,并在.NET平臺下設(shè)計了由報表定制模塊、報表解析模塊等組成的可定制報表系統(tǒng)[7]。

    隨著當前網(wǎng)絡(luò)環(huán)境的無處不在,各種電子產(chǎn)品大都具備了連通網(wǎng)絡(luò),處理各種信息乃至工作任務(wù)的強大功能,直接利用這些工具通過網(wǎng)絡(luò)瀏覽器來完成一些報表的定制將會極大地方便從事相關(guān)工作的從業(yè)人員?;贐/S架構(gòu)的自主生成報表引擎系統(tǒng)的設(shè)計與實現(xiàn),為解決這樣的社會需求提供了一種解決的思路。報表從某種方式上可以劃分為兩類:用來查詢顯示的報表,提供數(shù)據(jù)上報的報表。在這個系統(tǒng)里只涉及用來查詢顯示的報表。

    1 系統(tǒng)設(shè)計

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

    系統(tǒng)根據(jù)用戶提供的要求來定制報表,需要實現(xiàn)以下功能:

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

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

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

    4)預(yù)覽報表:預(yù)覽已經(jīng)定制的報表。

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

    6)報表下載打?。簩蟊韺?dǎo)出到Excle表格中或者打印。

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

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

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

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

    2 系統(tǒng)實現(xiàn)

    2.1 用戶工作區(qū)的實現(xiàn)

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

    圖1 主頁面框架

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

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

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

    圖2 session創(chuàng)建流程

    2.2 報表生成、修改功能的實現(xiàn)

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

    在自主生成報表引擎系統(tǒng)中,通過頁面調(diào)用的報表生成器來實現(xiàn)報表的自主設(shè)計,如圖3所示。

    圖3 報表生成頁面

    報表生成器中需要設(shè)定的內(nèi)容有一下幾部分。

    報表名稱:在文本域內(nèi)輸入想要新建的報表名。

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

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

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

    在全部相關(guān)設(shè)置填寫完畢并提交后,系統(tǒng)將所有的設(shè)置項提交并進行處理,將設(shè)置的內(nèi)容分類添加入數(shù)據(jù)庫進行保存。相關(guān)JavaBean部分代碼如下:

    設(shè)置完成后,生成相應(yīng)報表如圖4所示。

    圖4 生成報表

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

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

    2.3 繪制折線圖功能實現(xiàn)

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

    圖5 折線圖

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

    3 結(jié)束語

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

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

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

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

    [4]馬燕,王文發(fā),許淳,等.基于Web的生產(chǎn)統(tǒng)計報表的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,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]巫喬順,彭海波,李杰.一種自定義動態(tài)報表系統(tǒng)的設(shè)計與應(yīng)用[J].機械設(shè)計與制造工程,2013(1):80-82.

    [7]潘永才,劉海龍.可定制報表系統(tǒng)的設(shè)計與應(yīng)用[J].物聯(lián)網(wǎng)技術(shù),2015(1):104-106.

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

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

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

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

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

    [13]朱賀新,穆榮,盧建軍.JFreeChart的應(yīng)用開發(fā)與改進[J].西安科技大學(xué)學(xué)報,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報表解決方案的研究與實現(xiàn)[J].航空計算技術(shù),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—),男,山東青島人,工程師。研究方向:計算機網(wǎng)絡(luò)、計算機應(yīng)用。

    猜你喜歡
    折線圖引擎報表
    Optimization Design of Miniature Air Quality Monitoring System Based on Multi-Sensor Fusion Technology
    LabWindows/CVI中Excel報表技術(shù)研究
    讓折線圖顯示在一個單元格中
    再多也不亂 制作按需顯示的折線圖
    電腦愛好者(2018年2期)2018-01-31 19:07:26
    從三大報表讀懂養(yǎng)豬人的成績單
    藍谷: “涉藍”新引擎
    商周刊(2017年22期)2017-11-09 05:08:31
    美化Excel折線圖表
    電腦愛好者(2017年1期)2017-04-14 10:16:22
    無形的引擎
    河南電力(2015年5期)2015-06-08 06:01:46
    基于Cocos2d引擎的PuzzleGame開發(fā)
    月度報表
    中國紡織(2009年7期)2009-08-07 06:56:16
    富源县| 大同市| 洛宁县| 襄城县| 孟州市| 库尔勒市| 乡城县| 儋州市| 巴中市| 那坡县| 新蔡县| 义乌市| 漳浦县| 全南县| 晴隆县| 丽江市| 侯马市| 宁晋县| 革吉县| 库尔勒市| 桃江县| 平江县| 汽车| 瑞安市| 高淳县| 莱西市| 绥滨县| 泸州市| 湘潭县| 余庆县| 陕西省| 荆州市| 昭通市| 淮北市| 武川县| 邓州市| 华阴市| 雅江县| 东明县| 巨野县| 渝中区|