欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

建立查詢模型的系統(tǒng)及建立方法

文檔序號:6470940閱讀:232來源:國知局
專利名稱:建立查詢模型的系統(tǒng)及建立方法
技術領域
本發(fā)明涉及數(shù)據(jù)庫查詢領域,特別是指建立查詢模型的系統(tǒng)及建 立方法。
背景技術
在與數(shù)據(jù)庫相關的大量業(yè)務程序都需要調用數(shù)據(jù)庫進行查詢。無
論是ERP項目中報表的開發(fā)和生成,還是利用數(shù)據(jù)倉庫和數(shù)據(jù)中心 進行數(shù)據(jù)挖掘等,都需要進行大量的多次的查詢。但是現(xiàn)有技術并 沒有建立一套抽象的可以復用的查詢模型。
比如在本發(fā)明一個重要應用領域,ERP項目報表開發(fā)領域中,據(jù) 統(tǒng)計,在很多交付壓力較大的項目當中,報表開發(fā)占有相當?shù)谋戎亍?現(xiàn)有技術大多將查詢的模型完全建立在SQL或單元取數(shù)公式的基礎 之上,缺少對于模型的更多動態(tài)描述和訪問接口 ,缺少對于模型之 間的行為描述,從而導致建模工作局限性強、靈活性低、孤立而缺 乏內在聯(lián)系。中國專利20081001418.2公開了 一種不規(guī)則復雜報表的 生成方法,采用的就是編寫數(shù)據(jù)計算表達式到單元格的方法進行查 詢取數(shù)。還有一類方案則走向了另一個極端,將取數(shù)邏輯完全交給 后臺代碼實現(xiàn),這樣雖然增加了靈活性,但極大地增加了開發(fā)人員 的工作量,而且模型的復用性也很低,非常不適合于企業(yè)報表的批 量交付。
同樣的,在數(shù)據(jù)挖掘和業(yè)務程序中經常有類似的需求。例如可以 通過接口按照事先約定的數(shù)據(jù)結構提供查詢所得的數(shù)據(jù)結果集,而 無需再調用數(shù)據(jù)庫進行查詢。所以急需要 一 種針對復用性最強的查 詢模型的建模方法。

發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供建立查詢模型的系統(tǒng)及建 立方法,可以將各種復雜的查詢需求抽象轉化為可復用的查詢模型, 并利用該模型得到業(yè)務級程序所需要的數(shù)據(jù)結果集。
對于建立查詢模型的方法來說,上述技術問題是這樣加以解決
的,建立查詢模型的系統(tǒng),包括
功能庫模塊2,存儲有建立查詢模型所需的除接收和完成外的模 塊,包括參數(shù)模塊23,用于定義或引用參數(shù);查詢基本元素模塊 21,用于確定查詢所需的基本元素;復合查詢模塊22,用于根據(jù)復 合查詢生成樹從上向下分發(fā)參數(shù)到原子查詢模型,以及根據(jù)復合查 詢生成樹將原子查詢模型合成復合查詢模型;
接收模塊l,用于接收查詢需求,并根據(jù)查詢需求對功能庫模塊 2的各模塊進行設置;
模型完成模塊3,用于創(chuàng)建查詢模型并將查詢模型持久化,包括 查詢模型創(chuàng)建模塊31和將查詢模型進行持久化的持久化模塊32;所 述查詢模型創(chuàng)建模塊31用于將接收模塊l設置過的功能庫模塊2按 照以下步驟完成查詢模型設計
步驟bl、用復合查詢模塊22分發(fā)參數(shù)到原子查詢模型;
步驟b2、用查詢基本元素模塊21和參數(shù)模塊23完成原子查詢 模型;
.步驟b3 、用復合查詢模塊22將原子查詢模型合成復合查詢模型。 這樣可以將復雜的查詢需求利用復合查詢分解到簡單的原子查
詢模塊,從而提高查詢模型的抽象高度。并提供了功能庫模塊,從
而為系統(tǒng)功能的擴展提供了可能。
優(yōu)選的是,所述功能庫模塊2中的模塊還包括至少一個以下模
塊,前處理模塊25,用于實現(xiàn)前處理;后處理模塊26,用于實現(xiàn)后
處理;穿透規(guī)則模塊27,用于實現(xiàn)穿透規(guī)則的設定;
所述查詢模型創(chuàng)建模塊31按照以下步驟完成查詢模型設計 在步驟bl后執(zhí)行的步驟b12、用前處理模塊結合復合查詢生成
樹對原子查詢模型進行調整;
在步驟b3后執(zhí)行的步驟b4、用后處理模塊26對復合查詢模型 進行后處理;
在步驟b4后執(zhí)行的步驟b5、用穿透規(guī)則模塊27,實現(xiàn)穿透規(guī)則 的設定。
這樣可以在原子查詢級別進行前處理調整,實現(xiàn)對查詢動作進行 加工處理,在復合查詢級別進行后處理調整,實現(xiàn)對數(shù)據(jù)結果集進 行加工處理,在復合查詢之后還可以進行穿透規(guī)則設定。
優(yōu)選的是,所述的前處理模塊25包括投影交叉模塊251,用 于完成投影交叉;數(shù)據(jù)庫整理模塊252,用于對原子查詢模型的數(shù)據(jù) 庫查詢行為進行調整;
所述的后處理模塊26包括旋轉交叉模塊261,用于實現(xiàn)旋轉 交叉;數(shù)據(jù)加工模塊262,用于進行除旋轉交叉外的后處理;
所述步驟b12包括步驟b121、用投影交叉模塊251結合復合 查詢生成樹對原子查詢模型進行調整;步驟b122、用數(shù)據(jù)庫整理模 塊252結合復合查詢生成樹對原子查詢模型進行調整;
所述的步驟b4包括步驟b41、用旋轉交叉模塊261對復合查 詢模型進行調整;步驟b42、用數(shù)據(jù)加工模塊262對復合查詢模型進 行調整。
這樣將使用率非常高的前處理過程中的投影交叉和后處理過程 中的旋轉交叉單列出來,有利于設計和提高效率。
優(yōu)選的是,所述的模型完成模塊3還包括,合法性校驗模塊33, 用于在持久化模塊32將查詢模型進行持久化之前對查詢模型進行合 法性校驗。
這樣可以對查詢模型進行檢查。防止人為失誤、語法錯誤等影響 查詢模型使用的情況出現(xiàn)。
優(yōu)選的是,所述的接收模塊l還包括,用于導入已有查詢模型; 所述的復合查詢模塊22還包括子查詢模塊221,用于利用已有查 詢模型作為子查詢,參數(shù)根據(jù)復合查詢生成樹從上向下分發(fā)到原子
查詢模型和/或子查詢,根據(jù)復合查詢生成樹將原子查詢模型和/或子
查詢合成復合查詢模型;
所述步驟bl還包括用復合查詢模塊22分發(fā)參數(shù)到原子查詢模 型和/或子查詢模型;
所述步驟b121還包括用投影交叉模塊251結合復合查詢生成 樹對原子查詢模型和/或子查詢模型進行調整;所述步驟b122還包 括、用數(shù)據(jù)庫整理模塊252結合復合查詢生成樹對原子查詢模型和/ 或子查詢模型進行調整;
所述步驟b2還包括用查詢基本元素模塊21和參數(shù)模塊23完 成原子查詢模型和/或子查詢模型;
所述步驟b3還包括用復合查詢模塊22將原子查詢模型和/或 子查詢模型合成復合查詢模型。
這樣可以利用已有模型作為子查詢,而提高查詢模型建立的效率 和查詢模型的復用率。在積累或導入足夠多的已有查詢模型的時候, 甚至可能在已有查詢模型基礎上進行一點修改就可以生成符合要求 的新的查詢模型。從而大大提高新模型的建立效率。
優(yōu)選的是,所述的模型完成模塊3還包括,子查詢合法性校驗模 塊331對子查詢模型進行合法性校驗。
進一步加強合法性檢驗,防止錯誤的出現(xiàn)。
優(yōu)選的是,所述一個功能庫模塊2還包括,模型主體模塊24, 用于生成查詢模型主體;
所述接收模塊(1)接收的查詢需求還包括確定元數(shù)據(jù);
所述步驟bl前還包括,從元數(shù)據(jù)中選擇主業(yè)務實體及其相關屬 性,生成查詢模型主體。
這樣可以提高查詢模型建立的效率。減少在接收查詢需求時所需 的步驟。尤其當元數(shù)據(jù)已經包含了足夠豐富的業(yè)務實體信息時,可 以直接完成查詢模型的主體,之后的接收動作只是進行補充。
優(yōu)選的是,所述持久化模塊(32)還包括,原子查詢模型持久化 模塊,用于將原子查詢模型進行持久化。進一步補充數(shù)據(jù)庫中存儲的模型,提高模型的復用性。
本發(fā)明還提供了一種建立查詢模型的方法,包括
步驟X、接收查詢需求,并根據(jù)接收的查詢需求定義或引用參數(shù)、
確定查詢所需的基本元素和復合查詢生成樹;
步驟Y、創(chuàng)建查詢模型并將查詢模型持久化,所述創(chuàng)建查詢模型 的步驟包括
步驟yl、根據(jù)復合查詢生成樹從上向下分發(fā)參數(shù)到原子查詢模
型;
步驟y2、用確定的原子查詢模型所需的基本元素和所述參數(shù)完
成原子查詢模型的建立;
步驟y3 、根據(jù)復合查詢生成樹將原子查詢模型合成復合查詢。 這樣可以將復雜的查詢需求利用復合查詢分解到簡單的原子查
詢模塊,從而提高查詢模型的抽象高度。使得查詢模型的復用成為可能。
優(yōu)選的是,所述步驟yl后還包括步驟yl2:根據(jù)前處理規(guī)則和 復合查詢生成樹對所述原子查詢模型的基本元素和參數(shù)進行調整;
所述步驟y3后還包括步驟y4:根據(jù)后處理規(guī)則對合成的復合查 詢進行后處理;
步驟y5:設定穿透規(guī)則。
這樣可以在原子查詢級別進行前處理調整,實現(xiàn)對查詢動作進行 加工處理,在復合查詢級別進行后處理調整,實現(xiàn)對數(shù)據(jù)結果集進 行加工處理,在復合查詢之后還可以進行穿透少見則i殳定。
優(yōu)選的是,所述步驟y12包括步驟yl21、對原子查詢模型進 行投影交叉調整;步驟yl22、對原子查詢模型進行數(shù)據(jù)庫整理調整;
所述的步驟y4包括步驟y41、對復合查詢模型進行旋轉交叉 調整;步驟y42、對復合查詢模型進行數(shù)據(jù)加工調整。
這樣將使用率非常高的前處理過程中的投影交叉和后處理過程 中的旋轉交叉單列出來,有利于設計和提高效率。
優(yōu)選的是,步驟Y所述將查詢模型進行持久化之前還包括對
查詢模型進行合法性校驗。
這樣可以對查詢模型進行檢查。防止人為失誤、語法錯誤等影響 查詢模型使用的情況出現(xiàn)。
優(yōu)選的是,所述步驟X還包括導入已有查詢模型;
所述步驟yl還包括根據(jù)復合查詢樹分發(fā)參數(shù)到原子查詢模型 和/或子查詢模型;
所述步驟yl21還包括根據(jù)投影交叉設置結合復合查詢生成樹 對原子查詢模型和/或子查詢模型進行調整;所述步驟y122還包括 根據(jù)前處理規(guī)則結合復合查詢生成樹對原子查詢模型和/或子查詢模 型進行調整;
所述步驟y2還包括根據(jù)基本元素和參數(shù)完成原子查詢模型和/ 或子查詢模型;
所述步驟y3還包括根據(jù)復合查詢樹將原子查詢模型和/或子查 詢模型合成復合查詢模型。
這樣可以利用已有模型作為子查詢模型,而提高查詢模型建立的 效率和查詢模型的復用率。在積累或導入足夠多的已有查詢模型的
時候,甚至可能在已有查詢模型基礎上進行一點修改就可以生成符 合要求的新的查詢模型。從而大大提高新模型的建立效率。
優(yōu)選的是,所述的步驟y2后還包括對子查詢模型進行合法性 校驗。
進一步加強合法性檢驗,防止錯誤的出現(xiàn)。
優(yōu)選的是,步驟X還包括,從元數(shù)據(jù)中選擇主業(yè)務實體及其相 關屬性,生成查詢模型主體。
這樣可以提高查詢模型建立的效率。減少在接收查詢需求時所需 的步驟。尤其當元數(shù)據(jù)已經包含了足夠豐富的業(yè)務實體信息時,可 以直接完成查詢模型的主體,之后的接收動作只是進行補充。
優(yōu)選的是,所述的步驟y2還包括,將原子模型持久化。


圖1為實現(xiàn)查詢模型建立方法的系統(tǒng)的示意圖2為模型完成模塊完成查詢模型設計的流程圖;其中,圖2b 為步驟M2的子步驟,圖2c為步驟b4的子步驟; 圖3為部分數(shù)據(jù)字典的示例圖; 圖4為復合查詢的原理圖; 圖5為銷售訂單的元數(shù)據(jù)模型圖; 圖6為定義某個參數(shù)操作界面圖; 圖7為引用某個參數(shù)操作界面圖; 圖8為投影交叉數(shù)據(jù)模型圖; 圖9為旋轉交叉數(shù)據(jù)模型圖; 圖10為SQL語言進行調整的代碼片段圖; 圖11為進行前處理設置時在追加表時的操作界面圖; 圖12為進行前處理設置時在追加連接條件時的操作界面圖; 圖13為進行后處理設置時在數(shù)據(jù)結果集連接時的操作界面圖; 圖14為穿透規(guī)則設置的操作界面圖15為本發(fā)明所述系統(tǒng)建立查詢模型的流程圖;其中,圖15a 為本發(fā)明所述系統(tǒng)建立查詢模型的流程圖,圖15b為步驟yl2的子 步驟,圖15c為步驟y4的子步驟。
具體實施例方式
本發(fā)明提供了一種查詢模型建立方法,相應的,提供了實現(xiàn)該方
法的系統(tǒng)??傮w上來說,查詢模型從某種程度上可以理解為對一系
列表或視圖的一系列動作的抽象集成。在本發(fā)明中,通過功能庫模
塊預先存放各種動作,而通過參數(shù)來實現(xiàn)對這些動作的控制。動作
的對象,即模型建立的主體,則利用查詢基本元素模塊和模型主體
模塊來構建。同時為了提高查詢模型的抽象高度,提高復用率,本
發(fā)明還將語義層的原子查詢通過復合查詢的方式實現(xiàn)了進一步集
成。而復合查詢的動作則由復合查詢生成樹來控制。當然所述的動 作及動作的對象均不局限于原子查詢級別。
在本實施例中,所述的復合查詢生成樹的各個葉子節(jié)點為子查詢
模型或原子查詢模型,存有各節(jié)點與查詢基本元素和參數(shù)的對應關 系,包括各子查詢模型、原子查詢模型這些節(jié)點與各參數(shù)的對應關 系。利用所述的復合查詢生成樹可以完成參數(shù)的分發(fā)、原子查詢模 型建立和合成復合查詢模型。
查詢基本元素包括,基本表、查詢條件和查詢字段等信息。 首先,參見圖1對所述實現(xiàn)查詢模型建立方法的系統(tǒng)進行描述,
該系統(tǒng)包括接收模塊l、功能庫模塊2、模型完成模塊3,其中
接收模塊l,通過其提供的可視化的向導界面,接收用戶輸入的 查詢需求;根據(jù)查詢需求對功能庫模塊2的各模塊進行設置,并用 來導入已有的查詢模型。
具體來說,所述的通過接收模塊1指導用戶接收查詢需求并對功 能庫模塊2的各模塊進行設置以及導入已有查詢模型,包括
確定元數(shù)據(jù),從元數(shù)據(jù)中選擇主業(yè)務實體及其相關屬性,生成查 詢模型主體;接收參數(shù);接收復合查詢生成樹;確定查詢所需的基 本元素;
導入已有查詢模型;
設置模型主體模塊24,根據(jù)元數(shù)據(jù)中選擇的主業(yè)務實體及其相 關屬性生成查詢模型主體;設置參數(shù)模塊23,完成參數(shù)定義或引用; 設置查詢基本元素模塊21,確定查詢所需的基本元素;設置復合查 詢模塊22及子查詢模塊221,根據(jù)復合查詢生成樹設置從上向下分 發(fā)參數(shù)到子查詢模型和/或原子查詢模型的路徑,以及根據(jù)復合查詢 生成樹設置將子查詢模型和/或原子查詢模型合成復合查詢模型的路 徑;設置投影交叉模塊251,根據(jù)參數(shù)模塊23完成投影交叉相關參 數(shù)定義或引用;設置數(shù)據(jù)庫整理模塊252,根據(jù)參數(shù)模塊23完成數(shù) 據(jù)庫整理相關參數(shù)定義或引用;設置旋轉交叉模塊261,根據(jù)參數(shù)模 塊23完成旋轉交叉相關參數(shù)定義或引用;設置數(shù)據(jù)加工模塊262, 根據(jù)參數(shù)模塊23完成數(shù)據(jù)加工相關參數(shù)定義或引用;設置穿透規(guī)則 模塊27,根據(jù)參數(shù)模塊23完成穿透規(guī)則相關參數(shù)定義或引用。
在本實施例中,采用了層狀使用界面,即具有一個整體的進入界
面,并針對該界面中的相關功能都提供有頁面層的界面,每個相關 功能下面也根據(jù)實際需要有若干個子頁面層的界面。例如針對參數(shù)
模塊23,對應于原子查詢模型、投影交叉模塊251、數(shù)據(jù)庫整理模 塊252、設置旋轉交叉模塊261、數(shù)據(jù)加工模塊262等均在接收模塊 對應設置了子頁面。這樣在接收參數(shù)的同時其實也是指定了這些參 數(shù)涉及的部分。這個過程也可用于生成查詢模型生成樹。
功能庫模塊2,存儲有建立查詢模型所需的除接收和完成外的模 塊,包括
參數(shù)模塊23,用于定義或引用參數(shù)。參數(shù)是查詢模型中代表動 態(tài)信息的元素。參數(shù)一般經歷以下幾個步驟。參數(shù)定義用于定義 本查詢內部引用的所有參數(shù),其中參數(shù)名要保證互不相同。參數(shù)引 用指定查詢模型在何處以何種方式用到參數(shù)。參數(shù)設置接收對 參數(shù)具體值的設置。在建立查詢模型中參數(shù)主要是進行定義或引用, 而具體的設置多是在執(zhí)行查詢模型的時候進行。在本實施例中,會 在接收參數(shù)時根據(jù)需要分層次進行,并分別定義和引用,例如可以 分別對每個原子查詢的參數(shù)進行定義和引用、也可以分別針對投影 交叉、旋轉交叉等的相關參數(shù)進行定義和引用。如圖6為定義某個 參數(shù),圖7為引用某個參數(shù)的頁面視圖。
查詢基本元素模塊21,用于確定查詢所需的基本元素。
復合查詢模塊22,用于根據(jù)復合查詢生成樹從上向下分發(fā)參數(shù) 到原子查詢模型,以及根據(jù)復合查詢生成樹將原子查詢模型合成復 合查詢模型。具體來說,可根據(jù)復合查詢生成樹生成從上向下分發(fā) 參數(shù)到原子查詢模型的路徑,并按照該路徑分發(fā)參數(shù),以及根據(jù)復 合查詢生成樹生成將原子查詢模型合成復合查詢模型的路徑,并按 照路徑合成復合查詢。
復合查詢模塊22中還包含子查詢模塊221,用于將復合查詢生 成樹的葉子節(jié)點設為子查詢,并根據(jù)復合查詢生成樹生成從上向下 分發(fā)參數(shù)到子查詢模型和/或原子查詢模型的路徑,并按照該路徑分 發(fā)參數(shù),以及根據(jù)復合查詢生成樹生成將子查詢模型和/或原子查詢
模型合成復合查詢模型的路徑,并按照路徑合成復合查詢。而對應 的其它模塊也可以在子查詢級別進行操作。所述子查詢?yōu)橐延胁樵?模型。
前處理模塊25,用于實現(xiàn)前處理,包括投影交叉模塊251和數(shù) 據(jù)庫整理模塊252。其中
投影交叉模塊251,用于完成投影交叉。投影交叉可理解為假 定有一個查詢SQL,其查詢結果是單行單列的匯總值,另外還有兩
組Where條件的序列,分別為橫向序列(WhereXl、 WhereX2........
WhereXn)和縱向序列(WhereYl、 WhereY2........ WhereYn ),
則數(shù)據(jù)矩陣A(aij)對應的結果集成為投影交叉,其中aij是WhereXi 和WhereYj同時作用在上述SQL上獲得的結果。投影交叉的數(shù)據(jù)模 型示意圖可如圖8所示。通過投影交叉,完成純粹的SQL語句無法 完成的功能一 一把行中的數(shù)值放置在列頭。
數(shù)據(jù)庫整理模塊252,用于對原子查詢模型的數(shù)據(jù)庫查詢行為進 行調整,例如對查詢的表、字段條件等信息進行增補或修改。其具 體內容由內嵌的代碼片段描述,這與后處理和穿透規(guī)則的設置一樣。 在本實施例中采用SQL語言作為數(shù)據(jù)庫語言,如圖IO所示為對SQL 語言進行調整的代碼片段。又如圖ll所示,采用的是追加查詢表 參數(shù)為待追加的表物理名。如圖12所示,采用的是追加連接條件 與追加表同時使用,參數(shù)為連接模式、追加表物理名和追加的表間 連接條件。以此類推,可以采用類似的方式預設多種調整。
后處理模塊26,用于實現(xiàn)后處理,包括旋轉交叉模塊261和數(shù) 據(jù)加工模塊262。其中
旋轉交叉模塊261,用于實現(xiàn)旋轉交叉。旋轉交叉用于顯示表 中某幾個字段(稱為交叉值字段)的統(tǒng)計值,并將其分組放置在查 詢結果中, 一組列在數(shù)據(jù)表的左側(稱為交叉行字段), 一組列(稱 為交叉列字段)旋轉到數(shù)據(jù)表的上部成為列表頭,統(tǒng)計值則放在對 應的交叉單元。旋轉交叉數(shù)據(jù)模型如圖9所示。兩類交叉的最大差 別在于第一類交叉,即投影交叉屬于查詢行為,適用于行列設置
都已在表樣中固定的報表,其交叉結果嚴格遵循表樣格式,其行列 結構不會受查詢數(shù)據(jù)的影響;第二類交叉,即旋轉交叉屬于數(shù)據(jù)加 工行為,其交叉后的行列結構在查詢出數(shù)據(jù)之前不可預料,多用于 完全真實地對原始數(shù)據(jù)進行動態(tài)處理。
數(shù)據(jù)加工模塊262,用于對數(shù)據(jù)結果集進行調整,例如對一些數(shù)
據(jù)進行求和之類的數(shù)學計算?;蛘邔?shù)據(jù)結果集經過一系列加工算 法的變換后得到另一個數(shù)據(jù)結果集,例如數(shù)據(jù)結果集的連接。如圖
13所示為數(shù)據(jù)結果集連接的示意圖指定兩個結果集的連接字段、 連接方式和連接后的保留字段,得到連接后的結果集。
前處理和后處理的區(qū)別在于前者在查詢之前進行,作用的對象 是查詢模型;后者在數(shù)據(jù)庫查詢之后進行,作用的對象是數(shù)據(jù)結果 集。所以分別稱為前處理和后處理。不過需要注意的是這里的查詢 前和查詢后是相對的。也可能存在這樣的情況,例如某個模型需要 執(zhí)行兩次或兩次以上的查詢動作,并在不同查詢動作之間需要進行 調整。這時有可能前一個查詢動作的后處理是在后一個查詢動作的 前處理之前進行的。
穿透規(guī)則模塊27,用于實現(xiàn)穿透規(guī)則的設定。數(shù)據(jù)穿透假定 報表R1上存在某個區(qū)域Al, Al內部有若干業(yè)務數(shù)據(jù),如果以Al 為出發(fā)點能夠切換到另一張報表R2的上的區(qū)域A2,而且Al和A2 的內部數(shù)據(jù)存在著某種內在聯(lián)系,則稱可以從R1穿透到R2。當這 種穿透行為傳遞下去,就可以了解某張報表的數(shù)據(jù)明細,甚至追溯 到它的數(shù)據(jù)來源。通常會把上述的區(qū)域選為 一個表格行或者一個表 單元,而上述的內在聯(lián)系就稱為穿透規(guī)則。例如在瀏覽公司部門的 時候選中某個部門能穿透到部門人員查詢查看這個部門下的所有員 工。這首先需要在公司部門的查詢列和部門人員的查詢參數(shù)之間建 立一個關聯(lián)關系。例如,可以選擇公司部門的部門編碼(deptcode) 列;在部門人員查詢里加入一個查詢參數(shù)部門編碼(deptcode),并 在查詢定義里引用該參數(shù)作為過濾條件。如圖14所示,為穿透規(guī)則 設置進入界面。再例如,要得到這樣一種效果,即在瀏覽公司報表
的時候想動態(tài)的知道公司下所有用戶的信息,也就是說根據(jù)選中的 公司穿透到用戶查詢去。在設置穿透規(guī)則的時候,將選中的公司編 碼傳遞給目標查詢的參數(shù)作為參數(shù)值,目標查詢的參數(shù)在目標查詢 模型中進行定義(其界面類似圖6)和引用(其界面類似圖7)。
模型主體模塊24,用于根據(jù)元數(shù)據(jù)中選擇的主業(yè)務實體及其相
關屬性,生成查詢模型主體。元數(shù)據(jù)指的是,將業(yè)務數(shù)據(jù)進行抽象,
并提供業(yè)務實體、關系和屬性級的描述。圖5就是一個銷售訂單的
元數(shù)據(jù)模型。而查詢模型從某種程度上可以理解為對一系列表的一 系列動作的抽象集成。其主體包括基本表、查詢字段、查詢條件和
連接條件,甚至排序字段、分組字段等信息;而動作大多通過參數(shù) 來實現(xiàn)控制。當系統(tǒng)預置有足夠多的元數(shù)據(jù),且元數(shù)據(jù)含有足夠豐 富的信息的時候,可以很方便的通過元數(shù)據(jù)完成查詢模型主體的構 建。例如要查詢的是銷售相關,則選取圖5所述的銷售訂單元數(shù)據(jù) 中涉及到的業(yè)務實體及其相關屬性即可。
模型完成模塊3,用于創(chuàng)建查詢模型并將查詢模型持久化,包括 查詢模型創(chuàng)建模塊31;持久化模塊32,用于將查詢模型進行持久化, 持久化是指使數(shù)據(jù)保存的時間長于其線程壽命,通常指存入數(shù)據(jù)庫 中;合法性校驗模塊33,用于在持久化模塊32將查詢模型進行持久 化之前對查詢模型進行合法性校驗、以及子查詢合法性校驗模塊331 對子查詢模型進行合法性校驗。參見圖2示出的流程圖,為模型完 成模塊3根據(jù)所述查詢模型創(chuàng)建模塊31用于將接收模塊1設置過的 功能庫模塊2按照以下步驟完成查詢模型設計
步驟bl、根據(jù)子查詢模塊221所提供的分發(fā)參數(shù)的路徑分發(fā)參 數(shù)到子查詢模型和/或原子查詢模型。
步驟b12、用前處理模塊25結合復合查詢生成樹對原子查詢模 型進行調整。步驟bl2包括以下2個子步驟
步驟b121、用投影交叉模塊251結合復合查詢生成樹對子查詢 模型和/或原子查詢模型進行調整;
步驟b122、用數(shù)據(jù)庫整理模塊252結合復合查詢生成樹對子查
詢模型和/或原子查詢模型進行調整。
以上2個步驟均是由參數(shù)完成對調整動作的控制,例如對查詢的 表、字段或條件等信息進行增補或修改。而動作本身的功能則是預 存的。而具體對哪個子查詢模型和/或原子查詢模型進行調整,則依 據(jù)的是存有參數(shù)和節(jié)點對應關系的復合查詢生成樹。
步驟b2、用查詢基本元素模塊21和參數(shù)模塊23完成原子查詢 模型。
步驟b3、用子查詢模塊221將子查詢模型和/或原子查詢模型合 成復合查詢模型。
步驟b4、用后處理模塊26對復合查詢模型進行后處理。步驟b4 包括以下2個子步驟
步驟b41、用旋轉交叉模塊261對復合查詢模型進行調整; 步驟b42、用數(shù)據(jù)加工模塊262對復合查詢模型進行調整。 同其它模塊一樣,以上2個步驟也都是由參數(shù)完成對調整動作的 控制,而動作本身的功能則是預存的。
步驟b5、用穿透規(guī)則模塊27,實現(xiàn)穿透規(guī)則的設定。 在本實施例中,采用的是嵌套有SQL語言的JAVA語言。其中 SQL語言用來實現(xiàn)非過程化的數(shù)據(jù)庫動作,例如按照一定查詢條件 篩選表和數(shù)據(jù)。JAVA語言用來實現(xiàn)SQL語言不能實現(xiàn)的功能,例 如旋轉交叉的實現(xiàn)等。同時因SQL語言為非過程化的語言,所以 JAVA語言還用來保證各個功能和設置按照執(zhí)行的順序執(zhí)行,即實現(xiàn) 過程控制。
下面參見圖15示出的查詢模型的建立方法的一個實施例的流程 圖,并結合上述系統(tǒng),對該方法進行詳細描述,包括以下步驟
首先是通過接收模塊1接收查詢需求,即向用戶提供可視化界 面,由用戶根據(jù)界面提供的內容和其需求在界面中選擇所需的參數(shù), 具體包括下述的步驟xl xl4:
步驟xl、通過接收模塊1提供的向導從元數(shù)據(jù)中選擇主業(yè)務實 體及其相關屬性。
步驟X2、通過接收模塊1確定查詢所需的基本元素。在本實施 例中通過數(shù)據(jù)字典完成基本元素的確定。數(shù)據(jù)字典對數(shù)據(jù)庫中的表、 視圖、字段、外鍵等對象賦予業(yè)務含義,并提供統(tǒng)一描述,這樣就 可以直接通過可視化的操作界面直接從數(shù)據(jù)字典中選取所需要查詢 的表、視圖、字段等。如圖3所示,即為一個數(shù)據(jù)字典的示例,該
例中示出了不同名稱的表,如合同管理、固定資產、客戶化dap等, 還示出了客戶化dap下的子表。可以通過接收模塊1根據(jù)查詢模型 的業(yè)務含義設計要取的數(shù)據(jù)庫中的哪些基本元素或者視圖等,例如 要建立培訓相關的查詢模型,則只需展開培訓管理,從中選擇所需 表或視圖等。在本實施例中,在實際選擇時可以選擇基本元素、也 可以選擇視圖等。數(shù)據(jù)字典是由查詢模型系統(tǒng)外部通過接口提供的。 在本實施例中,還可以是在所述步驟xl的查詢模型主體上進行補充。 例如圖5就是一個銷售訂單的元數(shù)據(jù)模型。在xl步驟中選取了圖5 所述的銷售訂單元數(shù)據(jù)中涉及到的業(yè)務實體及其相關屬性。在步驟 x2中可以對其補充。
步驟x3、通過接收模塊1接收復合查詢生成樹。本步驟是用來 對復合查詢進行設計。任何一個查詢模型,都可以作為其他查詢模 型的元查詢,也就是說,查詢模型可以在數(shù)據(jù)庫的基本元素、視圖 的基礎上執(zhí)行查詢,也可以在已定義查詢模型的基礎上執(zhí)行查詢, 在不形成閉環(huán)的前提下,此過程可以遞歸下去,這一行為稱為復合 查詢。復合查詢的原理如圖4所示,查詢將自頂而下地傳遞和分發(fā) 參數(shù),并自底而上地合成復合查詢。本實施例中采用的方法是,復 合查詢的參數(shù)設置能夠傳遞到它所引用的子查詢的參數(shù),同參數(shù)名 的參數(shù)將共享傳入的參數(shù)值。通常復合查詢的參數(shù)會包含它所引用 的所有子查詢的參數(shù)的并集。本步驟和步驟x2非常類似,也是在可 視化界面進行選擇操作,并由系統(tǒng)外部通過接口提供。
步驟x4、通過接收模塊1接收參數(shù)。因本實施例中采用了層狀 使用界面,這樣在接收參數(shù)時是在對應的各個子頁面中進行的。
步驟x5、通過接收模塊1導入已有的查詢模型。
步驟X6、設置模型主體模塊24,根據(jù)元數(shù)據(jù)中選擇的主業(yè)務實
體及其相關屬性,生成查詢模型主體??梢詤⒁妼δP椭黧w模塊24
的具體說明。
步驟x7、設置參數(shù)模塊23,完成參數(shù)定義或引用。
步驟x8、設置查詢基本元素模塊21,確定查詢所需的基本元素。
步驟x9、設置復合查詢模塊22及子查詢模塊221,根據(jù)復合查 詢生成樹生成從上向下分發(fā)參數(shù)到子查詢模型和/或原子查詢模型的 路徑,以及根據(jù)復合查詢生成樹生成將子查詢模型和/或原子查詢模 型合成復合查詢模型的路徑。
步驟x10、設置投影交叉模塊251,根據(jù)參數(shù)模塊23完成投影交 叉相關參數(shù)定義或引用。
步驟xll、設置數(shù)據(jù)庫整理模塊252,根據(jù)參數(shù)模塊23完成數(shù)據(jù) 庫整理相關參數(shù)定義或引用。
步驟xl2、設置旋轉交叉模塊261,根據(jù)參數(shù)模塊23完成旋轉交 叉相關參數(shù)定義或引用。
步驟x13、設置數(shù)據(jù)加工模塊262,根據(jù)參數(shù)模塊23完成數(shù)據(jù)加 工相關參數(shù)定義或引用。
步驟xl4、設置穿透規(guī)則模塊27,根據(jù)參數(shù)模塊23完成穿透規(guī) 則相關參數(shù)定義或引用。以上從步驟x10到x14中,在本實施例中 對應于層次界面中各子頁面的設置。當然也可以結合復合查詢生成 樹來完成。
步驟yl、用復合查詢模塊22分發(fā)參數(shù)到原子查詢模型和/或子查 詢模型。
步驟yl21、用投影交叉模塊251結合復合查詢生成樹對原子查 詢模型進行調整。
步驟y122、用數(shù)據(jù)庫整理模塊252結合復合查詢生成樹對原子 查詢模型進行調整。
步驟y2、用查詢基本元素模塊21和參數(shù)模塊23完成原子查詢 模型。
步驟y3、用復合查詢模塊22將原子查詢模型合成復合查詢模型。 步驟y41、用旋轉交叉模塊261對復合查詢模型進行調整。 步驟y42、用數(shù)據(jù)加工模塊262對復合查詢模型進行調整。 步驟y5、用穿透規(guī)則模塊27實現(xiàn)穿透規(guī)則的設定。 步驟y6、用合法性校驗模塊33以及子查詢合法性校驗模塊331, 對子查詢模型和/或查詢模型進行合法性校驗。合法性校驗是在持久 化之前進行檢查。例如一企查代碼的語法是否正確、是否存在一些人 為錯誤等。本實施例中通過預運行和其它的 一 些補充手段進行校驗。 例如預運行可以為將篩選參數(shù)設為1=0,預運行之后要求返回的值 應為空值。補充手段包括檢查表是否不存在或是否引用錯誤等。 步驟y7、用持久化模塊32,用于將查詢模型進行持久化。 在另一個實施例中,還可以是導入已有查詢模型,并在已有查詢 模型的基礎上,進行修改調整得到新的模型。而無需重新建立一個 新的查詢模型。接收模塊還可以接收所述的修改。例如,在原有查 詢模型的基礎上只是對旋轉交叉的規(guī)則進行調整。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明, 凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進 等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1. 一種建立查詢模型的系統(tǒng),其特征在于,包括:功能庫模塊(2),存儲有建立查詢模型的模塊,包括:參數(shù)模塊(23),用于定義或引用參數(shù);查詢基本元素模塊(21),用于確定查詢所需的基本元素;復合查詢模塊(22),存儲有復合查詢生成樹,用于根據(jù)復合查詢生成樹從上向下分發(fā)參數(shù)到原子查詢模型,以及根據(jù)復合查詢生成樹將原子查詢模型合成復合查詢模型;接收模塊(1),用于接收查詢需求,并根據(jù)查詢需求對功能庫模塊(2)的各模塊進行設置;模型完成模塊(3),用于創(chuàng)建查詢模型并將查詢模型持久化,包括查詢模型創(chuàng)建模塊(31)和將查詢模型進行持久化的持久化模塊(32);所述查詢模型創(chuàng)建模塊(31)用于將接收模塊(1)設置過的功能庫模塊(2)按照以下步驟完成查詢模型設計:步驟b1、根據(jù)復合查詢模塊(22)分發(fā)參數(shù)到原子查詢模型;步驟b2、根據(jù)查詢基本元素模塊(21)和參數(shù)模塊(23)完成原子查詢模型;步驟b3、根據(jù)復合查詢模塊(22)將原子查詢模型合成復合查詢模型。
2. 如權利要求1所述的系統(tǒng),其特征在于,所述功能庫模塊(2) 中的模塊還包括至少一個以下模塊前處理模塊(25),用于實現(xiàn) 前處理;后處理模塊(26),用于實現(xiàn)后處理;穿透規(guī)則模塊(27), 用于實現(xiàn)穿透規(guī)則的設定;所述查詢模型創(chuàng)建模塊(31)按照以下步驟完成查詢模型設計 在步驟bl后執(zhí)行步驟bl2:用前處理模塊(25)結合復合查詢生成樹對原子查詢模型進行調整;在步驟b3后執(zhí)行步驟b4:用后處理模塊(26)對復合查詢模型進行后處理;在步驟b4后執(zhí)行步驟b5:用穿透規(guī)則模塊(27)實現(xiàn)穿透規(guī)則 的設定。
3. 如權利要求2所述的系統(tǒng),其特征在于,所述的前處理模塊 (25)包括投影交叉模塊(251),用于完成投影交叉;數(shù)據(jù)庫整理模塊(252 ),用于對數(shù)據(jù)庫查詢行為進行調整;所述的后處理模塊(26)包括旋轉交叉模塊(261),用于實 現(xiàn)旋轉交叉;數(shù)據(jù)加工模塊(262),用于對數(shù)據(jù)結果集進行調整;所述步驟bl2包括步驟bl21、用投影交叉模塊(251 )結合復 合查詢生成樹對原子查詢模型進行調整;步驟b122、用數(shù)據(jù)庫整理 模塊(252 )結合復合查詢生成樹對原子查詢模型進行調整;所述步驟b4包括步驟b41、用旋轉交叉模塊(261 )對復合查 詢模型進行調整;步驟b42、用數(shù)據(jù)加工模塊(262)對復合查詢模 型進行調整。
4. 如權利要求1至3任一權利要求所述的系統(tǒng),其特征在于, 所述的模型完成模塊(3)還包括合法性校驗模塊(33),用于在 持久化模塊(32)將查詢模型進行持久化之前對查詢模型進行合法 性校驗。
5. 如權利要求3所述的系統(tǒng),其特征在于,所述的接收模塊(1 ) 還用于導入已有查詢模型;所述的復合查詢模塊(22)還包括子 查詢模塊(221),用于利用已有查詢模型作為子查詢,根據(jù)復合查 詢生成樹從上向下分發(fā)參數(shù)到原子查詢模型和/或子查詢,根據(jù)復合 查詢生成樹將原子查詢模型和/或子查詢合成復合查詢模型;所述步驟bl還包括用復合查詢模塊(22)分發(fā)參數(shù)到原子查 詢模型和/或子查詢模型;所述步驟bl21還包括用投影交叉模塊(251 )結合復合查詢生 成樹對原子查詢模型和/或子查詢模型進行調整;所述步驟b122還包 括用數(shù)據(jù)庫整理模塊(252 )結合復合查詢生成樹對原子查詢模型 和/或子查詢模型進行調整;所述步驟b2還包括用查詢基本元素模塊(21 )和參數(shù)模塊(23 ) 完成原子查詢模型和/或子查詢模型; 所述步驟b3還包括用復合查詢模塊(22)將原子查詢模型和/ 或子查詢模型合成復合查詢模型。
6. 如權利要求5所述的系統(tǒng),其特征在于,所述的合法性校驗 模塊(33)還包括子查詢合法性校驗模塊(331),用于對子查詢 模型進行合法性校驗。
7. 如權利要求1所述的系統(tǒng),其特征在于,所述功能庫模塊(2) 還包括模型主體模塊(24),用于生成查詢模型主體;所述接收模塊(1)接收的查詢需求還包括確定元數(shù)據(jù); 所述步驟bl前還包括從元數(shù)據(jù)中選擇主業(yè)務實體及其相關屬 性,生成查詢模型主體。
8. 如權利要求1所述的系統(tǒng),其特征在于,所述持久化模塊(32) 還包括,原子查詢模型持久化模塊,用于將原子查詢模型進行持久 化。
9. 一種建立查詢模型的方法,其特征在于,包括 步驟X、接收查詢需求,并根據(jù)接收的查詢需求定義或引用參數(shù)、確定原子查詢模型所需的基本元素和復合查詢生成樹;步驟Y、創(chuàng)建查詢模型并將查詢模型持久化,所述創(chuàng)建查詢模型 的步驟包括步驟yl、根據(jù)復合查詢生成樹從上向下分發(fā)參數(shù)到原子查詢模型;步驟y2、用所確定的原子查詢模型所需的基本元素和所述參數(shù) 完成原子查詢模型的建立;步驟y3 、根據(jù)復合查詢生成樹將原子查詢模型合成復合查詢。
10. 如權利要求9所述的方法,其特征在于,所述步驟yl后還 包括步驟yl2:根據(jù)前處理規(guī)則和復合查詢生成樹對所述原子查詢模 型的基本元素和參數(shù)進行調整;所述步驟y3后還包括步驟y4:根據(jù)后處理規(guī)則對合成的復合查 詢進行后處理;步驟y5:設定穿透規(guī)則。
11. 如權利要求10所述的方法,其特征在于,所述步驟yl2包 括步驟yl21、對原子查詢模型進行投影交叉調整;步驟y122、對 原子查詢模型進行數(shù)據(jù)庫整理調整;所述的步驟y4包括步驟y41、對復合查詢模型進行旋轉交叉 調整;步驟y42、對復合查詢模型進行數(shù)據(jù)加工調整。
12. 如權利要求9所述的方法,其特征在于,步驟Y所述將查 詢模型進行持久化之前還包括對查詢模型進行合法性校驗。
13. 如權利要求9所述的方法,其特征在于, 所述步驟X還包括導入已有查詢模型;所述步驟yl還包括根據(jù)復合查詢樹分發(fā)參數(shù)到原子查詢模型 和/或子查詢模型;所述步驟y12還包括根據(jù)投影交叉設置結合復合查詢生成樹對 原子查詢模型和/或子查詢模型進行調整;根據(jù)前處理規(guī)則結合復合 查詢生成樹對原子查詢模型和/或子查詢模型進行調整;所述步驟y2還包括根據(jù)基本元素和參數(shù)完成原子查詢模型和/ 或子查詢模型;所述步驟y3還包括根據(jù)復合查詢樹將原子查詢模型和/或子查 詢模型合成復合查詢模型。
14. 如權利要求13所述的方法,其特征在于,所述的步驟y2 后還包括對子查詢模型進行合法性校驗。
15. 如權利要求9至14任一權利要求所述的方法,其特征在于, 步驟X還包括從元數(shù)據(jù)中選擇主業(yè)務實體及其相關屬性,生成查 詢模型主體。
16. 如權利要求9所述的方法,其特征在于,所述的步驟y2還 包括,將原子模型持久化。
全文摘要
本發(fā)明公開了一種建立查詢模型的系統(tǒng),包括接收模塊,用于接收查詢需求,并根據(jù)查詢需求對功能庫模塊的各模塊進行設置;功能庫模塊,存放建立查詢模型所需的功能模塊,包括參數(shù)模塊,用于定義或引用參數(shù);查詢基本元素模塊,用于確定查詢所需的基本元素;復合查詢模塊,用于根據(jù)復合查詢生成樹從上向下分發(fā)參數(shù)到原子查詢,以及根據(jù)復合查詢生成樹將原子查詢合成復合查詢;模型完成模塊,用于創(chuàng)建查詢模型并將查詢模型持久化,包括查詢模型創(chuàng)建模塊和將查詢模型進行持久化的持久化模塊。還相應提供了建立查詢模型的方法。本發(fā)明可將各種復雜的查詢需求抽象轉化為可復用的查詢模型,并利用該模型得到業(yè)務級程序所需要的數(shù)據(jù)結果集。
文檔編號G06F17/30GK101382957SQ200810224179
公開日2009年3月11日 申請日期2008年10月24日 優(yōu)先權日2008年10月24日
發(fā)明者朱俊彬 申請人:用友軟件股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
内丘县| 扎兰屯市| 丁青县| 福海县| 嘉峪关市| 丹凤县| 辽中县| 江西省| 房产| 元谋县| 东平县| 如东县| 岑巩县| 从江县| 赞皇县| 东安县| 和政县| 延长县| 闵行区| 巫溪县| 梁河县| 德兴市| 合肥市| 兴城市| 漠河县| 阜康市| 景东| 绍兴县| 琼结县| 金平| 大足县| 庆元县| 京山县| 玉溪市| 峨眉山市| 运城市| 乐业县| 页游| 乌拉特前旗| 尚志市| 泰宁县|