專利名稱:針對(duì)數(shù)據(jù)庫(kù)表中大量數(shù)據(jù)進(jìn)行靈活運(yùn)算的公式定義組件的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種計(jì)算機(jī)應(yīng)用技術(shù),具體的說(shuō)是提供一種針對(duì)數(shù)據(jù)庫(kù)表中的大量客戶定制化的邏輯運(yùn)算公式定義組件。此組件可以大大簡(jiǎn)化數(shù)據(jù)庫(kù)應(yīng)用中的提供客戶定制運(yùn)算邏輯類的程序編寫,極大的提高應(yīng)用的開發(fā)效率、產(chǎn)品的穩(wěn)定性、擴(kuò)展性、易維護(hù)性等。
背景技術(shù):
目前,針對(duì)數(shù)據(jù)庫(kù)表需要用戶定制邏輯進(jìn)行運(yùn)算時(shí),一般是通過(guò)公式定義的方式來(lái)實(shí)現(xiàn)。雖然目前大部分公式定義都使用比較靈活,且操作也比較方便,但是大部分公式定義功能通常都只能針對(duì)固定表的固定記錄進(jìn)行公式運(yùn)算,比如常用的報(bào)表定義功能,一般的公式定義是針對(duì)報(bào)表的一個(gè)單元格來(lái)設(shè)置取數(shù)邏輯。這樣的公式定義不能滿足大數(shù)據(jù)量的同時(shí)更新需求。目前為了實(shí)現(xiàn)大數(shù)據(jù)量的同時(shí)更新需求,一般又是通過(guò)在程序里編寫固定的SQL語(yǔ)句來(lái)實(shí)現(xiàn)的。當(dāng)客戶需要由程序運(yùn)行時(shí)客戶根據(jù)不同的情況進(jìn)行動(dòng)態(tài)設(shè)置運(yùn)算邏輯時(shí),固定SQL是無(wú)法實(shí)現(xiàn)此功能的。即便有些實(shí)現(xiàn)了此功能的產(chǎn)品,也大都是功能簡(jiǎn)單死板,不夠靈活和方便,用戶平時(shí)使用麻煩,當(dāng)用戶需求發(fā)生變化,或有新系統(tǒng)有此類需求時(shí),均會(huì)造成對(duì)此類功能的重復(fù)編寫。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種針對(duì)數(shù)據(jù)庫(kù)表中大量數(shù)據(jù)進(jìn)行靈活運(yùn)算的公式定義組件,該組件是在計(jì)算機(jī)系統(tǒng)內(nèi)設(shè)置固定的運(yùn)算項(xiàng)目,用戶在此基礎(chǔ)上繼續(xù)定義計(jì)算項(xiàng)目,計(jì)算項(xiàng)目?jī)?nèi)的運(yùn)算公式只能使用已經(jīng)存在的固定項(xiàng)目和計(jì)算項(xiàng)目,只有在固定項(xiàng)目和計(jì)算項(xiàng)目上繼續(xù)定義一維表以及項(xiàng)目的若干取數(shù)對(duì)應(yīng)相應(yīng)的系數(shù),定義二維表和多維表包含兩個(gè)或多個(gè)一維表的項(xiàng)目作為維度,定義出二維表格和多維表格,填寫相應(yīng)的運(yùn)算系數(shù);利用運(yùn)算項(xiàng)目、一維表、二維表和多維表作為公式定義的計(jì)算因子,進(jìn)行計(jì)算表達(dá)式和條件表達(dá)式的編制,公式定義完畢后,系統(tǒng)自動(dòng)對(duì)描述公式轉(zhuǎn)換為定義公式,并將定義公式中出現(xiàn)的一維表、二維表和多維表展開,形成解析公式,公式正式運(yùn)算時(shí),讀取解析公式并嵌入運(yùn)算SQL中,進(jìn)行最終的邏輯運(yùn)算。
本發(fā)明的有益效果是,該組件包括運(yùn)算項(xiàng)目的設(shè)置、一維表、二維表、多維表系數(shù)定義、運(yùn)算公式定義等,并提供圖形化操作界面。設(shè)計(jì)理念支持每客戶單獨(dú)設(shè)置所需要的運(yùn)算項(xiàng)目、一維表、二維表和多維表系統(tǒng)數(shù)等公式運(yùn)算頂。并可根據(jù)需求方便靈活的進(jìn)行運(yùn)算項(xiàng)目擴(kuò)展。此組件功能實(shí)現(xiàn)邏輯獨(dú)立性強(qiáng),可方便應(yīng)用于不同系統(tǒng)中而不必做二次開發(fā)。
圖1是本發(fā)明的系統(tǒng)結(jié)構(gòu)框圖; 圖2是本發(fā)明的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)圖; 圖3是本發(fā)明的UML類設(shè)計(jì)圖。
具體實(shí)施例方式 本發(fā)明的組件可實(shí)現(xiàn)各客戶的個(gè)性化設(shè)置,根據(jù)主鍵對(duì)應(yīng)表,將調(diào)用組件外部的應(yīng)用組合主鍵,對(duì)應(yīng)到組件內(nèi)部單一主鍵進(jìn)行匹配,可提高組件在不同系統(tǒng)間的移植性。為了兼顧組件的強(qiáng)大功能及使用上的靈活性,組件內(nèi)部采用了多種公式狀態(tài)并存的機(jī)制,包括描述公式、定義公式、解析公式三種狀態(tài),分別對(duì)應(yīng)不同時(shí)期的公式樣式。描述公式即公式的中文表達(dá)方式,方便用戶理解公式含義;定義公式為公式保存時(shí),將中文表達(dá)式替換為程序可以理解的項(xiàng)目字段名稱,方便計(jì)算機(jī)理解公式;解析公式是指將定義公式中的各種運(yùn)算項(xiàng)目展開,以方便計(jì)算機(jī)對(duì)公式進(jìn)行運(yùn)算時(shí)可以直接使用。
系統(tǒng)整體框架結(jié)構(gòu)如圖1所示,首先由系統(tǒng)內(nèi)置若干固定的運(yùn)算項(xiàng)目,用戶可以在此基礎(chǔ)上繼續(xù)定義計(jì)算項(xiàng)目。計(jì)算項(xiàng)目?jī)?nèi)的運(yùn)算公式只能使用已經(jīng)存在的內(nèi)置項(xiàng)目和計(jì)算項(xiàng)目。在內(nèi)置項(xiàng)目和計(jì)算項(xiàng)目上可以繼續(xù)定義一維表,即項(xiàng)目的若干取數(shù)對(duì)應(yīng)相應(yīng)的系數(shù)。二維表和多維表包含兩個(gè)或多個(gè)一維表的項(xiàng)目作為維度,定義出二維表格和多維表格,填寫相應(yīng)的運(yùn)算系數(shù)。利用運(yùn)算項(xiàng)目、一維表、二維表和多維表作為公式定義的計(jì)算因子,進(jìn)行計(jì)算表達(dá)式和條件表達(dá)式的編制,公式定義完畢后,系統(tǒng)會(huì)自動(dòng)對(duì)描述公式轉(zhuǎn)換為定義公式,并將定義公式中出現(xiàn)的一維表、二維表和多維表展開,形成解析公式。公式正式運(yùn)算時(shí),就是讀取解析公式并嵌入運(yùn)算SQL中,進(jìn)行最終的邏輯運(yùn)算。
為了支持靈活的運(yùn)算項(xiàng)目定制、類別系數(shù)、區(qū)間系數(shù)、二維表系數(shù)等公式定義方式,本公式定義組件包含以下功能點(diǎn)
公式項(xiàng)目定義公式項(xiàng)目定義為系統(tǒng)全局性參數(shù)。公式項(xiàng)目包含兩部分系統(tǒng)內(nèi)置項(xiàng)目,在系統(tǒng)初始時(shí)增加進(jìn)去,正式使用后禁止修改。客戶定制計(jì)算項(xiàng)目,客戶在使用過(guò)程中,根據(jù)不同的客戶的個(gè)性化需求,可以自定義若干計(jì)算項(xiàng)目。所有計(jì)算項(xiàng)目需建立在現(xiàn)有內(nèi)置項(xiàng)目的基礎(chǔ)上。
客戶項(xiàng)目定義在全局性的公式項(xiàng)目定義完成后,每個(gè)客戶根據(jù)需要將本客戶用到的所有項(xiàng)目選擇到此客戶項(xiàng)目?jī)?nèi)。
一維表定義
對(duì)客戶選擇的部分項(xiàng)目,可以進(jìn)行類別系數(shù)和區(qū)間系數(shù)的定義。此處的系數(shù)即指此項(xiàng)目中的每一個(gè)值(或某個(gè)區(qū)間值),分別對(duì)應(yīng)一個(gè)系數(shù)值,當(dāng)公式運(yùn)算時(shí),根據(jù)此項(xiàng)目的實(shí)際值,轉(zhuǎn)換成相應(yīng)的系數(shù)值進(jìn)行運(yùn)算。此系數(shù)定義即可以直接出現(xiàn)在公式定義中,也是二維表定義的基礎(chǔ)數(shù)據(jù)。二維表中的每個(gè)維度即為此處的一個(gè)項(xiàng)目類別或區(qū)間。
二維表(多維表)定義對(duì)客戶選擇中定義了類別系數(shù)或區(qū)間系數(shù)的項(xiàng)目,可以通過(guò)選擇兩個(gè)(或多個(gè)),進(jìn)行交叉顯示形成二維表格(或多維表),對(duì)每個(gè)單元格可以設(shè)置系數(shù)值參加公式運(yùn)算。此處的系數(shù)即指此單元格對(duì)應(yīng)的兩個(gè)(或多個(gè))項(xiàng)目中的取值,對(duì)應(yīng)一個(gè)系數(shù)值。
公式定義在運(yùn)算項(xiàng)目和各種系數(shù)定義完成后,就可以通過(guò)公式定義功能對(duì)客戶進(jìn)行多種運(yùn)算公式的定義了。公式定義提供了便于操作的圖形化界面,用戶只需要根據(jù)界面顯示的各運(yùn)算項(xiàng)目和運(yùn)算符組合自己需要的運(yùn)算表達(dá)式和條件表達(dá)式即可。
公式運(yùn)算公式定義完成后,會(huì)自動(dòng)進(jìn)行公式解析,并生成解析公式狀態(tài)。系統(tǒng)在需要的地方,讀取解析公式,并應(yīng)用到相應(yīng)的SQL語(yǔ)句中,即可實(shí)現(xiàn)用戶定制運(yùn)算邏輯的大數(shù)據(jù)量運(yùn)算處理。
實(shí)施例 本發(fā)明的組件包括以下步驟和內(nèi)容
主鍵對(duì)應(yīng)表將調(diào)用此組件的外部應(yīng)用的組合主鍵,對(duì)應(yīng)到組件內(nèi)部單一主鍵進(jìn)行匹配,可提高組件在不同系統(tǒng)間的移植性。
多態(tài)公式為了兼顧組件的強(qiáng)大功能及使用上的靈活性,組件內(nèi)部采用了
多種公式狀態(tài)并存的機(jī)制,包括描述公式、定義公式、解析公式三種狀態(tài),分別對(duì)應(yīng)不同時(shí)期的公式樣式。描述公式即公式的中文表達(dá)方式,方便用戶理解公式含義;定義公式為公式保存時(shí),將中文表達(dá)式替換為程序可以理解的項(xiàng)目字段名稱,方便計(jì)算機(jī)理解公式;解析公式是指將定義公式中的各種運(yùn)算項(xiàng)目(包括直接項(xiàng)目、計(jì)算項(xiàng)目、各種系數(shù)定義等)展開,以方便計(jì)算機(jī)對(duì)公式進(jìn)行運(yùn)算時(shí)可以直接使用。三種狀態(tài)下公式的數(shù)量對(duì)照關(guān)系為1∶1∶n(n的值要看多維表系數(shù)的展開情況)。
一維表為了方便用戶定義公式,組件支持一維表、二維表和多維表的方式進(jìn)行公式定義。
一維表指某個(gè)運(yùn)算項(xiàng)目的某些類別值,分別對(duì)應(yīng)不同的系數(shù)參與公式運(yùn)算。比如運(yùn)算項(xiàng)目“職務(wù)”的一維表定義如下所示,在公式定義中運(yùn)算項(xiàng)為基數(shù)*系數(shù)(職務(wù)),在實(shí)際的公式運(yùn)算時(shí),會(huì)根據(jù)每條記錄的職務(wù)字段的不同取值,換算成相應(yīng)的系數(shù)值參與運(yùn)算。(此功能的實(shí)現(xiàn),是通過(guò)公式多態(tài)機(jī)制實(shí)現(xiàn)的)
二維表指兩個(gè)一維表交叉組成二維表格,比如兩個(gè)維度分別是“職務(wù)”和“入司年限”,二維表A定義如下在公式定義中運(yùn)算項(xiàng)為基數(shù)*二維表(A),在實(shí)際的公式運(yùn)算時(shí),會(huì)根據(jù)每條記錄的職務(wù)和入司年限(入司年限可以是計(jì)算字段當(dāng)前日期減去入司時(shí)間)兩個(gè)字段的不同取值,換算成相應(yīng)的系數(shù)值參與運(yùn)算。(此功能的實(shí)現(xiàn),是通過(guò)公式多態(tài)機(jī)制實(shí)現(xiàn)的)
多維表指超過(guò)兩個(gè)一維表交叉組成多維表格。原理同二維表。多維表定義格式如下 對(duì)外提供主要組件包括根據(jù)外部主鍵進(jìn)行公式的增加、修改、刪除等;根據(jù)外部主鍵進(jìn)行公式信息的復(fù)制和轉(zhuǎn)移;根據(jù)不同的數(shù)據(jù)特性,獲取相關(guān)的公式信息。以下組件均有不同參數(shù)的若干重載函數(shù) saveParam()保存相關(guān)運(yùn)算項(xiàng)目; saveFormula()保存相關(guān)公式信息; delFormula()刪除相關(guān)公式信息; getParamList()獲得相關(guān)的參數(shù)列表; getFormulaList()獲得相關(guān)的公式列表; copyFormulas()復(fù)制和移動(dòng)指定的公式信息; express()解析公式。主要用于公式不同狀態(tài)間的轉(zhuǎn)換。
本發(fā)明的組件可應(yīng)用到金融相關(guān)行業(yè)中,比如銀行、證券、企業(yè)年金等。以企業(yè)年金為例,在企業(yè)年金賬管系統(tǒng)中,經(jīng)常會(huì)處理到某些企業(yè)計(jì)劃和個(gè)人計(jì)劃的繳費(fèi)、歸屬、支付等業(yè)務(wù)。此類業(yè)務(wù)通常需要針對(duì)幾萬(wàn)甚至幾十萬(wàn)條記錄,根據(jù)各條記錄的不同字段屬性進(jìn)行不同的運(yùn)算處理。本發(fā)明組件已經(jīng)在數(shù)個(gè)類似系統(tǒng)中成功應(yīng)用,并對(duì)系統(tǒng)在保質(zhì)保量前提下的快速開發(fā)提供了強(qiáng)大的技術(shù)支持!
權(quán)利要求
1.針對(duì)數(shù)據(jù)庫(kù)表中大量數(shù)據(jù)進(jìn)行靈活運(yùn)算的公式定義組件,其特征在于在計(jì)算機(jī)系統(tǒng)內(nèi)設(shè)置固定的運(yùn)算項(xiàng)目,用戶在此基礎(chǔ)上繼續(xù)定義計(jì)算項(xiàng)目,計(jì)算項(xiàng)目?jī)?nèi)的運(yùn)算公式只能使用已經(jīng)存在的固定項(xiàng)目和計(jì)算項(xiàng)目,只有在固定項(xiàng)目和計(jì)算項(xiàng)目上繼續(xù)定義一維表以及項(xiàng)目的若干取數(shù)對(duì)應(yīng)相應(yīng)的系數(shù),定義二維表和多維表包含兩個(gè)或多個(gè)一維表的項(xiàng)目作為維度,定義出二維表格和多維表格,填寫相應(yīng)的運(yùn)算系數(shù);利用運(yùn)算項(xiàng)目、一維表、二維表和多維表作為公式定義的計(jì)算因子,進(jìn)行計(jì)算表達(dá)式和條件表達(dá)式的編制,公式定義完畢后,系統(tǒng)自動(dòng)對(duì)描述公式轉(zhuǎn)換為定義公式,并將定義公式中出現(xiàn)的一維表、二維表和多維表展開,形成解析公式,公式正式運(yùn)算時(shí),讀取解析公式并嵌入運(yùn)算SQL中,進(jìn)行最終的邏輯運(yùn)算。
2.根據(jù)權(quán)利要1所述的公式定義組件,其特征在于組件包括以下內(nèi)容
1)主鍵對(duì)應(yīng)表將調(diào)用此組件的外部應(yīng)用的組合主鍵,對(duì)應(yīng)到組件內(nèi)部單一主鍵進(jìn)行匹配,以提高組件在不同系統(tǒng)間的移植性;
2)多態(tài)公式為了兼顧組件的強(qiáng)大功能及使用上的靈活性,采用的多種公式狀態(tài)包括描述公式、定義公式、解析公式三種狀態(tài),三種狀態(tài)并存并分別對(duì)應(yīng)不同時(shí)期的公式樣式;
描述公式是指公式以中文方式表達(dá),方便用戶理解公式含義;
定義公式是指公式保存時(shí),將中文表達(dá)式替換為程序可以理解的項(xiàng)目字段名稱,方便計(jì)算機(jī)理解公式;
解析公式是指將定義公式中的直接項(xiàng)目、計(jì)算項(xiàng)目、各種系數(shù)定義的展開,以方便計(jì)算機(jī)對(duì)公式進(jìn)行運(yùn)算時(shí)直接使用;
三種狀態(tài)下公式的數(shù)量對(duì)照關(guān)系為1∶1∶n,n的值表示多維表系數(shù)的展開情況;
3)一維表為了方便用戶定義公式,組件支持一維表、二維表和多維表的方式進(jìn)行公式定義,其中一維表指某個(gè)運(yùn)算項(xiàng)目的某些類別值,分別對(duì)應(yīng)不同的系數(shù)參與公式運(yùn)算;
比如運(yùn)算項(xiàng)目“職務(wù)”的一維表,在公式定義中運(yùn)算項(xiàng)為基數(shù)*系數(shù),在實(shí)際的公式運(yùn)算時(shí),會(huì)根據(jù)每條記錄的職務(wù)字段的不同取值,換算成相應(yīng)的系數(shù)值參與運(yùn)算;
4)二維表指兩個(gè)一維表交叉組成二維表格,比如兩個(gè)維度分別是“職務(wù)”和“入司年限”,二維表A定義如下在公式定義中運(yùn)算項(xiàng)為基數(shù)*二維表(A),在實(shí)際的公式運(yùn)算時(shí),會(huì)根據(jù)每條記錄的職務(wù)和入司年限兩個(gè)字段的不同取值,換算成相應(yīng)的系數(shù)值參與運(yùn)算。入司年限是計(jì)算字段當(dāng)前日期減去入司時(shí)間;
5)多維表指超過(guò)兩個(gè)一維表交叉組成多維表格,原理同二維表
全文摘要
本發(fā)明提供一種針對(duì)數(shù)據(jù)庫(kù)表中大量數(shù)據(jù)進(jìn)行靈活運(yùn)算的公式定義組件,該組件是用于解決數(shù)據(jù)庫(kù)應(yīng)用中有時(shí)會(huì)遇到需要對(duì)數(shù)據(jù)庫(kù)表中大量數(shù)據(jù)進(jìn)行某項(xiàng)運(yùn)算,此運(yùn)算需要根據(jù)每條記錄的不同字段的不同取值進(jìn)行不同的邏輯處理,且此種邏輯處理是在運(yùn)行時(shí)根據(jù)用戶的不同客戶需求隨時(shí)定制的,考慮到不同的客戶會(huì)有不同的運(yùn)算邏輯,且運(yùn)算邏輯會(huì)經(jīng)常性的發(fā)生變化,因此,本發(fā)明的組件提供了客戶屬性個(gè)性化設(shè)置、運(yùn)算邏輯的變更、修改、擴(kuò)展的方便操作。該組件還提供了包括運(yùn)算項(xiàng)目的設(shè)置、一維表、二維表和多維表系數(shù)定義、運(yùn)算公式定義等。因此具有功能實(shí)現(xiàn)邏輯獨(dú)立性強(qiáng),可方便應(yīng)用于不同系統(tǒng)中而不必做二次開發(fā)。
文檔編號(hào)G06F17/30GK101187929SQ200710115049
公開日2008年5月28日 申請(qǐng)日期2007年12月5日 優(yōu)先權(quán)日2007年12月5日
發(fā)明者王士勇, 曲麗君 申請(qǐng)人:浪潮集團(tuán)山東通用軟件有限公司