專利名稱:一種通用報表列表組件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種通用列表組件。
背景技術(shù):
現(xiàn)今各類B/S系統(tǒng)層出不窮,其便捷性和維護(hù)性都大幅度優(yōu)于C/S系統(tǒng)。這其中前臺門戶有較為成熟的CMS等技術(shù)架 構(gòu),但作為功能較為靈活多變的管理(后臺)門戶卻沒有與之匹配的高速開發(fā)架構(gòu)。報表列表作為管理(后臺)門戶的主體構(gòu)成,作者認(rèn)為針對這種復(fù)用度較高的元素有必要抽象提取成為一個全新的組件。這種組件的優(yōu)勢在于對于后臺門戶中的報表列表提供高速開發(fā)的同時,也兼顧良好的界面外觀及功能擴(kuò)展。
發(fā)明內(nèi)容
本發(fā)明是一種高度封裝的,針對后臺門戶通用的通用報表列表組件。為了達(dá)到以上目的,本發(fā)明采用以下技術(shù)方案一種通用報表列表組件,其特征在于
所述通用報表列表組件包括工具模塊,核心模塊,持久模塊,虛擬文件模塊;
所述工具模塊包括
全局變量單元用于承載組件所需要的所有公共變量及內(nèi)存緩存數(shù)據(jù); 樣式管理單元對列表頁面的樣式轉(zhuǎn)換進(jìn)行支持;
所述核心模塊包括
控件創(chuàng)建單元負(fù)責(zé)對于頁面上的下拉,文本控件的創(chuàng)建;
解析單元對客戶端瀏覽器發(fā)起的本組件的AJAX請求和頁面請求進(jìn)行解析; 圖形創(chuàng)建單元負(fù)責(zé)對頁面中的圖形元素的生成;
核心分發(fā)單元統(tǒng)一管理客戶端瀏覽器發(fā)起的請求,交給其他模塊;
所述持久模塊包括
數(shù)據(jù)源實體對象單元用于承載數(shù)據(jù)源;
動態(tài)代理單元用與對數(shù)據(jù)源進(jìn)行切面的事務(wù)管理; iBatis持久支持單元用于本組件與iBatis進(jìn)行整合的支持;
所述虛擬文件模塊包括
虛擬文件加載單元用于將組件內(nèi)的虛擬文件加載到內(nèi)存中,在瀏覽器客戶端發(fā)起請求的同時得到相應(yīng)地址的請求時返回數(shù)據(jù)流。所述全局變量單元包括常規(guī)全局變量,內(nèi)存常駐高速緩存變量;
所述常規(guī)全局變量提供工程啟動路徑,ibatis配置參數(shù)及存儲配置信息的變量;
所述內(nèi)存常駐高速緩存變量包括頁面模板的緩存,反射方法利用Map鍵值對的形式緩存起來,鍵為訪問路徑,值為字節(jié)數(shù)組,便于以后請求高速取出。所述分頁條控件創(chuàng)建器創(chuàng)建分頁條控件。所述解析單元包括導(dǎo)出Excel解析單元針對頁面模板,自動生成需要導(dǎo)出的數(shù)據(jù)源模型。利用前臺JS代碼實現(xiàn)用戶導(dǎo)出設(shè)置界面,讓用戶指定需要導(dǎo)出的列及列的顏色,再根據(jù)用戶的選擇導(dǎo)出 Excel ;
最終頁面生成解析單元根據(jù)瀏覽器客戶端相應(yīng)進(jìn)行對模板頁面的封裝,最終反饋給瀏覽器客戶端,返回的頁面留有上次用戶錄入的查詢條件,同時還支持對模板中配置的javascript代碼的轉(zhuǎn)換并呈現(xiàn)到前臺頁面適當(dāng)?shù)奈恢?,以及對模板中指定JAVA方法的反射調(diào)用,還可以解析權(quán)限配置,提供給不同權(quán)限使用者所視效果不同的結(jié)果;
級聯(lián)請求解析單元根據(jù)下拉列表組件返回的異步請求,返回級聯(lián)數(shù)據(jù)。本發(fā)明的有益效果是
解決了后臺門戶列表頁面及報表頁面開發(fā)速度緩慢,開發(fā)復(fù)雜等問題,包括Excel導(dǎo)出功能不需要編寫額外的代碼;點列頭進(jìn)行排序也不需要過多的設(shè)置,僅僅需要 在SQL增加按ID排序的功能即可,開發(fā)人員無需特別的設(shè)置即可實現(xiàn)列表的Excel導(dǎo)出,統(tǒng)計圖表生成的功能。只需加上特定的SQL條件即可完成全列手動可選排序效果。并且無需額外配置,查詢條件可保存,并且僅需要通過簡單的配置,數(shù)據(jù)源就可實現(xiàn)熱切換。
圖I為本發(fā)明的模塊關(guān)系示意 圖2為本發(fā)明配合spring, ibatis等框架的數(shù)據(jù)流轉(zhuǎn)圖。
具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明做進(jìn)一步的說明
一種通用報表列表組件包括
核心模塊,其中的核心分發(fā)器用戶獲取瀏覽器客戶端的請求區(qū)別其類型交由下面的各個解析器處理,這里解析又分為導(dǎo)出Excel解析器,它主要幫助組件根據(jù)列表的配置自動的導(dǎo)出Excel,不必編寫和列表顯示類似的導(dǎo)出Excel的代碼;最終頁面生成解析器,它就是解析生成最終報表列表頁面的核心部分,在對模板進(jìn)行解析后開始對呈現(xiàn)的頁面進(jìn)行拼裝,其中又包括對權(quán)限的解析,對自定義javascript的組裝,及對自定義JAVA方法的反射調(diào)用;級聯(lián)請求解析器,是專門對于下拉框控件組合級聯(lián)的方式進(jìn)行的特殊封裝,它的作用是讓下拉框可以通過異步的方式獲取數(shù)據(jù),并且只需要指定上級ID及級聯(lián)字段就可以相當(dāng)簡單的完成一系列復(fù)雜的級聯(lián)編碼。如圖I紅色部分所示,用戶通過瀏覽器訪問項目時,被本發(fā)明的核心分發(fā)器所攔截,根據(jù)請求URL判斷其類型如果URL是以〃greenreport/"(不包含引號)關(guān)鍵詞開頭的(項目名除外),則為本發(fā)明的請求,再繼續(xù)判斷剩余的URL段,如果是以"exportExcel/"(不包含引號)關(guān)鍵詞開頭的URL則為導(dǎo)出EXCEL請求,就交給excel解析模塊處理;如果是以"cascadeCombobox /〃(不包含引號)關(guān)鍵詞開頭的則為級聯(lián)請求,將交由級聯(lián)請求解析器處理;其他的請求則統(tǒng)一交由最終頁面解析器處理。如果不是以〃greenreport/〃關(guān)鍵詞開頭的則放過該請求,不做任何處理。持久模塊,它的作用是隱藏底層細(xì)節(jié),讓核心模塊層專注于業(yè)務(wù)邏輯,在擴(kuò)展性方便,也兼容多種持久模式。它又分為iBatis持久支持模塊,它讓組件能夠在SPRING容器內(nèi)和ibatis無縫兼容;jdbc持久支持模塊,它可以讓組件在沒有其他持久框架支持的情況下順利運行;數(shù)據(jù)源實體對象,是對數(shù)據(jù)源的一個抽象體,能夠在多數(shù)據(jù)源或者數(shù)據(jù)源熱切換中起到關(guān)鍵作用。如圖I灰色部分所示,用戶請求到達(dá)任一解析器,在需要查詢數(shù)據(jù)庫時,通過ibatis持久模塊,則會去調(diào)用一個ibatis的SQLMAP配置,產(chǎn)生若干次查詢,最后返回數(shù)據(jù)到發(fā)起請求的解析器;通過jdbc持久模塊,則會利用XML列表報表模板里面配置的SQL直接查詢,同樣返回結(jié)果到發(fā)起請求的解析器。區(qū)分使用哪種查詢模式是根據(jù)是否含有ibatis注入實體來自動判斷的。虛擬文件模塊,它讓所有非JAVA代碼的零散文件在最終發(fā)布的時候都能整合到一個JAR包內(nèi),增加系統(tǒng)的IO性能,及發(fā)布效率。在運行過程中,由于采用了緩存的機(jī)制也能很大程度的提高系統(tǒng)的訪問效率。如圖I藍(lán)色模塊所示,在最終頁面解析生成請求中需要用到XML列表報表模板,在請求很多時,每次都I/o無疑會降低系統(tǒng)性能,因此在這里設(shè)計虛擬文件加載器,如果·該模板文件已經(jīng)被讀取過一次,則下次請求將可直接訪問全局變量容器中的字節(jié)數(shù)組來進(jìn)行解析。當(dāng)然還可以為該模塊配置其他的緩存算法。另外本發(fā)明在前臺展示上會使用到j(luò) query, jqueryui, HighCharts這些JS及圖片這些零碎的文件,將他們封裝到一個文件里,無疑會提高I/O性能,同時由于其本身容量也不大,因此本發(fā)明選擇在項目啟動時就將他們加載進(jìn)內(nèi)存進(jìn)行緩存。工具模塊,它主要為上述最終頁面生成解析器提供支持,其中樣式管理器,在最終頁面生成器生成HTML頁面的時候,它可以切換其展示樣式;全局變量容器則主要為虛擬文件模塊提供支持,它最大的作用就是把一些需要緩存的文件(包括JS文件,CSS樣式,樣式圖片)以Map的形式緩存起來,在需要用到的時候,就可以高效的取出,避免重復(fù)10。
權(quán)利要求
1.一種通用報表列表組件,其特征在于 所述通用報表列表組件包括工具模塊,核心模塊,持久模塊,虛擬文件模塊;所述工具模塊包括 全局變量單元用于承載組件所需要的所有公共變量及內(nèi)存緩存數(shù)據(jù); 樣式管理單元對列表頁面的樣式轉(zhuǎn)換進(jìn)行支持;所述核心模塊包括 控件創(chuàng)建單元負(fù)責(zé)對于頁面上的下拉,文本控件的創(chuàng)建; 解析單元對客戶端瀏覽器發(fā)起的本組件的AJAX請求和頁面請求進(jìn)行解析; 圖形創(chuàng)建單元負(fù)責(zé)對頁面中的圖形元素的生成; 核心分發(fā)單元統(tǒng)一管理客戶端瀏覽器發(fā)起的請求,交給其他模塊;所述持久模塊包括 數(shù)據(jù)源實體對象單元用于承載數(shù)據(jù)源; 動態(tài)代理單元用與對數(shù)據(jù)源進(jìn)行切面的事務(wù)管理; iBatis持久支持單元用于本組件與iBatis進(jìn)行整合的支持;所述虛擬文件模塊包括 虛擬文件加載單元用于將組件內(nèi)的虛擬文件加載到內(nèi)存中,在瀏覽器客戶端發(fā)起請求的同時得到相應(yīng)地址的請求時返回數(shù)據(jù)流。
2.如權(quán)利要求I所述的通用報表列表組件,其特征在于 所述全局變量單元包括常規(guī)全局變量,內(nèi)存常駐高速緩存變量; 所述常規(guī)全局變量提供工程啟動路徑,ibatis配置參數(shù)及存儲配置信息的變量;所述內(nèi)存常駐高速緩存變量包括頁面模板的緩存,反射方法利用Map鍵值對的形式緩存起來,鍵為訪問路徑,值為字節(jié)數(shù)組,便于以后請求高速取出。
3.如權(quán)利要求I所述的通用報表列表組件,其特征在于所述分頁條控件創(chuàng)建器創(chuàng)建分頁條控件。
4.如權(quán)利要求I或2所述的通用報表列表組件,其特征在于 所述解析單元包括 導(dǎo)出Excel解析單元針對頁面模板,自動生成需要導(dǎo)出的數(shù)據(jù)源模型; 利用前臺JS代碼實現(xiàn)用戶導(dǎo)出設(shè)置界面,讓用戶指定需要導(dǎo)出的列及列的顏色,再根據(jù)用戶的選擇導(dǎo)出Excel ; 最終頁面生成解析單元根據(jù)瀏覽器客戶端相應(yīng)進(jìn)行對模板頁面的封裝,最終反饋給瀏覽器客戶端,返回的頁面留有上次用戶錄入的查詢條件,同時還支持對模板中配置的javascript代碼的轉(zhuǎn)換并呈現(xiàn)到前臺頁面適當(dāng)?shù)奈恢?,以及對模板中指定JAVA方法的反射調(diào)用,還可以解析權(quán)限配置,提供給不同權(quán)限使用者所視效果不同的結(jié)果; 級聯(lián)請求解析單元根據(jù)下拉列表組件返回的異步請求,返回級聯(lián)數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種通用報表列表組件,其特征在于所述通用報表列表組件包括工具模塊,核心模塊,持久模塊,虛擬文件模塊;所述工具模塊包括全局變量單元用于承載組件所需要的所有公共變量及內(nèi)存緩存數(shù)據(jù);樣式管理單元對列表頁面的樣式轉(zhuǎn)換進(jìn)行支持;所述核心模塊包括控件創(chuàng)建單元負(fù)責(zé)對于頁面上的下拉,文本控件的創(chuàng)建;解析單元對客戶端瀏覽器發(fā)起的本組件的AJAX請求和頁面請求進(jìn)行解析;圖形創(chuàng)建單元負(fù)責(zé)對頁面中的圖形元素的生成;核心分發(fā)單元統(tǒng)一管理客戶端瀏覽器發(fā)起的請求,交給其他模塊;本發(fā)明解決了后臺門戶列表頁面及報表頁面開發(fā)速度緩慢,開發(fā)復(fù)雜等問題。
文檔編號G06F9/44GK102902546SQ20121038736
公開日2013年1月30日 申請日期2012年10月12日 優(yōu)先權(quán)日2012年10月12日
發(fā)明者繆秦 申請人:重慶亞德科技股份有限公司