專利名稱:數(shù)據(jù)訪問層Xml格式數(shù)據(jù)與關(guān)系數(shù)據(jù)間的映射轉(zhuǎn)換方法
技術(shù)領(lǐng)域:
本發(fā)明設(shè)計(jì)一種計(jì)算機(jī)應(yīng)用技術(shù),具體涉及一種數(shù)據(jù)訪問層Xml格式數(shù)據(jù)與關(guān)系數(shù)據(jù)間的映射轉(zhuǎn)換方法。
2、背景技術(shù)軟件的體系架構(gòu)上通常可分為三層界面表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層。通常在企業(yè)級(jí)應(yīng)用開發(fā)環(huán)境中,面向?qū)ο蟮拈_發(fā)方法已經(jīng)成為主流方法。對(duì)象只存在于內(nèi)存中,如果要永久的保存對(duì)象數(shù)據(jù),需要進(jìn)行對(duì)象的持久化,即將對(duì)象存儲(chǔ)到數(shù)據(jù)庫(kù)中。反之,需要將數(shù)據(jù)從數(shù)據(jù)庫(kù)中加載,構(gòu)造為內(nèi)存的對(duì)象。目前,關(guān)系型數(shù)據(jù)庫(kù)仍然是主流的、使用最廣泛的數(shù)據(jù)庫(kù),它存儲(chǔ)數(shù)據(jù)的形式是非面向?qū)ο蟮?。因此,把?duì)象用關(guān)系數(shù)據(jù)庫(kù)進(jìn)行存取訪問,需要進(jìn)行映射和轉(zhuǎn)換,這就是我們通常所說(shuō)的數(shù)據(jù)訪問層開發(fā)。手工編寫和維護(hù)數(shù)據(jù)訪問層的映射和轉(zhuǎn)換代碼,由于存在兼容數(shù)據(jù)庫(kù)類型(Oracle、Sql Server、DB2、Sybase等)和版本之間的差異等等,這無(wú)疑是一項(xiàng)繁瑣、耗時(shí)的工作。
此外,業(yè)務(wù)應(yīng)用系統(tǒng)中的數(shù)據(jù),因?yàn)樾?、空間等原因,一種數(shù)據(jù)往往需定義多個(gè)實(shí)體對(duì)象類型,這些對(duì)象類型的定義、轉(zhuǎn)換、部署以及維護(hù)也較為繁瑣,同時(shí)考慮異構(gòu)系統(tǒng)之間通信的需求,因此需要一種通用的統(tǒng)一數(shù)據(jù)格式和對(duì)象形式對(duì)數(shù)據(jù)進(jìn)行封裝。
3、發(fā)明內(nèi)容本發(fā)明的目的是提供一種數(shù)據(jù)訪問層Xml格式數(shù)據(jù)和關(guān)系數(shù)據(jù)之間的映射和轉(zhuǎn)換方法,該方法主要包括設(shè)計(jì)時(shí)和運(yùn)行時(shí)兩個(gè)階段,其中在設(shè)計(jì)時(shí)階段,如圖1所示,針對(duì)關(guān)系數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)以及對(duì)象與關(guān)系數(shù)據(jù)的映射和轉(zhuǎn)換進(jìn)行建模,描述為數(shù)據(jù)對(duì)象和數(shù)據(jù)模型兩種元數(shù)據(jù),數(shù)據(jù)對(duì)象是關(guān)系數(shù)據(jù)進(jìn)行建模,將數(shù)據(jù)庫(kù)中的表和視圖的數(shù)據(jù)結(jié)構(gòu)抽象出來(lái),描述其名稱、字段屬性等。
其中表或視圖,描述其顯示名稱、編碼、表或視圖名(數(shù)據(jù)庫(kù)標(biāo)識(shí))、作者、版本、創(chuàng)建日期等。
其中字段屬性中,主要信息有字段顯示名稱,字段名(數(shù)據(jù)庫(kù)標(biāo)識(shí))、字段類型、字段長(zhǎng)度、是否必填、是否為關(guān)鍵字等。
在字段屬性中的字段類型,考慮需兼容多種類型的數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)類型進(jìn)行了抽象,定義了一套中立的數(shù)據(jù)類型,和具體的某種數(shù)據(jù)庫(kù)的數(shù)據(jù)類型之間建立映射關(guān)系,從而屏蔽數(shù)據(jù)庫(kù)差異。在此基礎(chǔ)上,另定義了業(yè)務(wù)系統(tǒng)中常用的一些業(yè)務(wù)數(shù)據(jù)類型,比如編號(hào)、名稱、備注、金額等數(shù)據(jù)類型,其作用有兩個(gè)一是方便錄入,二是對(duì)業(yè)務(wù)數(shù)據(jù)類型做了規(guī)定和統(tǒng)一,避免因?yàn)槭止ぴO(shè)置失誤造成的程序錯(cuò)誤。對(duì)于業(yè)務(wù)數(shù)據(jù)類型,提供擴(kuò)展定義,用戶在開發(fā)使用時(shí)可自行擴(kuò)展。此外為了錄入維護(hù)便利,提供了和數(shù)據(jù)庫(kù)設(shè)計(jì)工具PD(Power Designer)文檔格式之間的轉(zhuǎn)換功能。用戶可以在PD中進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),保存為PD文檔,直接導(dǎo)入生成數(shù)據(jù)對(duì)象。
數(shù)據(jù)模型業(yè)務(wù)實(shí)體是業(yè)務(wù)系統(tǒng)中數(shù)據(jù)的有機(jī)構(gòu)成形式,一般由多張數(shù)據(jù)表構(gòu)成,多張表之間構(gòu)成主從關(guān)系和關(guān)聯(lián)關(guān)系。數(shù)據(jù)模型便是用于描述業(yè)務(wù)實(shí)體的數(shù)據(jù)構(gòu)成關(guān)系。在數(shù)據(jù)對(duì)象的基礎(chǔ)上,對(duì)業(yè)務(wù)實(shí)體以及業(yè)務(wù)實(shí)體的關(guān)系進(jìn)行建模,描述業(yè)務(wù)實(shí)體的的數(shù)據(jù)結(jié)構(gòu),業(yè)務(wù)實(shí)體的業(yè)務(wù)數(shù)據(jù)信息,業(yè)務(wù)實(shí)體之間的關(guān)系。
1)數(shù)據(jù)模型的構(gòu)成結(jié)構(gòu)為一個(gè)主表,多個(gè)從表,構(gòu)成主從關(guān)系,從表下可再掛接從表,構(gòu)成嵌套的主從關(guān)系。一個(gè)模型可以定義于其他模型的關(guān)聯(lián)關(guān)系。
2)數(shù)據(jù)模型和數(shù)據(jù)對(duì)象的關(guān)系。數(shù)據(jù)模型中的表,引用自數(shù)據(jù)對(duì)象,數(shù)據(jù)模型中表的字段對(duì)應(yīng)數(shù)據(jù)對(duì)象中的字段,這種對(duì)應(yīng)關(guān)系可以是完全對(duì)應(yīng),也可以是部分對(duì)應(yīng)。即數(shù)據(jù)模型的表可以選擇的對(duì)應(yīng)數(shù)據(jù)對(duì)象中的部分字段。對(duì)應(yīng)過來(lái)后,自動(dòng)根據(jù)數(shù)據(jù)對(duì)象的描述信息,形成數(shù)據(jù)模型的描述信息,數(shù)據(jù)模型的表的編碼、名稱直接取自數(shù)據(jù)對(duì)象的編碼和名稱;數(shù)據(jù)模型中表的字段描述信息,部分取自數(shù)據(jù)對(duì)象的字段描述的信息數(shù)據(jù)類型、是否必填、主鍵等。特別的,數(shù)據(jù)模型上定義的數(shù)據(jù)類型區(qū)別于數(shù)據(jù)對(duì)象上定義的數(shù)據(jù)類型,數(shù)據(jù)模型上定義的數(shù)據(jù)類型為面向開發(fā)編程語(yǔ)言的數(shù)據(jù)類型,而數(shù)據(jù)對(duì)象上的數(shù)據(jù)類型則是抽象自數(shù)據(jù)庫(kù)的數(shù)據(jù)類型。比如,數(shù)據(jù)對(duì)象定義的“VARCHAR(n)”這種數(shù)據(jù)類型,在數(shù)據(jù)模型中對(duì)應(yīng)“string”這種數(shù)據(jù)類型。
3)數(shù)據(jù)模型的表屬性信息編號(hào)、名稱、主鍵字段指定、主鍵生成規(guī)則、是否啟用編碼字段、編碼字段指定、編碼字段生成規(guī)則、數(shù)據(jù)分級(jí)定義、排序定義等。
4)數(shù)據(jù)模型的字段屬性信息。字段的顯示名稱、編號(hào)、標(biāo)簽(指代名)、字段數(shù)據(jù)用途、字段類型、字段對(duì)象類型定義、是否用作列權(quán)限分配、數(shù)據(jù)權(quán)限定義、是否必須、是否在插入時(shí)使用、是否在更新時(shí)使用等。部分字段屬性定義解釋如下其中字段數(shù)據(jù)用途為列表、卡片、打印、參照和查詢條件,是多選的。
其中字段對(duì)象類型定義用于指定字段的關(guān)聯(lián)關(guān)系或者使用的枚舉值定義。關(guān)聯(lián)關(guān)系定義用于定義數(shù)據(jù)模型之間的關(guān)聯(lián)關(guān)系。枚舉值定義用于簡(jiǎn)單的錄入幫助。比如“是”、“否”或者“男”、“女”等。其中列權(quán)限、數(shù)據(jù)權(quán)限定義用于和權(quán)限系統(tǒng)的關(guān)聯(lián)定義。
5)數(shù)據(jù)模型的表的主從關(guān)系定義。指定主表和從表之間的關(guān)聯(lián)關(guān)系,指定從表的一個(gè)或多個(gè)字段作為外鍵和主表的相應(yīng)的一個(gè)或多個(gè)字段關(guān)聯(lián)。
6)數(shù)據(jù)模型之間的關(guān)聯(lián)關(guān)系。數(shù)據(jù)模型之間的關(guān)聯(lián)關(guān)系是由數(shù)據(jù)模型的一個(gè)字段關(guān)聯(lián)另一個(gè)數(shù)據(jù)模型中的一個(gè)字段而構(gòu)成的。在字段屬性中有一個(gè)字段對(duì)象類型定義,當(dāng)選擇為關(guān)聯(lián)關(guān)系時(shí),可以定義于另一個(gè)模型的關(guān)聯(lián)。在關(guān)聯(lián)中指定關(guān)聯(lián)模型中與之關(guān)聯(lián)的字段,關(guān)聯(lián)的附加條件,并可指定在模型中查詢關(guān)聯(lián)的相關(guān)關(guān)聯(lián)模型的字段,比如一個(gè)客戶數(shù)據(jù)模型,其中有一個(gè)地區(qū)字段,關(guān)聯(lián)地區(qū)數(shù)據(jù)模型,在關(guān)聯(lián)的時(shí)候指定關(guān)聯(lián)帶出地區(qū)數(shù)據(jù)模型的地區(qū)編碼、名稱等信息。
設(shè)計(jì)時(shí)定義的數(shù)據(jù)對(duì)象和數(shù)據(jù)模型,用自定義的一套XML標(biāo)記來(lái)描述,其保存格式本身為XML文檔格式,作為元數(shù)據(jù)(描述數(shù)據(jù)的數(shù)據(jù))資源來(lái)管理。
運(yùn)行時(shí)階段圖2-3所示,在運(yùn)行時(shí)階段,由數(shù)據(jù)訪問引擎,根據(jù)設(shè)計(jì)時(shí)定義的元數(shù)據(jù)信息,結(jié)合輸入的數(shù)據(jù)信息,動(dòng)態(tài)的構(gòu)造數(shù)據(jù)庫(kù)存取訪問的SQL語(yǔ)句,訪問數(shù)據(jù)庫(kù),自動(dòng)完成增刪改查的數(shù)據(jù)訪問層的功能。特別的,為了提高效率,對(duì)動(dòng)態(tài)構(gòu)造過程的結(jié)果進(jìn)行適量的緩存。
為兼容數(shù)據(jù)庫(kù)差異,在數(shù)據(jù)訪問引擎構(gòu)造SQL以及訪問數(shù)據(jù)庫(kù)時(shí),根據(jù)元數(shù)據(jù)的相關(guān)信息,根據(jù)當(dāng)前訪問的數(shù)據(jù)庫(kù)類型和版本,針對(duì)數(shù)據(jù)庫(kù)類型和版本之間方言的差異,使用策略模式,動(dòng)態(tài)的調(diào)整SQL語(yǔ)句以適應(yīng)不同的數(shù)據(jù)庫(kù)類型和版本。
此外,對(duì)于業(yè)務(wù)系統(tǒng)中編號(hào)生成規(guī)則,權(quán)限集成等提供擴(kuò)展接口定義,以使用不同的應(yīng)用場(chǎng)景。在開發(fā)和實(shí)施過程中,根據(jù)不同業(yè)務(wù)場(chǎng)景的需要,可以自定義實(shí)現(xiàn)擴(kuò)展接口并注冊(cè)到數(shù)據(jù)訪問引擎中,以實(shí)現(xiàn)擴(kuò)展的功能。默認(rèn)的,數(shù)據(jù)訪問引擎中集成了常用的編號(hào)生成規(guī)則以及權(quán)限集成的實(shí)現(xiàn)。
針對(duì)對(duì)象類型定義和維護(hù)的繁瑣,數(shù)據(jù)訪問引擎的的數(shù)據(jù)交換標(biāo)準(zhǔn)為XML。在返回XML的同時(shí),提供返回XML的XML Schema的功能。數(shù)據(jù)訪問引擎提供默認(rèn)的Xml訪問對(duì)象,也可以利用其他的系統(tǒng)基礎(chǔ)類庫(kù)提供的XML訪問對(duì)象進(jìn)行訪問。并且為在異構(gòu)系統(tǒng)之間交互數(shù)據(jù)和數(shù)據(jù)標(biāo)準(zhǔn)提供了很好的支持。
從外部調(diào)用接口方面,定義了本地調(diào)用和We浪潮集團(tuán)山東通用軟件有限公司服務(wù)調(diào)用兩種客戶端,便于不同的應(yīng)用開發(fā)模式的調(diào)用。
這樣就完成了在數(shù)據(jù)訪問層Xml格式數(shù)據(jù)和關(guān)系數(shù)據(jù)之間的映射和轉(zhuǎn)換XML-RelationDataMapping,簡(jiǎn)稱為XR-Mapping。
本發(fā)明的有益效果是XML格式數(shù)據(jù)和關(guān)系數(shù)據(jù)之間的映射和轉(zhuǎn)換技術(shù),能夠有效的封裝對(duì)關(guān)系數(shù)據(jù)庫(kù)的存取訪問,屏蔽了底層數(shù)據(jù)庫(kù)由于數(shù)據(jù)庫(kù)的種類、版本等差異造成的開發(fā)復(fù)雜度,提供了一種標(biāo)準(zhǔn)的XML數(shù)據(jù)訪問和傳輸格式,使得開發(fā)者不用編寫任何代碼即可實(shí)現(xiàn)持久化層存取訪問的功能,從而非常有效的降低了軟件系統(tǒng)持久化層的開發(fā)難度、開發(fā)風(fēng)險(xiǎn)。此外,這種方法使得業(yè)務(wù)數(shù)據(jù)的結(jié)構(gòu)調(diào)整變得簡(jiǎn)單,當(dāng)數(shù)據(jù)庫(kù)結(jié)構(gòu)和業(yè)務(wù)單據(jù)結(jié)構(gòu)發(fā)生調(diào)整時(shí),通過圖形化的數(shù)據(jù)對(duì)象、數(shù)據(jù)模型設(shè)計(jì)器進(jìn)行調(diào)整,不需要進(jìn)行編譯和物理發(fā)布,即可完成調(diào)整工作。有效的降低了軟件系統(tǒng)實(shí)施和維護(hù)過程中的成本和風(fēng)險(xiǎn)以及軟件廠商的開發(fā)、實(shí)施成本。使軟件系統(tǒng)能夠快速適應(yīng)用戶的個(gè)性化需求,滿足用戶不斷發(fā)展和完善信息系統(tǒng)的長(zhǎng)期目標(biāo)。
圖1是設(shè)計(jì)時(shí)階段的數(shù)據(jù)建模示意圖;圖2時(shí)數(shù)據(jù)之間的映射和轉(zhuǎn)換示意圖;圖3是數(shù)據(jù)訪問引擎高層的設(shè)計(jì)圖。
4、實(shí)施方式實(shí)施方式也分為設(shè)計(jì)時(shí)(數(shù)據(jù)建模)和運(yùn)行(數(shù)據(jù)存取、轉(zhuǎn)換)時(shí)兩個(gè)階段。在設(shè)計(jì)時(shí),通過數(shù)據(jù)建模,對(duì)業(yè)務(wù)數(shù)據(jù)的靜態(tài)結(jié)構(gòu)進(jìn)行分層描述(數(shù)據(jù)對(duì)象描述數(shù)據(jù)庫(kù)結(jié)構(gòu),數(shù)據(jù)模型描述業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu));在運(yùn)行時(shí),根據(jù)設(shè)計(jì)時(shí)描述,動(dòng)態(tài)解析,完成XML數(shù)據(jù)和數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)之間的映射和轉(zhuǎn)換。
4.1設(shè)計(jì)時(shí)如附圖1所示,在設(shè)計(jì)時(shí)(一)根據(jù)業(yè)務(wù)需求抽象出的數(shù)據(jù)結(jié)構(gòu),建立數(shù)據(jù)對(duì)象(數(shù)據(jù)庫(kù)中表結(jié)構(gòu)的描述),描述表的數(shù)據(jù)庫(kù)名,表的所屬列以及列的相關(guān)字段信息(字段名、類型、長(zhǎng)度、精度、是否唯一、是否可為空值等)。
(二)根據(jù)業(yè)務(wù)需求抽象出的業(yè)務(wù)單據(jù),建立數(shù)據(jù)模型,描述業(yè)務(wù)單據(jù)的構(gòu)成(一般的一張業(yè)務(wù)單據(jù)是由一張主表和多張從表構(gòu)成)。具體的 選擇一個(gè)業(yè)務(wù)單據(jù)主表對(duì)應(yīng)的數(shù)據(jù)對(duì)象作為數(shù)據(jù)模型的主對(duì)象。
若該業(yè)務(wù)單據(jù)有從表,則在數(shù)據(jù)模型的主對(duì)象下選擇各子表對(duì)應(yīng)的數(shù)據(jù)對(duì)象作為數(shù)據(jù)模型的子對(duì)象。并指定子對(duì)象和主對(duì)象的關(guān)聯(lián)(從表中的主表標(biāo)識(shí)字段和主表標(biāo)識(shí)的關(guān)聯(lián))。
分別指定主對(duì)象和子對(duì)象的主鍵字段、編碼字段,若有數(shù)據(jù)分級(jí)信息,則需啟用分級(jí)選項(xiàng),指定相應(yīng)的分級(jí)信息。
分別指定主對(duì)象和子對(duì)象字段的相關(guān)屬性■字段基本屬性,如字段名、字段標(biāo)簽、字段描述、字段類型等。
若字段是外鍵,則指定字段的類型為“關(guān)聯(lián)”,并指定其關(guān)聯(lián)的“數(shù)據(jù)模型”,定義關(guān)
■聯(lián)的相關(guān)信息。
■可為字段指定取值域枚舉。
■為字段指定其用途(卡片、列表、打印等)。
此外,可為主、子對(duì)象指定各種約束(數(shù)據(jù)刪除外鍵檢查、唯一性檢查等)。
4.2運(yùn)行時(shí)如附圖2所示,運(yùn)行時(shí)由“數(shù)據(jù)訪問引擎”接收外部的增、刪、改、查請(qǐng)求,完成相應(yīng)的XML數(shù)據(jù)和關(guān)系數(shù)據(jù)的映射和轉(zhuǎn)換。對(duì)“數(shù)據(jù)訪問引擎”請(qǐng)求可分為兩類,一類是數(shù)據(jù)獲取,即從關(guān)系數(shù)據(jù)庫(kù)獲取關(guān)系數(shù)據(jù),并將結(jié)果轉(zhuǎn)換為XML數(shù)據(jù);另一類數(shù)據(jù)輸入,即輸入XML數(shù)據(jù),將其轉(zhuǎn)換為關(guān)系數(shù)據(jù),將輸入同步(插入、更新)到數(shù)據(jù)庫(kù)。
(一)數(shù)據(jù)獲取,根據(jù)輸入的“數(shù)據(jù)模型”標(biāo)識(shí),查詢的條件,由“數(shù)據(jù)訪問引擎”根據(jù)相應(yīng)“數(shù)據(jù)模型”、“數(shù)據(jù)對(duì)象”的描述,動(dòng)態(tài)形成查詢關(guān)系數(shù)據(jù)庫(kù)的SQL,獲取數(shù)據(jù)結(jié)果集,然后根據(jù)相應(yīng)的“數(shù)據(jù)模型”結(jié)構(gòu),構(gòu)造為XML數(shù)據(jù)并返回。
(二)數(shù)據(jù)輸入,根據(jù)輸入的“數(shù)據(jù)模型”標(biāo)識(shí)和XML,由“數(shù)據(jù)訪問引擎”動(dòng)態(tài)構(gòu)造為關(guān)系數(shù)據(jù)結(jié)果集,并根據(jù)相應(yīng)“數(shù)據(jù)模型”、“數(shù)據(jù)對(duì)象”的描述,動(dòng)態(tài)形成關(guān)系數(shù)據(jù)庫(kù)的插入、更新、刪除SQL,執(zhí)行SQL,完成請(qǐng)求。在執(zhí)行多條影響數(shù)據(jù)庫(kù)狀態(tài)的SQL時(shí),“數(shù)據(jù)訪問引擎”會(huì)自動(dòng)啟動(dòng)數(shù)據(jù)庫(kù)事務(wù)。
這樣,通過運(yùn)行時(shí)的建模和運(yùn)行時(shí)的解析執(zhí)行,完成了XML數(shù)據(jù)和關(guān)系數(shù)據(jù)庫(kù)數(shù)據(jù)之間的映射和轉(zhuǎn)換。
5、實(shí)施例本發(fā)明已經(jīng)成功運(yùn)用于浪潮GSP應(yīng)用開發(fā)平臺(tái),其架構(gòu)如附圖3所示。系統(tǒng)設(shè)計(jì)人員通過圖形化的數(shù)據(jù)對(duì)象、數(shù)據(jù)模型設(shè)計(jì)器描述業(yè)務(wù)數(shù)據(jù)的模型,并將“數(shù)據(jù)模型”應(yīng)用到平臺(tái)需要做關(guān)系數(shù)據(jù)庫(kù)持久化的各個(gè)模塊。這些模塊使用的是XML數(shù)據(jù),通過對(duì)數(shù)據(jù)訪問引擎的調(diào)用,完成XML數(shù)據(jù)對(duì)關(guān)系數(shù)據(jù)庫(kù)的存取操作。
XML格式數(shù)據(jù)和關(guān)系數(shù)據(jù)之間的映射和轉(zhuǎn)換技術(shù),有效的封裝了對(duì)關(guān)系數(shù)據(jù)庫(kù)的存取訪問,屏蔽了底層數(shù)據(jù)庫(kù)由于數(shù)據(jù)庫(kù)的種類、版本等差異造成的開發(fā)復(fù)雜度,提供了一種標(biāo)準(zhǔn)的XML數(shù)據(jù)訪問和傳輸格式,使得開發(fā)者不用編寫任何代碼即可實(shí)現(xiàn)持久化層存取訪問的功能,從而非常有效的降低了軟件系統(tǒng)持久化層的開發(fā)難度、開發(fā)風(fēng)險(xiǎn)。此外,這種方法使得業(yè)務(wù)數(shù)據(jù)的結(jié)構(gòu)調(diào)整變得簡(jiǎn)單,當(dāng)數(shù)據(jù)庫(kù)結(jié)構(gòu)和業(yè)務(wù)單據(jù)結(jié)構(gòu)發(fā)生調(diào)整時(shí),通過圖形化的數(shù)據(jù)對(duì)象、數(shù)據(jù)模型設(shè)計(jì)器進(jìn)行調(diào)整,不需要進(jìn)行編譯和物理發(fā)布,即可完成調(diào)整工作。有效的降低了軟件系統(tǒng)實(shí)施和維護(hù)過程中的成本和風(fēng)險(xiǎn)以及軟件廠商的開發(fā)、實(shí)施成本。使軟件系統(tǒng)能夠快速適應(yīng)用戶的個(gè)性化需求,滿足用戶不斷發(fā)展和完善信息系統(tǒng)的長(zhǎng)期目標(biāo)。
權(quán)利要求
1.數(shù)據(jù)訪問層Xml格式數(shù)據(jù)與關(guān)系數(shù)據(jù)間的映射轉(zhuǎn)換方法,其特征在于分設(shè)計(jì)時(shí)和運(yùn)行時(shí)兩個(gè)階段,其中在設(shè)計(jì)時(shí)階段,針對(duì)關(guān)系數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)以及對(duì)象與關(guān)系數(shù)據(jù)的映射和轉(zhuǎn)換進(jìn)行建模,描述為數(shù)據(jù)對(duì)象和數(shù)據(jù)模型兩種元數(shù)據(jù);其中數(shù)據(jù)對(duì)象是關(guān)系數(shù)據(jù)進(jìn)行建模,將數(shù)據(jù)庫(kù)中的表和視圖的數(shù)據(jù)結(jié)構(gòu)抽象出來(lái),描述其名稱、字段屬性,其中表或視圖,描述其顯示名稱、編碼、表或視圖名或數(shù)據(jù)庫(kù)標(biāo)識(shí)、作者、版本、創(chuàng)建日期;其中字段屬性中,主要信息有字段顯示名稱,字段名、數(shù)據(jù)庫(kù)標(biāo)識(shí)、字段類型、字段長(zhǎng)度、是否必填、是否為關(guān)鍵字;在字段屬性中的字段類型,考慮需兼容多種類型的數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)類型進(jìn)行了抽象,定義了一套中立的數(shù)據(jù)類型和具體的某種數(shù)據(jù)庫(kù)的數(shù)據(jù)類型之間建立映射關(guān)系,從而屏蔽數(shù)據(jù)庫(kù)差異;數(shù)據(jù)模型是業(yè)務(wù)實(shí)體是業(yè)務(wù)系統(tǒng)中數(shù)據(jù)的有機(jī)構(gòu)成形式,一般由多張數(shù)據(jù)表構(gòu)成,多張表之間構(gòu)成主從關(guān)系和關(guān)聯(lián)關(guān)系,數(shù)據(jù)模型便是用于描述業(yè)務(wù)實(shí)體的數(shù)據(jù)構(gòu)成關(guān)系,在數(shù)據(jù)對(duì)象的基礎(chǔ)上,對(duì)業(yè)務(wù)實(shí)體以及業(yè)務(wù)實(shí)體的關(guān)系進(jìn)行建模,描述業(yè)務(wù)實(shí)體的的數(shù)據(jù)結(jié)構(gòu),業(yè)務(wù)實(shí)體的業(yè)務(wù)數(shù)據(jù)信息,業(yè)務(wù)實(shí)體之間的關(guān)系;其中1)數(shù)據(jù)模型的構(gòu)成結(jié)構(gòu)是一個(gè)主表,多個(gè)從表,構(gòu)成主從關(guān)系,從表下再掛接從表,構(gòu)成嵌套的主從關(guān)系,一個(gè)模型定義與其他模型的關(guān)聯(lián)關(guān)系;2)數(shù)據(jù)模型和數(shù)據(jù)對(duì)象的關(guān)系是數(shù)據(jù)模型中的表,引用自數(shù)據(jù)對(duì)象,數(shù)據(jù)模型中表的字段對(duì)應(yīng)數(shù)據(jù)對(duì)象中的字段,這種對(duì)應(yīng)關(guān)系可以是完全對(duì)應(yīng),也可以是部分對(duì)應(yīng),即數(shù)據(jù)模型的表選擇的對(duì)應(yīng)數(shù)據(jù)對(duì)象中的部分字段;對(duì)應(yīng)過來(lái)后,自動(dòng)根據(jù)數(shù)據(jù)對(duì)象的描述信息,形成數(shù)據(jù)模型的描述信息,數(shù)據(jù)模型的表的編碼、名稱直接取自數(shù)據(jù)對(duì)象的編碼和名稱;數(shù)據(jù)模型中表的字段描述信息,部分取自數(shù)據(jù)對(duì)象的字段描述的信息數(shù)據(jù)類型、是否必填、主鍵等,特別的,數(shù)據(jù)模型上定義的數(shù)據(jù)類型區(qū)別于數(shù)據(jù)對(duì)象上定義的數(shù)據(jù)類型,數(shù)據(jù)模型上定義的數(shù)據(jù)類型為面向開發(fā)編程語(yǔ)言的數(shù)據(jù)類型,而數(shù)據(jù)對(duì)象上的數(shù)據(jù)類型則是抽象自數(shù)據(jù)庫(kù)的數(shù)據(jù)類型;比如,數(shù)據(jù)對(duì)象定義的“VARCHAR(n)”這種數(shù)據(jù)類型,在數(shù)據(jù)模型中對(duì)應(yīng)“string”這種數(shù)據(jù)類型;3)數(shù)據(jù)模型的表屬性信息是編號(hào)、名稱、主鍵字段指定、主鍵生成規(guī)則、是否啟用編碼字段、編碼字段指定、編碼字段生成規(guī)則、數(shù)據(jù)分級(jí)定義、排序定義等4)數(shù)據(jù)模型的字段屬性信息是字段的顯示名稱、編號(hào)、標(biāo)簽或指代名、字段數(shù)據(jù)用途、字段類型、字段對(duì)象類型定義、是否用作列權(quán)限分配、數(shù)據(jù)權(quán)限定義、是否必須、是否在插入時(shí)使用、是否在更新時(shí)使用;部分字段屬性定義解釋如下其中字段數(shù)據(jù)用途為列表、卡片、打印、參照和查詢條件,是多選的;其中字段對(duì)象類型定義用于指定字段的關(guān)聯(lián)關(guān)系或者使用的枚舉值定義關(guān)聯(lián)關(guān)系定義用于定義數(shù)據(jù)模型之間的關(guān)聯(lián)關(guān)系,枚舉值定義用于簡(jiǎn)單的錄入幫助,比如“是”、“否”或者“男”、“女”等;其中列權(quán)限、數(shù)據(jù)權(quán)限定義用于和權(quán)限系統(tǒng)的關(guān)聯(lián)定義;5)數(shù)據(jù)模型的表的主從關(guān)系定義指定主表和從表之間的關(guān)聯(lián)關(guān)系,指定從表的一個(gè)或多個(gè)字段作為外鍵和主表的相應(yīng)的一個(gè)或多個(gè)字段關(guān)聯(lián);6)數(shù)據(jù)模型之間的關(guān)聯(lián)關(guān)系數(shù)據(jù)模型之間的關(guān)聯(lián)關(guān)系是由數(shù)據(jù)模型的一個(gè)字段關(guān)聯(lián)另一個(gè)數(shù)據(jù)模型中的一個(gè)字段而構(gòu)成的,在字段屬性中有一個(gè)字段對(duì)象類型定義,當(dāng)選擇為關(guān)聯(lián)關(guān)系時(shí),可以定義于另一個(gè)模型的關(guān)聯(lián),在關(guān)聯(lián)中指定關(guān)聯(lián)模型中與之關(guān)聯(lián)的字段,關(guān)聯(lián)的附加條件,并指定在模型中查詢關(guān)聯(lián)的相關(guān)關(guān)聯(lián)模型的字段,比如一個(gè)客戶數(shù)據(jù)模型,其中有一個(gè)地區(qū)字段,關(guān)聯(lián)地區(qū)數(shù)據(jù)模型,在關(guān)聯(lián)的時(shí)候指定關(guān)聯(lián)帶出地區(qū)數(shù)據(jù)模型的地區(qū)編碼、名稱的信息;設(shè)計(jì)時(shí)定義的數(shù)據(jù)對(duì)象和數(shù)據(jù)模型,用自定義的一套XML標(biāo)記來(lái)描述,其保存格式本身為XML文檔格式,作為元數(shù)據(jù)或描述數(shù)據(jù)的數(shù)據(jù)資源來(lái)管理;在運(yùn)行時(shí)階段,由數(shù)據(jù)訪問引擎,根據(jù)設(shè)計(jì)時(shí)定義的元數(shù)據(jù)信息,結(jié)合輸入的數(shù)據(jù)信息,動(dòng)態(tài)的構(gòu)造數(shù)據(jù)庫(kù)存取訪問的SQL語(yǔ)句,訪問數(shù)據(jù)庫(kù),自動(dòng)完成增刪改查的數(shù)據(jù)訪問層的功能,為了提高效率,對(duì)動(dòng)態(tài)構(gòu)造過程的結(jié)果進(jìn)行適量緩存;為兼容數(shù)據(jù)庫(kù)差異,在數(shù)據(jù)訪問引擎構(gòu)造SQL以及訪問數(shù)據(jù)庫(kù)時(shí),根據(jù)元數(shù)據(jù)的相關(guān)信息,根據(jù)當(dāng)前訪問的數(shù)據(jù)庫(kù)類型和版本,針對(duì)數(shù)據(jù)庫(kù)類型和版本之間方言的差異,使用策略模式,動(dòng)態(tài)的調(diào)整SQL語(yǔ)句以適應(yīng)不同的數(shù)據(jù)庫(kù)類型和版本;對(duì)于業(yè)務(wù)系統(tǒng)中編號(hào)生成規(guī)則,權(quán)限集成等提供擴(kuò)展接口定義,以使用不同的應(yīng)用場(chǎng)景;在開發(fā)和實(shí)施過程中,根據(jù)不同業(yè)務(wù)場(chǎng)景的需要,自定義實(shí)現(xiàn)擴(kuò)展接口并注冊(cè)到數(shù)據(jù)訪問引擎中,以實(shí)現(xiàn)擴(kuò)展的功能;默認(rèn)的數(shù)據(jù)訪問引擎中集成了常用的編號(hào)生成規(guī)則以及權(quán)限集成的實(shí)現(xiàn);針對(duì)對(duì)象類型定義和維護(hù)的繁瑣,數(shù)據(jù)訪問引擎的的數(shù)據(jù)交換標(biāo)準(zhǔn)為XML,在返回XML的同時(shí),提供返回XML的XML Schema的功能,數(shù)據(jù)訪問引擎提供默認(rèn)的Xml訪問對(duì)象,或利用其他的系統(tǒng)基礎(chǔ)類庫(kù)提供的XML訪問對(duì)象進(jìn)行訪問,并且為在異構(gòu)系統(tǒng)之間交互數(shù)據(jù)和數(shù)據(jù)標(biāo)準(zhǔn)提供很好的支持;從外部調(diào)用接口方面,定義了本地調(diào)用和We浪潮集團(tuán)山東通用軟件有限公司服務(wù)調(diào)用兩種客戶端,便于不同的應(yīng)用開發(fā)模式的調(diào)用,這樣就完成了在數(shù)據(jù)訪問層Xml格式數(shù)據(jù)和關(guān)系數(shù)據(jù)之間的映射和轉(zhuǎn)換XML-RelationData Mapping,簡(jiǎn)稱為XR-Mapping。
全文摘要
本發(fā)明提供一種數(shù)據(jù)訪問層Xml格式數(shù)據(jù)與關(guān)系數(shù)據(jù)間的映射轉(zhuǎn)換方法,該方法主要包括設(shè)計(jì)時(shí)和運(yùn)行時(shí)兩個(gè)階段,其中在設(shè)計(jì)時(shí)階段,針對(duì)關(guān)系數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)以及對(duì)象與關(guān)系數(shù)據(jù)的映射和轉(zhuǎn)換進(jìn)行建模,描述為數(shù)據(jù)對(duì)象和數(shù)據(jù)模型兩種元數(shù)據(jù),數(shù)據(jù)對(duì)象是關(guān)系數(shù)據(jù)進(jìn)行建模,將數(shù)據(jù)庫(kù)中的表和視圖的數(shù)據(jù)結(jié)構(gòu)抽象出來(lái),描述其名稱、字段屬性等。在運(yùn)行時(shí)階段,由數(shù)據(jù)訪問引擎,根據(jù)設(shè)計(jì)時(shí)定義的元數(shù)據(jù)信息,結(jié)合輸入的數(shù)據(jù)信息,動(dòng)態(tài)的構(gòu)造數(shù)據(jù)庫(kù)存取訪問的SQL語(yǔ)句,訪問數(shù)據(jù)庫(kù),自動(dòng)完成增刪改查的數(shù)據(jù)訪問層的功能,并對(duì)動(dòng)態(tài)構(gòu)造過程的結(jié)果進(jìn)行適量緩存。
文檔編號(hào)G06F17/30GK101067814SQ20071001572
公開日2007年11月7日 申請(qǐng)日期2007年5月10日 優(yōu)先權(quán)日2007年5月10日
發(fā)明者孫立新, 李海波, 胡士杰 申請(qǐng)人:浪潮集團(tuán)山東通用軟件有限公司