專利名稱:一種基于xsd結(jié)構(gòu)的通用數(shù)據(jù)交換方法
技術(shù)領(lǐng)域:
本發(fā)明涉及以一種數(shù)據(jù)交換方法,尤其涉及一種基于XSD規(guī)范的XML數(shù)據(jù)交換平臺(tái),以某個(gè)業(yè)務(wù)數(shù)據(jù)為單元,來滿足行業(yè)數(shù)據(jù)的交換以及集中需求。
背景技術(shù):
由于各行業(yè)內(nèi)使用的業(yè)務(wù)系統(tǒng)不統(tǒng)一,為數(shù)據(jù)的統(tǒng)一和交換造成了壁壘,而數(shù)據(jù)分析又需要將數(shù)據(jù)統(tǒng)一后加工處理,所以數(shù)據(jù)交換就孕育而生,現(xiàn)行通用的數(shù)據(jù)交換基本都基于XML結(jié)構(gòu)文檔。而XSD作為描述XML (Extensible Markup Language可擴(kuò)展標(biāo)記語言)結(jié)構(gòu)的描述文檔,作為交換的規(guī)范,實(shí)現(xiàn)各家軟件開發(fā)商的數(shù)據(jù)能夠滿足行業(yè)的規(guī)范??紤]到數(shù)據(jù)交換的多樣性以及變化性,本發(fā)明以分層模型方式處理XSD結(jié)構(gòu)文檔,以及擴(kuò)展?jié)M足交換的需求。
發(fā)明內(nèi)容
所要解決的技術(shù)問題針對(duì)以上問題本發(fā)明提供為了一種實(shí)用性和通用性強(qiáng)的基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法。技術(shù)方案為了解決以上問題本發(fā)明提供了一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,其特征在于包括以下步驟
第一步、XSD解析管理器預(yù)處理XSD“XML Schemas Definition,描述XML文檔結(jié)構(gòu)”文檔,解析并建立XSD模型庫;
第二步、實(shí)體管理器定義和管理實(shí)體“業(yè)務(wù)的結(jié)構(gòu)、關(guān)系”的數(shù)據(jù)庫模型,包括表、字段、主鍵、外鍵等信息,以及管理與XSD綁定映射,為數(shù)據(jù)交換提供依據(jù);
第三步、交換出庫器將存儲(chǔ)在數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù)生成滿足XSD文檔要求的XML文
檔;
第四步、交換入庫器將交換滿足XSD文檔要求的XML文檔數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。所述的第一步包括
①讀取一組具有業(yè)務(wù)關(guān)系”層次關(guān)系或者依賴關(guān)系”的XSD文檔到解析器的文件緩存區(qū)內(nèi);
②使用DOM“Document Object Model文檔對(duì)象模型”解析器將這組XSD文檔的層次和依賴關(guān)系解析存儲(chǔ)到數(shù)據(jù)庫;
③依次將所有的XSD文檔的結(jié)構(gòu)中的元素、屬性、子元素、子元素的數(shù)量、子元素的順序、元素是否為空、元素和屬性的數(shù)據(jù)類型、元素或者屬性的默認(rèn)和固定值定義解析存儲(chǔ)到數(shù)據(jù)庫;
④根據(jù)步驟②和③解析存儲(chǔ)的數(shù)據(jù)庫信息內(nèi)容,迭代計(jì)算將元素、子元素分解則最小數(shù)據(jù)類型“基本數(shù)據(jù)類型字節(jié)、數(shù)值、字符、字符串”;
⑤將前4步的所存儲(chǔ)在數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行必要的維護(hù)、建立XSD模型庫。所述的第二步包括①根據(jù)業(yè)務(wù)結(jié)構(gòu)信息在數(shù)據(jù)庫中建立實(shí)體模型信息,將業(yè)務(wù)結(jié)構(gòu)抽象實(shí)體模型管
理;
實(shí)體模型包括業(yè)務(wù)元素層次關(guān)系“主從關(guān)系”、依賴關(guān)系“外鍵關(guān)系”、以及主鍵、字段信
息;
②對(duì)解析XSD文檔模型中的元素和實(shí)體模型的元素進(jìn)行映射管理;映射后業(yè)務(wù)數(shù)據(jù)庫和XSD數(shù)據(jù)交換文檔之間就建立關(guān)系,在數(shù)據(jù)交換中就可自動(dòng)的找到相應(yīng)的內(nèi)容并且自動(dòng)的輸入輸出。所述第三步包括
①按照實(shí)體模型中對(duì)應(yīng)的業(yè)務(wù)的主鍵信息以及主從關(guān)系,確定交換的業(yè)務(wù)數(shù)據(jù)范圍, 然后從數(shù)據(jù)庫中將主業(yè)務(wù)“基本信息,從該信息可以獲取所有子信息”信息讀取到交換器緩沖區(qū)內(nèi);
②根據(jù)實(shí)體模型生成對(duì)應(yīng)的數(shù)據(jù)檢索腳本;
③找到與實(shí)體模型對(duì)應(yīng)的XSD模型,將映射關(guān)系讀取后記載到緩存表內(nèi);
④逐行遍歷緩存區(qū)內(nèi)的業(yè)務(wù)信息記錄,然后根據(jù)②生成的檢索腳本將數(shù)據(jù)檢索出來后存儲(chǔ)到高速緩存中,按照步驟③的映射關(guān)系遍歷XSD文檔模型,將高速緩存中存儲(chǔ)的數(shù)據(jù)合并輸出到XML文檔;
⑤校驗(yàn)輸出XML文檔是否滿足XSD格式要求,如滿足則輸出文檔,否則刪除該文檔。所述第四步包括
①根據(jù)交換的需求,找到實(shí)體模型中對(duì)應(yīng)的業(yè)務(wù)模型“具體的實(shí)體定義”;
②根據(jù)實(shí)體模型與XSD模型的關(guān)系,找出對(duì)應(yīng)的XSD文檔“需要按步驟I預(yù)處理解析的XSD文檔”,進(jìn)行數(shù)據(jù)規(guī)則、內(nèi)容的完整性校驗(yàn);如果校驗(yàn)成功則執(zhí)行步驟③,否則結(jié)束任務(wù);
③根據(jù)實(shí)體模型和XSD模型的映射關(guān)系“步驟2中定義的映射關(guān)系”,生成數(shù)據(jù)庫的執(zhí)行腳本;生成腳本按照實(shí)體模型庫中數(shù)據(jù)庫表字段的粘合度“按同表的數(shù)據(jù)字段合并為一條腳本的方式,減少腳本的執(zhí)行數(shù)量”優(yōu)化生成;
④建立數(shù)據(jù)交換入庫線程池以及N,N>I個(gè)交換前置庫“工作線程數(shù)量等于前置庫的數(shù)量”;線程調(diào)度輪序算法”依次為線程分配一個(gè)文檔處理任務(wù),循環(huán)多次直到任務(wù)分配結(jié)束”自動(dòng)分配任務(wù)給工作線程;線程根據(jù)XSD模型中的定義信息,通過DOM解析器遍歷XML文檔的元素和屬性,將獲取的數(shù)據(jù)“鍵值”存儲(chǔ)到高速緩存中,然后按照③生成的數(shù)據(jù)庫腳本合并產(chǎn)生最終可執(zhí)行的腳本,提交給前置數(shù)據(jù)庫進(jìn)行執(zhí)行;
⑤等所有的線程任務(wù)完成后,使用數(shù)據(jù)庫管道技術(shù)“關(guān)系數(shù)據(jù)庫自帶的數(shù)據(jù)傳輸技術(shù)”,將N前置庫的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫,然后清除前置庫的臨時(shí)數(shù)據(jù),完成一次數(shù)據(jù)交換。有益效果本發(fā)明的實(shí)用性和通用性強(qiáng)。
圖I為XSD解析器示意 圖2為業(yè)務(wù)庫結(jié)構(gòu)意 圖3為XSD與實(shí)體映射生成腳本示意圖;圖4為交換出庫器意 圖5為交換入庫器意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述。一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,包括以下步驟
第一步、XSD解析管理器如圖I所不,預(yù)處理XSD (XML Schemas Definition,描述XML 文檔結(jié)構(gòu))文檔,解析并建立XSD模型庫。①讀取一組具有業(yè)務(wù)關(guān)系(層次關(guān)系或者依賴關(guān)系)的XSD文檔(例如文檔I描述了某業(yè)務(wù)的概括性的信息,其中某個(gè)集合或者元素的詳細(xì)結(jié)構(gòu)內(nèi)容在文檔2中做出詳細(xì)解釋)到解析器的文件緩存區(qū)內(nèi)。②使用DOM(Document Object Model文檔對(duì)象模型)解析器將這組XSD文檔的層次和依賴關(guān)系解析存儲(chǔ)到數(shù)據(jù)庫。③依次將所有的XSD文檔的結(jié)構(gòu)中的元素、屬性、子元素、子元素的數(shù)量、子元素的順序、元素是否為空、元素和屬性的數(shù)據(jù)類型、元素或者屬性的默認(rèn)和固定值等定義解析存儲(chǔ)到數(shù)據(jù)庫。④根據(jù)步驟②和③解析存儲(chǔ)的數(shù)據(jù)庫信息內(nèi)容,迭代計(jì)算將元素、子元素分解則最小數(shù)據(jù)類型(基本數(shù)據(jù)類型字節(jié)、數(shù)值、字符、字符串等)。⑤將前4步的所存儲(chǔ)在數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行必要的維護(hù)、建立XSD模型庫??紤]到前4步有計(jì)算機(jī)自動(dòng)完成,可能存在一些誤差,XSD模型庫通過XDS管理程序可以修正、變更。第二步、實(shí)體管理器定義和管理實(shí)體(業(yè)務(wù)的結(jié)構(gòu)、關(guān)系)的數(shù)據(jù)庫模型,包括表、字段、主鍵、外鍵等信息,以及管理與XSD綁定映射,為數(shù)據(jù)交換提供依據(jù)。①根據(jù)業(yè)務(wù)結(jié)構(gòu)信息(例如圖2,數(shù)據(jù)庫結(jié)構(gòu))在數(shù)據(jù)庫中建立實(shí)體模型信息,將業(yè)務(wù)結(jié)構(gòu)抽象實(shí)體模型管理。實(shí)體模型包括業(yè)務(wù)元素層次關(guān)系(主從關(guān)系)、依賴關(guān)系(外鍵關(guān)系)、以及主鍵、字段等信息。②對(duì)解析XSD文檔模型中的元素和實(shí)體模型的元素進(jìn)行映射管理。映射后業(yè)務(wù)數(shù)據(jù)庫和XSD數(shù)據(jù)交換文檔之間就建立關(guān)系,在數(shù)據(jù)交換中就可以自動(dòng)的找到相應(yīng)的內(nèi)容并且自動(dòng)的輸入輸出。第三步、交換出庫器如圖4所示,將存儲(chǔ)在數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù)生成滿足XSD文檔要求的XML文檔。①按照實(shí)體模型中對(duì)應(yīng)的業(yè)務(wù)的主鍵信息以及主從關(guān)系,確定交換的業(yè)務(wù)數(shù)據(jù)范圍,然后從數(shù)據(jù)庫中將主業(yè)務(wù)(基本信息,從該信息可以獲取所有子信息如圖2中的[主表])信息讀取到交換器緩沖區(qū)內(nèi)。②根據(jù)實(shí)體模型生成對(duì)應(yīng)的數(shù)據(jù)檢索腳本(如圖3)。③找到與實(shí)體模型對(duì)應(yīng)的XSD模型,將映射關(guān)系讀取后記載到緩存表內(nèi)。④逐行遍歷緩存區(qū)內(nèi)的業(yè)務(wù)信息記錄,然后根據(jù)②生成的檢索腳本將數(shù)據(jù)檢索出來后存儲(chǔ)到高速緩存中,按照步驟③的映射關(guān)系遍歷XSD文檔模型,將高速緩存中內(nèi)存儲(chǔ)的數(shù)據(jù)合并輸出到XML文檔。
⑤校驗(yàn)輸出XML文檔是否滿足XSD格式要求,如滿足則輸出文檔,否則刪除該文檔。
第四步、交換入庫器如圖5所示,將交換滿足XSD文檔要求的XML文檔數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。①根據(jù)交換的需求,找到實(shí)體模型中對(duì)應(yīng)的業(yè)務(wù)模型(具體的實(shí)體定義)。②根據(jù)實(shí)體模型與XSD模型的關(guān)系,找出對(duì)應(yīng)的XSD文檔(需要按步驟I預(yù)處理解析的XSD文檔),進(jìn)行數(shù)據(jù)規(guī)則、內(nèi)容的完整性校驗(yàn)。如果校驗(yàn)成功則執(zhí)行步驟③,否則結(jié)束任務(wù)。③根據(jù)實(shí)體模型和XSD模型的映射關(guān)系(步驟2中定義的映射關(guān)系),生成數(shù)據(jù)庫 的執(zhí)行腳本。生成腳本按照實(shí)體模型庫中數(shù)據(jù)庫表字段的粘合度(按同表的數(shù)據(jù)字段合并為一條腳本的方式,減少腳本的執(zhí)行數(shù)量)優(yōu)化生成(如圖3)。④建立數(shù)據(jù)交換入庫線程池以及N (N ^ I)個(gè)交換前置庫(工作線程數(shù)量同N前置庫的數(shù)量)。線程調(diào)度輪序算法(依次為線程分配一個(gè)文檔處理任務(wù),循環(huán)多次直到任務(wù)分配結(jié)束)自動(dòng)分配任務(wù)給工作線程。線程根據(jù)XSD模型中的定義信息,通過DOM解析器遍歷XML文檔的元素和屬性,將獲取的數(shù)據(jù)(鍵值)存儲(chǔ)到高速緩存中,然后按照③生成的數(shù)據(jù)庫腳本合并產(chǎn)生最終可執(zhí)行的腳本,提交給前置數(shù)據(jù)庫進(jìn)行執(zhí)行。使用前置庫主要是解決數(shù)據(jù)庫層面的鎖和并發(fā)的問題,考慮到業(yè)務(wù)結(jié)構(gòu)以及數(shù)據(jù)量較大時(shí)事務(wù)執(zhí)行時(shí)間較長,將嚴(yán)重影響解析入庫速度,通過前置數(shù)據(jù)庫以及線程池可能大大提高解析入庫效率。⑤等所有的線程任務(wù)完成后,使用數(shù)據(jù)庫管道技術(shù)(關(guān)系數(shù)據(jù)庫自帶的數(shù)據(jù)傳輸技術(shù)),將N前置庫的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫,然后清除前置庫的臨時(shí)數(shù)據(jù),完成一次數(shù)據(jù)交換。此數(shù)據(jù)一般并非簡單的將表數(shù)據(jù)的拷貝或者分發(fā),本發(fā)明是基于具體業(yè)務(wù)結(jié)構(gòu),滿足交換的通用的性、靈活性的前提下,保證了業(yè)務(wù)數(shù)據(jù)的完整性。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不限制于本發(fā)明,對(duì)于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,其特征在于包括以下步驟第一步、XSD解析管理器預(yù)處理XSD“XML Schemas Definition,描述XML文檔結(jié)構(gòu)” 文檔,解析并建立XSD模型庫;第二步、實(shí)體管理器定義和管理實(shí)體“業(yè)務(wù)的結(jié)構(gòu)、關(guān)系”的數(shù)據(jù)庫模型,包括表、字段、主鍵、外鍵等信息,以及管理與XSD綁定映射,為數(shù)據(jù)交換提供依據(jù);第三步、交換出庫器將存儲(chǔ)在數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù)生成滿足XSD文檔要求的XML文檔;第四步、交換入庫器將交換滿足XSD文檔要求的XML文檔數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。
2.根據(jù)權(quán)利要求I所述的一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,其特征在于所述的第一步包括①讀取一組具有業(yè)務(wù)關(guān)系”層次關(guān)系或者依賴關(guān)系”的XSD文檔到解析器的文件緩存區(qū)內(nèi);②使用DOM“Document Object Model文檔對(duì)象模型”解析器將這組XSD文檔的層次和依賴關(guān)系解析存儲(chǔ)到數(shù)據(jù)庫;③依次將所有的XSD文檔的結(jié)構(gòu)中的元素、屬性、子元素、子元素的數(shù)量、子元素的順序、元素是否為空、元素和屬性的數(shù)據(jù)類型、元素或者屬性的默認(rèn)和固定值定義解析存儲(chǔ)到數(shù)據(jù)庫;④根據(jù)步驟②和③解析存儲(chǔ)的數(shù)據(jù)庫信息內(nèi)容,迭代計(jì)算將元素、子元素分解則最小數(shù)據(jù)類型“基本數(shù)據(jù)類型字節(jié)、數(shù)值、字符、字符串”;⑤將前4步的所存儲(chǔ)在數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行必要的維護(hù)、建立XSD模型庫。
3.根據(jù)權(quán)利要求I所述的一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,其特征在于所述的第二步包括①根據(jù)業(yè)務(wù)結(jié)構(gòu)信息在數(shù)據(jù)庫中建立實(shí)體模型信息,將業(yè)務(wù)結(jié)構(gòu)抽象實(shí)體模型管理;實(shí)體模型包括業(yè)務(wù)元素層次關(guān)系“主從關(guān)系”、依賴關(guān)系“外鍵關(guān)系”、以及主鍵、字段信②對(duì)解析XSD文檔模型中的元素和實(shí)體模型的元素進(jìn)行映射管理;映射后業(yè)務(wù)數(shù)據(jù)庫和XSD數(shù)據(jù)交換文檔之間就建立關(guān)系,在數(shù)據(jù)交換中就可自動(dòng)的找到相應(yīng)的內(nèi)容并且自動(dòng)的輸入輸出。
4.根據(jù)權(quán)利要求I所述的一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,其特征在于所述第三步包括①按照實(shí)體模型中對(duì)應(yīng)的業(yè)務(wù)的主鍵信息以及主從關(guān)系,確定交換的業(yè)務(wù)數(shù)據(jù)范圍, 然后從數(shù)據(jù)庫中將主業(yè)務(wù)“基本信息,從該信息可以獲取所有子信息”信息讀取到交換器緩沖區(qū)內(nèi);②根據(jù)實(shí)體模型生成對(duì)應(yīng)的數(shù)據(jù)檢索腳本;③找到與實(shí)體模型對(duì)應(yīng)的XSD模型,將映射關(guān)系讀取后記載到緩存表內(nèi);④逐行遍歷緩存區(qū)內(nèi)的業(yè)務(wù)信息記錄,然后根據(jù)②生成的檢索腳本將數(shù)據(jù)檢索出來后存儲(chǔ)到高速緩存中,按照步驟③的映射關(guān)系遍歷XSD文檔模型,將高速緩存中存儲(chǔ)的數(shù)據(jù)合并輸出到XML文檔;⑤校驗(yàn)輸出XML文檔是否滿足XSD格式要求,如滿足則輸出文檔,否則刪除該文檔。
5.根據(jù)權(quán)利要求I所述的一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,其特征在于所述第四步包括①根據(jù)交換的需求,找到實(shí)體模型中對(duì)應(yīng)的業(yè)務(wù)模型“具體的實(shí)體定義”;②根據(jù)實(shí)體模型與XSD模型的關(guān)系,找出對(duì)應(yīng)的XSD文檔“需要按步驟I預(yù)處理解析的XSD文檔”,進(jìn)行數(shù)據(jù)規(guī)則、內(nèi)容的完整性校驗(yàn);如果校驗(yàn)成功則執(zhí)行步驟③,否則結(jié)束任務(wù);③根據(jù)實(shí)體模型和XSD模型的映射關(guān)系“步驟2中定義的映射關(guān)系”,生成數(shù)據(jù)庫的執(zhí)行腳本;生成腳本按照實(shí)體模型庫中數(shù)據(jù)庫表字段的粘合度“按同表的數(shù)據(jù)字段合并為一條腳本的方式,減少腳本的執(zhí)行數(shù)量”優(yōu)化生成;④建立數(shù)據(jù)交換入庫線程池以及N,N>I個(gè)交換前置庫“工作線程數(shù)量等于前置庫的數(shù)量”;線程調(diào)度輪序算法”依次為線程分配一個(gè)文檔處理任務(wù),循環(huán)多次直到任務(wù)分配結(jié)束”自動(dòng)分配任務(wù)給工作線程;線程根據(jù)XSD模型中的定義信息,通過DOM解析器遍歷XML 文檔的元素和屬性,將獲取的數(shù)據(jù)“鍵值”存儲(chǔ)到高速緩存中,然后按照③生成的數(shù)據(jù)庫腳本合并產(chǎn)生最終可執(zhí)行的腳本,提交給前置數(shù)據(jù)庫進(jìn)行執(zhí)行;⑤等所有的線程任務(wù)完成后,使用數(shù)據(jù)庫管道技術(shù)“關(guān)系數(shù)據(jù)庫自帶的數(shù)據(jù)傳輸技術(shù)”,將N前置庫的數(shù)據(jù)同步到目標(biāo)數(shù)據(jù)庫,然后清除前置庫的臨時(shí)數(shù)據(jù),完成一次數(shù)據(jù)交換。
全文摘要
本發(fā)明涉及一種基于XSD結(jié)構(gòu)的通用數(shù)據(jù)交換方法,包括第一步、XSD解析管理器預(yù)處理XSD“XMLSchemasDefinition,描述XML文檔結(jié)構(gòu)”文檔,解析并建立XSD模型庫;第二步、實(shí)體管理器定義和管理實(shí)體“業(yè)務(wù)的結(jié)構(gòu)、關(guān)系”的數(shù)據(jù)庫模型,包括表、字段、主鍵、外鍵等信息,以及管理與XSD綁定映射,為數(shù)據(jù)交換提供依據(jù);第三步、交換出庫器將存儲(chǔ)在數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù)生成滿足XSD文檔要求的XML文檔;第四步、交換入庫器將交換滿足XSD文檔要求的XML文檔數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。本發(fā)明的實(shí)用性和通用性強(qiáng)。
文檔編號(hào)G06F17/30GK102929664SQ201210391159
公開日2013年2月13日 申請日期2012年10月16日 優(yōu)先權(quán)日2012年10月16日
發(fā)明者施健偉 申請人:南京通達(dá)海信息技術(shù)有限公司