一種報表快速生成及發(fā)布的系統(tǒng)及其方法
【專利摘要】本發(fā)明公開了一種報表快速生成及發(fā)布的系統(tǒng)及其方法,其運行在網(wǎng)絡(luò)服務(wù)器上,有權(quán)限的用戶可以隨時通過瀏覽器接入進(jìn)行報表設(shè)計及發(fā)布;該系統(tǒng)包括用于生成報表模板文件的報表設(shè)計器;用于報表模板文件進(jìn)行解析的解析模塊;用于組件中表達(dá)式和腳本進(jìn)行計算并且對各個組件的大小位置和布局進(jìn)行計算的計算模塊;根據(jù)計算出的組件的具體位置,大小,屬性完成組件的實質(zhì)化收集,重新進(jìn)行組裝的渲染模塊;將渲染得出的數(shù)據(jù)展現(xiàn)在頁面上的展現(xiàn)模塊。本發(fā)明用戶通過設(shè)計模塊完成報表設(shè)計之后,發(fā)布在服務(wù)器上,即可通過瀏覽器瀏覽到最終的報表,此報表可以以url的形式集成到其他的業(yè)務(wù)系統(tǒng)中。此系統(tǒng)具有設(shè)計快速,發(fā)布方便,集成簡單的特點。
【專利說明】一種報表快速生成及發(fā)布的系統(tǒng)及其方法
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及一種報表快速生成及發(fā)布的系統(tǒng)及其方法,尤其是基于flash設(shè)計器的報表繪制及生成的系統(tǒng)及方法。
[0003]
【背景技術(shù)】
[0004]大型企業(yè)各項經(jīng)營信息繁瑣,分散在各個部門,企業(yè)總部為實現(xiàn)經(jīng)營分析目的,需要從各個部門分別收集信息再分類匯總,最后編制經(jīng)營分析報表,浪費大量人力、財力及時間。尤其是企業(yè)的組織結(jié)構(gòu)經(jīng)常發(fā)生變動,使得分散在各部門的信息更加不易管理,報表往往要不間斷的更新,并且決策類報表有時往往要求很短的時間內(nèi)提供。熟悉業(yè)務(wù)的人往往不懂報表設(shè)計,懂報表設(shè)計的人往往不熟悉業(yè)務(wù),溝通成本極高。因此,當(dāng)代主流報表都更加注重操作簡單和快速上線兩個關(guān)鍵點,操作簡單,讓懂業(yè)務(wù)的人直接參與完成報表設(shè)計,快速上線,則能讓決策層第一時間得到最新的數(shù)據(jù)分析報表。
[0005]國內(nèi)主流報表都極好的解決了報表設(shè)計步驟復(fù)雜的問題,有些報表采用excel表格的方式來生成報表,有些則米用組件拖拽+表格布局的方式,屬性也更加的多樣,同時支持大量的函數(shù)和表達(dá)式以支持更加復(fù)雜的計算,多年的發(fā)展讓他們的界面操作更加友好和精細(xì)。但是很多報表都是基于客戶端軟件來設(shè)計,業(yè)務(wù)人員必須安裝軟件之后才能進(jìn)行操作,在快速上線方面,許多報表系統(tǒng)都存在著各類集成復(fù)雜的問題,報表生成之后,設(shè)計界面復(fù)雜設(shè)計報表周期長,上線周期長,與企業(yè)系統(tǒng)融合困難,上線困難等問題直接阻礙業(yè)務(wù)人員的使用。
【發(fā)明內(nèi)容】
[0006]針對現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于實現(xiàn)一種基于瀏覽器的在線設(shè)計的報表快速生成及發(fā)布的系統(tǒng)及其方法,米用拖拽報表兀素的方式完成報表設(shè)計,報表保存在服務(wù)器中,以url方式快速集成到其他業(yè)務(wù)系統(tǒng)上線,客戶通過瀏覽器訪問該報表時,月艮務(wù)器完成所有的數(shù)據(jù)收集和計算,將最終的效果展現(xiàn)給客戶。
[0007]為了實現(xiàn)上述目的,本發(fā)明是通過如下的技術(shù)方案來實現(xiàn):
一種報表快速生成及發(fā)布的系統(tǒng),其特征在于,包括以下模塊:
報表設(shè)計器,用于對報表組件進(jìn)行布局,設(shè)定數(shù)據(jù)源及數(shù)據(jù)集,設(shè)置報表組件屬性,生成報表模板文件,并將報表模板文件存儲在數(shù)據(jù)庫中;
解析模塊,讀取報表模板文件并解析各個報表元素,解析出其中包含報表組件,及其每一個組件的屬性,并根據(jù)模板文件中數(shù)據(jù)源及數(shù)據(jù)集信息到指定的數(shù)據(jù)庫獲取對應(yīng)的數(shù)據(jù);
計算模塊,用于獲取報表組件中的表達(dá)式及腳本,逐一進(jìn)行計算,完成各個報表元素的屬性值計算,并將計算結(jié)果返回給各個報表組件;
渲染模塊,根據(jù)計算模塊計算的數(shù)據(jù)重新設(shè)置各個報表組件的屬性,進(jìn)行報表的重新組裝,完成各個報表元素的重新組裝和布局;
展現(xiàn)模塊,用于對渲染模塊得到報表在頁面上進(jìn)行展示,呈現(xiàn)出最終的報表效果。
[0008]進(jìn)一步的,所述報表設(shè)計器提供的報表組件包括布局組件,數(shù)據(jù)組件以及獨立元素組件;所述布局組件包括頁眉、頁腳、數(shù)據(jù)首、數(shù)據(jù)區(qū)、數(shù)據(jù)尾、分組首、分組尾、面板、表格;所述數(shù)據(jù)組件包括數(shù)據(jù)源連接、數(shù)據(jù)集、參數(shù)、合計;所述獨立元素組件包括文本框、圖片、圖表、交叉表、復(fù)選框;所述報表組件均通過鼠標(biāo)拖拽的方式進(jìn)行繪制和布局。
[0009]進(jìn)一步的,設(shè)計器生成的報表模板文件以XML文件的方式,記錄所有報表元素的屬性及歸屬關(guān)系。
[0010]作為優(yōu)選,所述解析模塊從數(shù)據(jù)庫中獲取模板文件,并解析XML中的各個報表元素,完成數(shù)據(jù)獲取。
[0011]作為優(yōu)選,上述展現(xiàn)模塊的展示格式包括flash和html形式。
[0012]一種報表快速生成及發(fā)布的方法,其方法步驟如下:
(1)生成報表模板文件;通過表格設(shè)計器的拖拽組件對報表組件進(jìn)行布局,設(shè)定數(shù)據(jù)源及數(shù)據(jù)集,設(shè)置組件屬性,生成報表模板文件;將模板文件存儲在數(shù)據(jù)庫中;
(2)讀取報表模板文件并解析;當(dāng)用戶預(yù)覽報表時,通過解析模塊讀取報表模板文件并解析,并根據(jù)模板文件中數(shù)據(jù)源及數(shù)據(jù)集信息到指定的數(shù)據(jù)庫獲取數(shù)據(jù);
(3 )完成各個報表兀素的屬性值計算;獲取報表組件中的表達(dá)式及腳本,逐一各個報表元素的屬性值進(jìn)行計算,并將計算結(jié)果返回給各個報表組件;
(4)完成各個報表元素的重新組裝和布局;根據(jù)步驟(3)計算的數(shù)據(jù)重新設(shè)置各個報表組件的屬性,進(jìn)行報表的重新組裝,完成各個報表元素的重新組裝和布局;
(5)展現(xiàn)最終的報表效果;用戶獲取報表地址,將自己設(shè)計的報表集成到自己系統(tǒng)中,展現(xiàn)出最終的報表效果。
[0013]本發(fā)明運行在網(wǎng)絡(luò)服務(wù)器上,有權(quán)限的用戶可以隨時通過瀏覽器接入進(jìn)行報表設(shè)計及發(fā)布,設(shè)計部分主要由報表設(shè)計器組成,擁有大量的報表設(shè)計組件,采用條帶式布局,通過拖拽組件的方式完成報表整體設(shè)計,通過組件的屬性更改來完成細(xì)節(jié)上的處理,最終生成對應(yīng)的報表模板文件,并將其保存在服務(wù)器中;完全的自由設(shè)計,不受表格約束,與企業(yè)集成方式簡單,只需要一個訪問地址即可接入,用戶通過設(shè)計模塊完成報表設(shè)計之后,發(fā)布在服務(wù)器上,即可通過瀏覽器瀏覽到最終的報表,此報表可以以url的形式集成到其他的業(yè)務(wù)系統(tǒng)中;其具有設(shè)計快速,發(fā)布方便,集成簡單的優(yōu)點;當(dāng)用戶預(yù)覽報表時,服務(wù)器通過解析,計算,渲染等模塊來得到實際的報表,以html和flash兩種形式展現(xiàn)報表;企業(yè)系統(tǒng)僅需集成一個報表訪問地址,即可將設(shè)計的報表集成到系統(tǒng)中。
[0014]【專利附圖】
【附圖說明】:
圖1是本發(fā)明實施例提供的方法的流程圖。
[0015]圖2是本發(fā)明的各模塊之間的連接示意圖。
[0016]【具體實施方式】:
為使本發(fā)明實現(xiàn)的技術(shù)手段、創(chuàng)作特征、達(dá)成目的與功效易于明白了解,下面結(jié)合【具體實施方式】,進(jìn)一步闡述本發(fā)明。
[0017]參見圖1和圖2,本實施例提供的是一種報表快速生成及發(fā)布的系統(tǒng)和方法,其運行在網(wǎng)絡(luò)服務(wù)器上,有權(quán)限的用戶可以隨時通過瀏覽器接入進(jìn)行報表設(shè)計及發(fā)布。該系統(tǒng)包括設(shè)計和展現(xiàn)兩大部分。
[0018]設(shè)計模塊主要由報表設(shè)計器組成,擁有大量的報表設(shè)計組件,采用條帶式布局,通過拖拽組件的方式完成報表整體設(shè)計,通過組件的屬性更改來完成細(xì)節(jié)上的處理,最終生成對應(yīng)的報表模板文件,并將其保存在服務(wù)器中。
[0019]展現(xiàn)部分包括解析模塊,計算模塊,渲染模塊以及展現(xiàn)模塊組成。解析模塊用于報表模板文件的解析,解析出其中包含報表組件,及其每一個組件的屬性,連接數(shù)據(jù)庫,獲取對應(yīng)的數(shù)據(jù);計算模塊主要用于組件中表達(dá)式和腳本進(jìn)行計算,如求和,最大值,最小值等等,并且對各個組件的大小位置和布局進(jìn)行計算;渲染模塊根據(jù)計算出的組件的具體位置,大小,屬性完成組件的實質(zhì)化收集,重新進(jìn)行組裝;展現(xiàn)模塊是將渲染得出的數(shù)據(jù)展現(xiàn)在頁面上,展現(xiàn)模塊包含flash和html頁面兩種展現(xiàn)方式。用戶通過設(shè)計模塊完成報表設(shè)計之后,發(fā)布在服務(wù)器上,即可通過瀏覽器瀏覽到最終的報表,此報表可以以url的形式集成到其他的業(yè)務(wù)系統(tǒng)中。此系統(tǒng)具有設(shè)計快速,發(fā)布方便,集成簡單的特點。
[0020]本實施例中,實現(xiàn)報表快速生成及發(fā)布的方法,其方法如下:
(1)通過設(shè)計器的拖拽組件對報表組件進(jìn)行布局,設(shè)定數(shù)據(jù)源及數(shù)據(jù)集,設(shè)置組件屬性,生成報表模板文件;將模板文件存儲在數(shù)據(jù)庫中;
(2)當(dāng)用戶預(yù)覽報表時,通過解析模塊讀取報表模板文件并解析,并根據(jù)模板文件中數(shù)據(jù)源及數(shù)據(jù)集信息到指定的數(shù)據(jù)庫獲取數(shù)據(jù);
(3)通過計算模塊完成各個報表元素的屬性值計算;通過渲染模塊完成各個報表元素的重新組裝和布局;
(4)通過展現(xiàn)模塊呈現(xiàn)出最終的報表效果,用戶只要獲取報表id,就很方便的將自己設(shè)計的報表集成到他們的系統(tǒng)中。
[0021]兩種形式的訪問同時還支持報表導(dǎo)出,導(dǎo)出格式包括word, pdf, excel三種,方便業(yè)務(wù)人員離線保存報表文件。種形式的訪問還支持在線打印,flash精確打印。
[0022]為更詳細(xì)闡述本發(fā)明,本實施例的具體方法步驟如下:
第一步:通過報表管理模塊打開報表設(shè)計器;
報表管理模塊是報表服務(wù)器提供給用戶的訪問門戶,可以進(jìn)行報表組和單個報表的新增、修改,刪除等操作,還可以對全局?jǐn)?shù)據(jù)源進(jìn)行管理。
[0023]對于單獨報表,頁面管理提供“設(shè)計”和“預(yù)覽”兩項功能,點擊“設(shè)計”按鈕,打開報表設(shè)計器進(jìn)行報表設(shè)計;點擊“預(yù)覽”按鈕,可以觀察頁面報表效果。
[0024]第二步:通過報表設(shè)計器設(shè)計報表
報表設(shè)計器提供的報表組件包括布局組件,數(shù)據(jù)組件,獨立元素組件。
[0025]布局組件包括“頁眉”、“頁腳”,“數(shù)據(jù)首”,“數(shù)據(jù)區(qū)”,“數(shù)據(jù)尾”,“分組首”,“分組尾”,“面板”,“表格”。
[0026]數(shù)據(jù)組件包括“數(shù)據(jù)源連接”,“數(shù)據(jù)集”,“參數(shù)”,“合計”
獨立元素組件包括“文本框”,“圖片”,“圖表”,“交叉表”,“復(fù)選框”。
[0027]以下是對于三類組件的簡單介紹:
Al:布局組件 AlOl 頁眉”和“頁腳”,通常顯示文檔的附加信息,常用來插入時間、日期、頁碼、單位名稱、微標(biāo)等。其中,頁眉在頁面的頂部,頁腳在頁面的底部。通常頁眉也可以添加文檔注釋等內(nèi)容。
[0028]A102 數(shù)據(jù)首”,通常位于“數(shù)據(jù)區(qū)”上方,通常顯示數(shù)據(jù)區(qū)的列名,還有其他一些固定文本信息也可以在此展示。
[0029]A103:“數(shù)據(jù)區(qū)”,是報表最核心的組件,用于循環(huán)展示報表中的各個元素,循環(huán)次數(shù)依賴于綁定的數(shù)據(jù)集的條數(shù),縱向擴展顯示。
[0030]A104 數(shù)據(jù)尾”,通常位于“數(shù)據(jù)區(qū)”下方,通常用于展示“合計”或者其他固定的文本信息。
[0031]A105: “分組首”,用于分組報表元素字段,分組首中可以設(shè)置分組條件,通常為聯(lián)合表中的某個字段,按照此字段分組,然后數(shù)據(jù)區(qū)逐組展示數(shù)據(jù)。
[0032]A106: “分組尾”,用于分組數(shù)據(jù)展示完畢之后,顯示一些固定的文本信息或者變量信息。
[0033]A107: “面板”,單純的布局組件,可以將報表空余部分進(jìn)行整體切割劃分,在行對其方面有其獨特的優(yōu)勢,可以自動伸展和收縮,專為復(fù)雜的樣式布局而準(zhǔn)備。
[0034]A108: “表格”,表格組件,是對“文本框”組件的補充,可以迅速插入一個表格已完成排版和布局,插入一次表格,即可形成多個排列整齊的文本框,而且可以對其中的文本框拉伸,別的文本框隨之而動,調(diào)整方式簡單。
[0035]B1:數(shù)據(jù)組件
BlOl:數(shù)據(jù)源連接組件,具有新建,刪除,編輯功能。數(shù)據(jù)源分為私有和全局?jǐn)?shù)據(jù)源兩種,私有數(shù)據(jù)源為單獨報表享有,全局?jǐn)?shù)據(jù)源為所有的報表共享使用,全局?jǐn)?shù)據(jù)源一次更改,即可影響到所有使用此數(shù)據(jù)源的報表。
[0036]報表的數(shù)據(jù)源支持多種類型,包括oracle, mysql, sqlserver , db2,金倉,達(dá)夢.報表為上述每種數(shù)據(jù)源都提供對應(yīng)的驅(qū)動包。
[0037]數(shù)據(jù)源連接組件還提供了“測試連接”功能,可以通過測試,得知設(shè)置的信息是否正確。
[0038]B102:數(shù)據(jù)集組件,具有新增,修改,刪除功能。數(shù)據(jù)集是收集數(shù)據(jù)信息的主體承擔(dān)組件,新建數(shù)據(jù)集對話框中,提供sql查詢編寫框,輸入對應(yīng)的查詢數(shù)據(jù),即可瀏覽到對應(yīng)字段和數(shù)據(jù),同時還支持參數(shù)來查詢,預(yù)覽的合適數(shù)據(jù)的時候,即可保存數(shù)據(jù)集。
[0039]B103:參數(shù)組件,具有新增,修改,刪除功能。參數(shù)組件提供了多種形式的參數(shù)類型,包括String, Number, Boolean, datetime。參數(shù)的來源有三種方式,分別是“手工輸入”,“列表框”,“數(shù)據(jù)庫”。
[0040]B104:合計組件,具有新增,修改,刪除功能。合計組件主要提供某一區(qū)域的數(shù)據(jù)提供合計,最大值,最小值,平均值,計數(shù)等功能,報表對于這些數(shù)據(jù)的需求量很大。
[0041]Cl:獨立元素組件
ClOl: “文本框”組件,作為報表最核心的元素,文本框幾乎承擔(dān)了 80%以上的數(shù)據(jù)展示。文本框的值可以是固定字符串,數(shù)據(jù)集的某個字段,合計值,參數(shù)值,或者是上面幾種值的組合表達(dá)式,基本上可以獲取各類數(shù)據(jù)。
[0042]文本框的屬性中,包含對字體的設(shè)置,可以設(shè)置字體樣式,水平,垂直位置,文本格式等,其中“文本格式”包括常規(guī),數(shù)字,貨幣,日期,時間,百分?jǐn)?shù),布爾值等多種格式。
[0043]文本框的屬性中,可以對邊框進(jìn)行設(shè)置,邊框顏色,粗細(xì),樣式等。
[0044]文本框的屬性中,可以設(shè)置回填,回填操作是后期客戶最主要的操作之一,能夠直接更改數(shù)據(jù)庫中對應(yīng)字段的值,回填屬性可以設(shè)置回填字段,回填條件等。
[0045]文本框的屬性中,可以填寫執(zhí)行腳本,執(zhí)行腳本是用javascript編寫,支持此類型的編譯,可以讓服務(wù)器計算更加復(fù)雜的程序,大大增加了文本框值獲取的靈活性。
[0046]文本框的屬性中,可以設(shè)置布局調(diào)整方式,包括支持自動換行,自動寬度,容器高度等,其中設(shè)置容器高度之后,整行文本框都會保持一致的高度,有利于排版,自動寬度則是隨著文本框內(nèi)字符的多少而進(jìn)行橫向擴展,自動換行則是隨著文本框內(nèi)字符的多少縱向擴展。
[0047]C102: “圖片”組件,可以從本地插入一張圖片到報表,也可以指定數(shù)據(jù)集中圖片字段到此位置。圖片組件的屬性中,可以設(shè)置放大倍數(shù),透明度、圖像旋轉(zhuǎn)度數(shù),長寬比,拉伸,其中選擇拉伸,可以讓圖片填充到整個組件大小,長寬比可以重新修改圖片的長寬比例,放大倍數(shù)可以放大圖片或者縮小圖片。
[0048]C103: “圖表”組件,是報表圖形化展示最核心的組件,可以提供柱形圖,條形圖,折線圖,面積圖五種圖形,并且這幾種圖形可以兩兩組合形成雙軸圖表。圖表的X和Y軸與數(shù)據(jù)集中的字段進(jìn)行綁定,圖形用于展示數(shù)值差異,美觀而且實用。圖表組件可以提供圖表聯(lián)動功能,即點擊第一張圖表的某個位置,可以展現(xiàn)第二張圖表對應(yīng)的數(shù)據(jù)。
[0049]C104: “交叉表”組件,交叉表是此報表系統(tǒng)專為中國式復(fù)雜報表提供的設(shè)計組件,能夠提供行和列兩個方向的同時分組,進(jìn)行數(shù)據(jù)統(tǒng)計展現(xiàn)。交叉表還提供了行列方向上的合計功能,統(tǒng)計值可以為合計值,平均值,最小值,最大值,計數(shù)值等等。交叉表組件還提供了多維分組方式,即行和列方向上可以更加多個字段進(jìn)行多層次分組。
[0050]C105: “復(fù)選框”組件,為勾選類數(shù)據(jù)提供組件支持。
[0051]設(shè)計報表分為以下三個過程:
(一)通過布局組件進(jìn)行整個報表的樣式布局。
[0052](二)通過數(shù)據(jù)組件設(shè)置報表獲取數(shù)據(jù)的來源,篩選方式,統(tǒng)計方式。
[0053](三)通過獨立元素組件填充報表內(nèi)容,將數(shù)據(jù)插入到報表的對應(yīng)位置上。
[0054](四)通過步驟即可完成報表設(shè)計,并且將各個組件記錄在報表模板xml文件中。
[0055]第三步:通過設(shè)計器的預(yù)覽功能預(yù)覽報表效果
報表設(shè)計完成之后,是需要立即知道實際效果的,直接上線則可能出現(xiàn)較大偏差。報表設(shè)計器也提供了預(yù)覽功能,觀看報表最終產(chǎn)生的效果。
[0056]報表預(yù)覽效果的生成通過以下四個模塊完成,分別為解析模塊,計算模塊,渲染模塊,展現(xiàn)模塊,其中前三個模塊都是運行在后臺java服務(wù)器上,展現(xiàn)模塊運行在前臺。下面分別對四個模塊簡要介紹:
解析模塊:解析模塊首先對報表模板xml文件進(jìn)行解析,分離出報表包含的各個報表組件,解析過程如下:
1.從xml文件中,解析頂層元素page;
2.在page中,解析查找所有的數(shù)據(jù)源信息,并且建立服務(wù)器與對應(yīng)數(shù)據(jù)庫的連接;
3.根據(jù)數(shù)據(jù)集信息,報表服務(wù)器獲取相應(yīng)的數(shù)據(jù); 4.解析查找所有的布局組件,并生成對應(yīng)的實例;
5.在布局組件中,解析查找所有的獨立元素組件,諸如文本框,圖片等,生成對應(yīng)的實例,并存儲于對應(yīng)的布局組件實例中。
[0057]計算模塊:計算模塊用于計算報表各組件的大小,位置,屬性,實際數(shù)值等,主要計算步驟如下:
1.從page開始,首先對“頁眉”,“頁腳”的高度進(jìn)行計算
2.對“數(shù)據(jù)首”,“數(shù)據(jù)尾”,“分組首”,“分組尾”進(jìn)行計算,這些組件的高度相對固定,計算難度低
3.對“數(shù)據(jù)區(qū)”進(jìn)行計算,“數(shù)據(jù)區(qū)”組件通常會包含大量“文本框”組件,并且會依賴于綁定的數(shù)據(jù)集循環(huán)展現(xiàn)其中的文本框,因此,數(shù)據(jù)區(qū)的大小依賴于文本框的大小。
[0058]4.對“文本框”組件進(jìn)行計算,包含兩部分,一是對文本框綁定值的計算,二是對文本框大小的計算。文本框綁定值如果是數(shù)據(jù)集字段,直接獲取即可,如果是表達(dá)式,則要送到表達(dá)式計算模塊計算,如果是腳本,則需要送到腳本計算模塊計算;文本框大小依賴于文本框綁定值字符數(shù)的大小,字符越多,占用的空間就越大,如果選擇“自動寬度”,則會進(jìn)行橫向擴展,如果選擇“自動換行”屬性,則會進(jìn)行縱向擴展,大小隨之而動。
[0059]5.“文本框”不斷擴展“數(shù)據(jù)區(qū)”,當(dāng)“數(shù)據(jù)區(qū)”聯(lián)合其他布局組件占滿一頁時,就會產(chǎn)生新的頁面,從第一步開始重新計算。
[0060]6.其他獨立元素組件通常放在最后計算,計算相對獨立,不會影響到其他組件。
[0061]渲染模塊:渲染模塊會產(chǎn)生一個過渡報表實例,此實例可以向html, excel, word等其他形式轉(zhuǎn)化,渲染過程如下:
1、新建過渡報表實例;
2、搜索原有的組件實例,將計算模塊計算出的數(shù)據(jù)賦予對應(yīng)的組件實例,生成新的組件實例;
3、將新的組件實例插入到過渡報表實例中。
[0062]展現(xiàn)模塊:展現(xiàn)模塊是根據(jù)過渡報表實例生成不同的展現(xiàn)方式,有flash,html,world, excel,pdf等格式的展現(xiàn)方式。其中以html和flash作為最常見的兩種在線展現(xiàn)方式,word, excel, pdf則以離線保存的方式為主。報表設(shè)計器中的預(yù)覽效果就是以flash形式展現(xiàn)的,服務(wù)器在將過渡報表的計算結(jié)果返回設(shè)計器,設(shè)計器將過渡報表實例轉(zhuǎn)化為flash形式展現(xiàn)。
[0063]第四步:保存報表;
設(shè)計人員在設(shè)計報表時,所使用的每一個報表組件,都會被記錄在報表模板xml文件中,報表組件的大小,位置及其他屬性都會寫入到xml文件中,設(shè)計完成之后,預(yù)覽報表無誤,點擊保存,系統(tǒng)會將報表模板xml文件保存到數(shù)據(jù)庫中,并產(chǎn)生唯一的一個模板ID。
[0064]第五步:快速上線報表;
當(dāng)業(yè)務(wù)系統(tǒng)需要集成報表時,只需要將報表訪問的url地址寫入即可,url中攜帶報表模板ID參數(shù),訪問指定的報表。
[0065]報表服務(wù)器提供兩類瀏覽效果訪問方式,一類是以flash形式展現(xiàn)報表,一類是html形式展現(xiàn)報表。flash形式畫面更加精致,打印更準(zhǔn)確,但對于瀏覽器插件有一定依賴,而且占用瀏覽器內(nèi)存;html展現(xiàn)方式則更加靈活,并且支持?jǐn)?shù)據(jù)回填。
[0066]本發(fā)明的具體實施按照圖1所示流程進(jìn)行,下面以某業(yè)務(wù)系統(tǒng)中的報表設(shè)計到上線過程為例,描述該流程中的各步驟。
[0067]1、通過瀏覽器訪問報表管理模塊,新建報表;
2、打開報表設(shè)計器,拖拽報表布局組件,設(shè)置數(shù)據(jù)源和數(shù)據(jù)集,拖拽獨立元素組件完成細(xì)節(jié)設(shè)計。
[0068]3、通過報表設(shè)計器的預(yù)覽功能,看報表是否符合預(yù)期。
[0069]4、重復(fù)步驟2和3,到報表符合預(yù)期為止,生成報表模板xml文件,保存報表。
[0070]5、獲取報表模板唯一標(biāo)識ID,拼湊url訪問地址。
[0071]將url訪問地址集成到業(yè)務(wù)系統(tǒng)中,即可完成集成上線。
[0072]本發(fā)明有權(quán)限的用戶通過瀏覽器即可接入報表設(shè)計器,多個用戶可以協(xié)同工作,來完成報表設(shè)計。報表設(shè)計器采用良好的flash交互動畫操作,設(shè)計器包含布局組件,數(shù)據(jù)組件,獨立組件三類組件,分別完成布局,數(shù)據(jù)設(shè)置,細(xì)節(jié)設(shè)計工作,通過各類組件的屬性增加更多的動作特效。當(dāng)用戶預(yù)覽報表時,服務(wù)器通過解析,計算,渲染等模塊來得到實際的報表,以html和flash兩種形式展現(xiàn)報表。企業(yè)系統(tǒng)僅需集成一個報表訪問地址,即可將設(shè)計的報表集成到系統(tǒng)中,。此系統(tǒng)具有設(shè)計快速,發(fā)布方便,集成簡單的特點。
[0073]本發(fā)明無需安裝任何客戶端軟件,有權(quán)限的人員隨時通過瀏覽器訪問報表設(shè)計器來設(shè)計報表,通過拖拽組件來完成精確設(shè)計,完全的自由設(shè)計,不受表格約束,與企業(yè)集成方式簡單,只需要一個訪問地址即可接入,具有設(shè)計簡潔,集成簡單,快速上線的特點;解決了當(dāng)前很多報表系統(tǒng)都存在設(shè)計界面復(fù)雜,設(shè)計報表周期長,與企業(yè)系統(tǒng)融合困難,上線周期長的問題。并通過更加友好的flash設(shè)計器來設(shè)計報表,通過url這種簡單的方式與企業(yè)系統(tǒng)集成,解決了以上企業(yè)報表的問題。
[0074]以上顯示和描述了本發(fā)明的基本原理和主要特征和本發(fā)明的優(yōu)點。本行業(yè)的技術(shù)人員應(yīng)該了解,本發(fā)明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進(jìn),這些變化和改進(jìn)都落入要求保護(hù)的本發(fā)明范圍內(nèi)。本發(fā)明要求保護(hù)范圍由所附的權(quán)利要求書及其等效物界定。
【權(quán)利要求】
1.一種報表快速生成及發(fā)布的系統(tǒng),其特征在于,包括以下模塊: 報表設(shè)計器,用于對報表組件進(jìn)行布局,設(shè)定數(shù)據(jù)源及數(shù)據(jù)集,設(shè)置報表組件屬性,生成報表模板文件,并將報表模板文件存儲在數(shù)據(jù)庫中; 解析模塊,讀取報表模板文件并解析各個報表元素,解析出其中包含報表組件,及其每一個組件的屬性,并根據(jù)模板文件中數(shù)據(jù)源及數(shù)據(jù)集信息到指定的數(shù)據(jù)庫獲取對應(yīng)的數(shù)據(jù); 計算模塊,獲取報表組件中的表達(dá)式及腳本,逐一進(jìn)行計算,完成各個報表元素的屬性值計算,并將計算結(jié)果返回給各個報表組件; 渲染模塊,根據(jù)計算模塊計算的數(shù)據(jù)重新設(shè)置各個報表組件的屬性,進(jìn)行報表的重新組裝,完成各個報表元素的重新組裝和布局; 展現(xiàn)模塊,用于對渲染模塊得到報表在頁面上進(jìn)行展示,呈現(xiàn)出最終的報表效果。
2.根據(jù)權(quán)利要求1所述的報表快速生成及發(fā)布的系統(tǒng),其特征在于, 所述報表設(shè)計器提供的報表組件包括布局組件,數(shù)據(jù)組件以及獨立元素組件; 所述布局組件包括頁眉、頁腳、數(shù)據(jù)首、數(shù)據(jù)區(qū)、數(shù)據(jù)尾、分組首、分組尾、面板、表格; 所述數(shù)據(jù)組件包括數(shù)據(jù)源連接、數(shù)據(jù)集、參數(shù)、合計; 所述獨立元素組件包括文本框、圖片、圖表、交叉表、復(fù)選框; 所述報表組件均通過鼠標(biāo)拖拽的方式進(jìn)行繪制和布局。
3.根據(jù)權(quán)利要求1所述的報表快速生成及發(fā)布的系統(tǒng),其特征在于,設(shè)計器生成的報表模板文件以XML文件的方式,記錄所有報表元素的屬性及歸屬關(guān)系。
4.根據(jù)權(quán)利要求3所述的報表快速生成及發(fā)布的系統(tǒng),其特征在于,所述解析模塊從數(shù)據(jù)庫中獲取模板文件,并解析XML中的各個報表元素,完成數(shù)據(jù)獲取。
5.根據(jù)權(quán)利要求1所述的報表快速生成及發(fā)布的系統(tǒng),其特征在于,上述展現(xiàn)模塊的展示格式包括flash和html形式。
6.一種報表快速生成及發(fā)布的方法,其特征在于,其方法步驟如下: (1)生成報表模板文件;對報表組件進(jìn)行布局,設(shè)定數(shù)據(jù)源及數(shù)據(jù)集,設(shè)置組件屬性,生成報表模板文件;將模板文件存儲在數(shù)據(jù)庫中; (2)讀取報表模板文件并解析;當(dāng)用戶預(yù)覽報表時,通過解析模塊讀取報表模板文件并解析,并根據(jù)模板文件中數(shù)據(jù)源及數(shù)據(jù)集信息到指定的數(shù)據(jù)庫獲取數(shù)據(jù); (3 )完成各個報表兀素的屬性值計算;獲取報表組件中的表達(dá)式及腳本,逐一各個報表元素的屬性值進(jìn)行計算,并將計算結(jié)果返回給各個報表組件; (4)完成各個報表元素的重新組裝和布局;根據(jù)步驟(3)計算的數(shù)據(jù)重新設(shè)置各個報表組件的屬性,進(jìn)行報表的重新組裝,完成各個報表元素的重新組裝和布局; (5)展現(xiàn)最終的報表效果;用戶獲取報表地址,將自己設(shè)計的報表集成到自己系統(tǒng)中,展現(xiàn)出最終的報表效果。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟(2)中,首先對報表模板xml文件進(jìn)行解析,分離出報表包含的各個報表組件,該解析方法如下: (a)從xml文件中,解析頂層元素page; (b)在page中,解析查找所有的數(shù)據(jù)源信息,并且建立服務(wù)器與對應(yīng)數(shù)據(jù)庫的連接; (c)根據(jù)數(shù)據(jù)集信息,報表服務(wù)器獲取相應(yīng)的數(shù)據(jù); (d)解析查找所有的布局組件,并生成對應(yīng)的實例; (e)在布局組件中,解析查找所有的獨立元素組件,生成對應(yīng)的實例,并存儲于對應(yīng)的布局組件實例中。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟(4)中,完成各個報表元素的重新組裝和布局的具體步驟如下: (401)新建過渡報表實例; (402)搜索原有的組件實例,將步驟(3)計算出的數(shù)據(jù)賦予對應(yīng)的組件實例,生成新的組件實例; (402)將新的組件實例插入到過渡報表實例中。
9.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟(3)中,各個報表元素的屬性值進(jìn)行計算,用于計算報表各組件的大小,位置,屬性以及實際數(shù)值,該計算方法步驟如下: (A)從page開始,首先對“頁眉”,“頁腳”的高度進(jìn)行計算; (B)對“數(shù)據(jù)首”,“數(shù)據(jù)尾”,“分組首”,“分組尾”進(jìn)行計算; (C)對“數(shù)據(jù)區(qū)”進(jìn)行計算,“數(shù)據(jù)區(qū)”組件通常會包含大量“文本框”組件,并且會依賴于綁定的數(shù)據(jù)集循環(huán)展現(xiàn)其中的文本框; (D)對“文本框”組件進(jìn)行計算,包含兩部分: 一是對文本框綁定值的計算;文本框綁定值如果是數(shù)據(jù)集字段,直接獲取即可; 如果是表達(dá)式,則要送到表達(dá)式計算模塊計算; 如果是腳本,則需要送到腳本計算模塊計算; 二是對文本框大小的計算; 文本框大小依賴于文本框綁定值字符數(shù)的大小,字符越多,占用的空間就越大,如果選擇“自動寬度”,則會進(jìn)行橫向擴展,如果選擇“自動換行”屬性,則會進(jìn)行縱向擴展; (E)“文本框”不斷擴展“數(shù)據(jù)區(qū)”,當(dāng)“數(shù)據(jù)區(qū)”聯(lián)合其他布局組件占滿一頁時,就會產(chǎn)生新的頁面,從步驟(A)開始重新計算; (F)其他獨立元素組件放在最后計算,計算相對獨立。
10.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述步驟(5)中,展展現(xiàn)最終的報表效果是根據(jù)過渡報表實例生成不同的展現(xiàn)方式,該展現(xiàn)方式包括flash,html, world, excel,pdf的格式展現(xiàn);其中以html和flash作為在線展現(xiàn)方式,word、excel,、df則以離線保存的方式;報表設(shè)計器中的預(yù)覽效果就是以flash形式展現(xiàn)的,服務(wù)器在將過渡報表的計算結(jié)果返回報表設(shè)計器,報表設(shè)計器將過渡報表實例轉(zhuǎn)化為flash形式展現(xiàn)。
【文檔編號】G06F9/44GK104281447SQ201410441534
【公開日】2015年1月14日 申請日期:2014年9月1日 優(yōu)先權(quán)日:2014年9月1日
【發(fā)明者】郭新波, 胡牧, 劉士進(jìn), 蔣厚明, 劉一田 申請人:國家電網(wǎng)公司, 南京南瑞集團(tuán)公司, 南京南瑞信息通信科技有限公司