一種基于xml的語(yǔ)義層報(bào)表模型的方法
【專利摘要】一種基于XML的語(yǔ)義層報(bào)表模型的方法。報(bào)表設(shè)計(jì)器和企業(yè)數(shù)據(jù)源之間建立語(yǔ)義層,在語(yǔ)義層中定義數(shù)據(jù)模型,該模型封裝了數(shù)據(jù)源的技術(shù)細(xì)節(jié),用戶基于語(yǔ)義層設(shè)計(jì)報(bào)表,只需簡(jiǎn)單地拖拽語(yǔ)義層元素即可,不需要編寫(xiě)復(fù)雜表達(dá)式和復(fù)雜SQL.語(yǔ)義層的加入不僅給用戶的操作帶來(lái)了極大的方便,而且增強(qiáng)了企業(yè)數(shù)據(jù)的安全性.在模型中字段上建立視圖間的關(guān)聯(lián)關(guān)系,關(guān)系自動(dòng)作用在報(bào)表上,不需要進(jìn)行視圖間連接就可以設(shè)計(jì)出多源報(bào)表,極大地提高了復(fù)雜報(bào)表的計(jì)算效率。
【專利說(shuō)明】—種基于XML的語(yǔ)義層報(bào)表模型的方法
【技術(shù)領(lǐng)域】
[0001]一種基于XML的語(yǔ)義層報(bào)表模型的方法主要是用于計(jì)算程序領(lǐng)域。
【背景技術(shù)】
[0002]報(bào)表作為一種信息組織和分析的有利手段,是企業(yè)信息系統(tǒng)的重要組成部分之一.據(jù)不完全統(tǒng)計(jì),系統(tǒng)實(shí)際應(yīng)用的6o%以上與報(bào)表有關(guān)[I].但是一般的軟件開(kāi)發(fā)語(yǔ)言都不帶報(bào)表制作工具,要開(kāi)發(fā)報(bào)表模塊需要程序員編寫(xiě)大量的代碼,這些代碼可重用性差、后期維護(hù)復(fù)雜.所以,企業(yè)一般都借助于第三方的專業(yè)報(bào)表工具來(lái)制作報(bào)表.但是,目前的報(bào)表工具存在專業(yè)性不強(qiáng)3、安全性不高、用戶操作復(fù)雜和設(shè)計(jì)復(fù)雜報(bào)表時(shí)效率低下等問(wèn)題.針對(duì)目前專業(yè)報(bào)表工具中存在的問(wèn)題,我們介紹了一種語(yǔ)義層報(bào)表模型,在報(bào)表設(shè)計(jì)器和企業(yè)數(shù)據(jù)源之間建立語(yǔ)義層,來(lái)解決這些問(wèn)題。
[0003]利用傳統(tǒng)的報(bào)表工具設(shè)計(jì)報(bào)表時(shí),用戶直接操作數(shù)據(jù)源,一方面用戶需要學(xué)習(xí)數(shù)據(jù)源的專業(yè)知識(shí),編寫(xiě)復(fù)雜的表達(dá)式,書(shū)寫(xiě)復(fù)雜的SQL語(yǔ)句;另一方面直接操作企業(yè)數(shù)據(jù),給企業(yè)的數(shù)據(jù)信息帶來(lái)了安全隱患.本文介紹了一種語(yǔ)義層報(bào)表模型,在報(bào)表設(shè)計(jì)器和企業(yè)數(shù)據(jù)源之間建立語(yǔ)義層,在語(yǔ)義層中定義數(shù)據(jù)模型,用戶在報(bào)表設(shè)計(jì)器中基于語(yǔ)義層設(shè)計(jì)報(bào)表,直接拖拽語(yǔ)義層元素即可,極大的減少了用戶制作報(bào)表時(shí)的工作量;雖然增加了語(yǔ)義層,但并沒(méi)有降低整個(gè)報(bào)表模型的計(jì)算效率,因?yàn)橛脩粼谕献дZ(yǔ)義層元素設(shè)計(jì)報(bào)表時(shí),系統(tǒng)自動(dòng)的把語(yǔ)義元素解析成報(bào)表引擎可以識(shí)別的標(biāo)簽,所以報(bào)表計(jì)算時(shí)不需要訪問(wèn)語(yǔ)義層數(shù)據(jù)模型XML文件;通過(guò)在數(shù)據(jù)模型上定義過(guò)濾條件,對(duì)企業(yè)數(shù)據(jù)進(jìn)行權(quán)限控制,增強(qiáng)了企業(yè)信息的安全性;語(yǔ)義層數(shù)據(jù)模型可以在視圖上定義視圖間的關(guān)聯(lián)關(guān)系,也可以在視圖字段上定義視圖間的關(guān)聯(lián)關(guān)系,后者在計(jì)算報(bào)表時(shí),一個(gè)單元格上綁定多個(gè)指針,指向關(guān)聯(lián)視圖,不需要視圖間的連接,不需要多次重復(fù)檢索關(guān)聯(lián)視圖就可以設(shè)計(jì)出多源報(bào)表,極大的提高了復(fù)雜報(bào)表的計(jì)算速度。
【發(fā)明內(nèi)容】
[0004]我們通過(guò)國(guó)家專利檢索沒(méi)有發(fā)現(xiàn)關(guān)于此系統(tǒng)方面的資料。一種基于XML的語(yǔ)義層報(bào)表模型的方法主要是通過(guò)語(yǔ)義層報(bào)表模型的結(jié)構(gòu)的來(lái)實(shí)現(xiàn)。
[0005]語(yǔ)義層報(bào)表模型整體結(jié)構(gòu)語(yǔ)義層報(bào)表模型由數(shù)據(jù)源、語(yǔ)義層和報(bào)表設(shè)計(jì)器三部分組成。數(shù)據(jù)源為語(yǔ)義層建立的數(shù)據(jù)模型提供數(shù)據(jù)來(lái)源;在語(yǔ)義層中建立數(shù)據(jù)模型,模型中包含視圖的定義、編輯風(fēng)格的定義、變量的定義;在報(bào)表設(shè)計(jì)器中基于語(yǔ)義層數(shù)據(jù)模型定義報(bào)表模板,對(duì)報(bào)表模板進(jìn)行計(jì)算,按照要求的格式輸出報(bào)表的計(jì)算結(jié)果。
[0006]語(yǔ)義層報(bào)表模型的實(shí)現(xiàn)主要是采用Java和XML技術(shù)實(shí)現(xiàn).Java是由sun公司開(kāi)發(fā)的一種跨平臺(tái)、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言.XML(eXtensibIeMarkup Language)可擴(kuò)展標(biāo)記語(yǔ)言,是W3C (World Wide Web Consonjum)組織制定的一種通用語(yǔ)言規(guī)范。XML提供了描述不同類型數(shù)據(jù)的標(biāo)準(zhǔn)格式,可表示任何類型的結(jié)構(gòu)化或半結(jié)構(gòu)化的信息。
[0007]語(yǔ)義層報(bào)表模型的數(shù)據(jù)源的連接,報(bào)表中的數(shù)據(jù)來(lái)源復(fù)雜,可能來(lái)自于數(shù)據(jù)庫(kù),也可能來(lái)自于數(shù)據(jù)文件(Text文件、XML文件等).目前大多數(shù)的報(bào)表數(shù)據(jù)來(lái)自于數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)種類繁多,有Oracle、SQL Server、Access和DB2等.對(duì)于數(shù)據(jù)文件作為數(shù)據(jù)源的情況我們采用文件流的形式來(lái)處理.對(duì)于數(shù)據(jù)庫(kù)作為報(bào)表數(shù)據(jù)源的情況,我們采用了數(shù)據(jù)庫(kù)連接池技術(shù)來(lái)管理數(shù)據(jù)庫(kù)的連接。
[0008]語(yǔ)義層數(shù)據(jù)模型的設(shè)計(jì):
語(yǔ)義層數(shù)據(jù)模型對(duì)底層數(shù)據(jù)源進(jìn)行封裝,屏蔽數(shù)據(jù)源的技術(shù)細(xì)節(jié),以通俗易用的方式向報(bào)表設(shè)計(jì)器提供數(shù)據(jù)信息.語(yǔ)義層數(shù)據(jù)模型(Semantics Data Model)由三部分組成,可以形象化的表示成三元組:
SDM ===(Semantics ViewList:
Semantics EditStyleList ;
Semantics VariableList ;)
其中,Semantics ViewList表不語(yǔ)義層視圖集合;Semantics EditStyleList表不語(yǔ)義層編輯風(fēng)格集合;Semantics VariableList表示語(yǔ)義層變量集合。
[0009]語(yǔ)義層數(shù)據(jù)模型用XML表示如下:
<Sem antic〉
<ViewList> < ! 一視圖列表一 >
〈View〉〈! 一視圖定義一 >
<! 一視圖字段列表一 >
<ColumnList> < / ColLlmrlList>
<! 一視圖過(guò)濾條件列表一 >
<WhereList> < / WhereList>
<!一定義在視圖上的關(guān)聯(lián)關(guān)系列表一〉
<Associations〉 < / Associations〉
</ VJew>
</ ViewList>
<! 一編輯風(fēng)格定義列表一 >
<EditStyleList>......< / EditStyleList>
〈! 一參數(shù)定義列表一〉
<VariableList>< / VariableList>
</ Semantic〉
視圖是一張二維表,在語(yǔ)義層中凡是要將數(shù)據(jù)源中的數(shù)據(jù)帶人報(bào)表進(jìn)行展現(xiàn)的,都要將它做成一個(gè)視圖.視圖可以直接在數(shù)據(jù)源中的數(shù)據(jù)表上定義;可以通過(guò)SQL語(yǔ)句執(zhí)行的查詢結(jié)果構(gòu)成一個(gè)SQL查詢視圖;也可以由存儲(chǔ)過(guò)程返回的結(jié)果構(gòu)成一個(gè)存儲(chǔ)過(guò)程視圖.不論哪種類型的視圖,用戶在基于語(yǔ)義層設(shè)計(jì)報(bào)表時(shí)使用方式都是一樣的,語(yǔ)義層屏蔽了不同視圖之間的差異。
[0010]視圖
(Semantics View)由四部分組成,可以形象化的表示成四元組:
SV 一 (View ColumnList ;
View Foreign Colum nList:View W hereList ;
View Associations ;)
其中,View ColumnList表不視圖字段集合;View Foreign ColumnList表不偽字段集合;View WhereList表示過(guò)濾條件集合;View Associations表示視圖關(guān)聯(lián)關(guān)系集合。
[0011](1)視圖字段.視圖字段對(duì)應(yīng)數(shù)據(jù)源中數(shù)據(jù)表字段,視圖字段包含數(shù)據(jù)表字段具有的所有屬性,此外還包含標(biāo)題屬性(可以為英文字段名定義中文標(biāo)題)、編輯風(fēng)格屬性、顯示值屬性(為編碼字段設(shè)置其顯示值)。
[0012](2)偽字段.所謂偽字段是指由視圖中的數(shù)據(jù)經(jīng)過(guò)一些函數(shù)運(yùn)算而得到的結(jié)果.比如定義金額偽字段,其表達(dá)式為:金額一單價(jià)*數(shù)量.用戶設(shè)計(jì)報(bào)表時(shí)不用區(qū)分是偽字段還是普通字段,它們的使用方法是一樣的,在計(jì)算報(bào)表時(shí),系統(tǒng)會(huì)自動(dòng)計(jì)算偽字段的表達(dá)式。
[0013](3)過(guò)濾條件.定義視圖按一定的條件從數(shù)據(jù)源中過(guò)濾數(shù)據(jù),比如為訂單視圖定義貨主名稱不為空的過(guò)濾條件.一般的過(guò)濾條件并不強(qiáng)加在視圖上,而是由用戶在設(shè)計(jì)報(bào)表時(shí)自由的選擇是否使用這些過(guò)濾條件,避免了用戶自己在SQL中書(shū)寫(xiě)where條件.還有一類必選的用于權(quán)限控制的過(guò)濾條件,它是強(qiáng)加在視圖上的,用戶設(shè)計(jì)報(bào)表時(shí)必須使用此過(guò)濾條件.在XML中用過(guò)濾條件類型屬性來(lái)表示是一般的過(guò)濾條件,還是特殊的過(guò)濾條件。
[0014](4)關(guān)聯(lián)關(guān)系.關(guān)聯(lián)關(guān)系的定義是語(yǔ)義層數(shù)據(jù)模型中非常重要的一部分,它直接影響到復(fù)雜報(bào)表的運(yùn)算效率。
[0015]最后是報(bào)表設(shè)計(jì),其主要由報(bào)表定義,報(bào)表的定義過(guò)程實(shí)際是語(yǔ)義層數(shù)據(jù)模型的實(shí)例化過(guò)程.本模型中給用戶提供了類似于Excel的可視化報(bào)表設(shè)計(jì)器.在報(bào)表設(shè)計(jì)器中利用JDOM技術(shù)解析語(yǔ)義層數(shù)據(jù)模型XML文件,形成語(yǔ)義樹(shù).設(shè)計(jì)器中提供了列表、分組、取值、求平均、計(jì)數(shù)、求最大值、求最小值、求和等常用的操作供用戶選擇。
[0016]其實(shí)現(xiàn)方法為:
用戶基于語(yǔ)義層定義報(bào)表,首先在語(yǔ)義樹(shù)中勾選作用在視圖上的過(guò)濾條件;然后選擇要進(jìn)行的操作,最后利用鼠標(biāo)拖拽語(yǔ)義樹(shù)上的元素到單元格中即可.在拖拽語(yǔ)義樹(shù)上的元素時(shí)會(huì)觸發(fā)一個(gè)鼠標(biāo)事件,該事件把選擇的操作和鼠標(biāo)選取的語(yǔ)義元素解析成報(bào)表計(jì)算引擎可以識(shí)別的標(biāo)簽;把語(yǔ)義元素屬性(例如編輯風(fēng)格、顯示名稱等)賦給單元格的對(duì)應(yīng)屬性;結(jié)合用戶選擇的過(guò)濾條件,形成可以直接在數(shù)據(jù)庫(kù)中運(yùn)行的sql。
[0017]通常報(bào)表是分區(qū)的,一個(gè)完整的報(bào)表包括表頭區(qū)、表尾區(qū)、標(biāo)題區(qū)、數(shù)據(jù)區(qū)、頁(yè)眉頁(yè)腳區(qū)等等.用戶可以自由的定義報(bào)表的區(qū)域和報(bào)表的格式.報(bào)表定義完成后保存為報(bào)表定義模板.xml文件。
[0018]報(bào)表計(jì)算報(bào)表計(jì)算是報(bào)表引擎對(duì)報(bào)表定義模板進(jìn)行解析、計(jì)算的過(guò)程.報(bào)表引擎讀取報(bào)表定義模板文件、系統(tǒng)標(biāo)簽庫(kù)文件、從連接池中獲取數(shù)據(jù)源的連接,按照從上到下、從左到右的順序?qū)?br>
報(bào)表定義模板進(jìn)行解析、計(jì)算。
【權(quán)利要求】
1.一種基于XML的語(yǔ)義層報(bào)表模型的方法其特征是在報(bào)表設(shè)計(jì)器和企業(yè)數(shù)據(jù)源之間建立語(yǔ)義層,在語(yǔ)義層中定義數(shù)據(jù)模型,此模型封裝了數(shù)據(jù)源中的技術(shù)細(xì)節(jié)。
2.根據(jù)權(quán)限要求I的數(shù)據(jù)模型其包括為語(yǔ)義層報(bào)表模型整體結(jié)構(gòu);數(shù)據(jù)源為語(yǔ)義層建立的數(shù)據(jù)模型提供數(shù)據(jù)來(lái)源;在語(yǔ)義層中建立數(shù)據(jù)模型,模型中包含視圖的定義、編輯風(fēng)格的定義、變量的定義;在報(bào)表設(shè)計(jì)器中基于語(yǔ)義層數(shù)據(jù)模型定義報(bào)表模板,對(duì)報(bào)表模板進(jìn)行計(jì)算,按照要求的格式輸出報(bào)表的計(jì)算結(jié)果。
3.根據(jù)權(quán)限要求2的數(shù)據(jù)模型的要求其采用Java和XML技術(shù)實(shí)現(xiàn);主要是分為數(shù)據(jù)源的連接,語(yǔ)義層數(shù)據(jù)模型的設(shè)計(jì)。
4.根據(jù)權(quán)限要求3的數(shù)據(jù)模型的要求進(jìn)行數(shù)據(jù)報(bào)表的的設(shè)計(jì),報(bào)表設(shè)計(jì)主要是通過(guò)報(bào)表的定義及報(bào)表的報(bào)表計(jì)算。
5.根據(jù)權(quán)限要求4的數(shù)據(jù)模型中的報(bào)表定義是報(bào)表的定義過(guò)程實(shí)際是語(yǔ)義層數(shù)據(jù)模型的實(shí)例化過(guò)程.本模型中給用戶提供了類似于Excel的可視化報(bào)表設(shè)計(jì)器.在報(bào)表設(shè)計(jì)器中利用JDOM技術(shù)解析語(yǔ)義層數(shù)據(jù)模型XML文件,形成語(yǔ)義樹(shù);設(shè)計(jì)器中提供了列表、分組、取值、求平均、計(jì)數(shù)、求最大值、求最小值、求和等常用的操作供用戶選擇。
6.根據(jù)權(quán)限要求4的數(shù)據(jù)模型中的報(bào)表計(jì)算是報(bào)表引擎對(duì)報(bào)表定義模板進(jìn)行解析、計(jì)算的過(guò)程.報(bào)表引擎讀取報(bào)表定義模板文件、系統(tǒng)標(biāo)簽庫(kù)文件、從連接池中獲取數(shù)據(jù)源的連接,按照從上到下、從左到右的順序?qū)?bào)表定義模板進(jìn)行解析、計(jì)算。
【文檔編號(hào)】G06Q10/10GK103778524SQ201210400138
【公開(kāi)日】2014年5月7日 申請(qǐng)日期:2012年10月20日 優(yōu)先權(quán)日:2012年10月20日
【發(fā)明者】楊際榮 申請(qǐng)人:鎮(zhèn)江華揚(yáng)信息科技有限公司