數(shù)據(jù)庫表和xml報文的映射處理方法及其系統(tǒng)的制作方法【專利摘要】本發(fā)明公開了一種數(shù)據(jù)庫表和XML報文的映射處理方法及其系統(tǒng),方法包括:預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;獲取目標(biāo)數(shù)據(jù)庫;在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;判斷目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系;若是,則確定至少一組的主子表關(guān)系;根據(jù)字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,XML報文模板包含主子表之間的層級嵌套關(guān)系;根據(jù)XML報文模板以及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。本發(fā)明可實(shí)現(xiàn)數(shù)據(jù)表與XML報文之間的相互轉(zhuǎn)換,減少項(xiàng)目開發(fā)、測試、管理的投入成本,提高報文解析效率,且便于管理和維護(hù)?!緦@f明】數(shù)據(jù)庫表和XML報文的映射處理方法及其系統(tǒng)
技術(shù)領(lǐng)域:
[0001]本發(fā)明設(shè)及數(shù)據(jù)處理領(lǐng)域,尤其設(shè)及一種數(shù)據(jù)庫表和XML報文的映射處理方法及其系統(tǒng)?!?br>背景技術(shù):
】[0002]在傳統(tǒng)的數(shù)據(jù)交換、消息處理過程中有關(guān)結(jié)構(gòu)化XML文件的消息處理,對于不同類型格式的報文結(jié)構(gòu)基本上都是采用對XML節(jié)點(diǎn)或path結(jié)構(gòu)硬代碼寫死的方式進(jìn)行處理,但存在下述缺點(diǎn):[0003]1、缺乏標(biāo)準(zhǔn)規(guī)范。XML結(jié)構(gòu)的消息報文較多的應(yīng)用場景在于數(shù)據(jù)交換及服務(wù)集成方面。報文在各個系統(tǒng)之間的數(shù)據(jù)交換及服務(wù)集成容易造成消息報文的格式及標(biāo)準(zhǔn)缺乏統(tǒng)一。主要體現(xiàn)在如下幾個層面:報文格式、字符集編碼、特殊字符、報文節(jié)點(diǎn)命名格式、報文屬性、報文版本、不同類型的數(shù)據(jù)庫、數(shù)據(jù)源的支持等。上述缺點(diǎn)容易造成消息報文在各系統(tǒng)之間交互產(chǎn)生格式問題、當(dāng)出現(xiàn)問題時技術(shù)銜接的兩方需要不斷的溝通和排查從而增加問題排查的復(fù)雜度。[0004]2、報文解析低效。在XML結(jié)構(gòu)化報文解析處理方面,傳統(tǒng)的報文處理方式主要是基于開源的dom4j或jdom等方式進(jìn)行解析,在報文解析方面大部分時間消耗在報文模板、path的解析、缺乏相應(yīng)的緩存加載策略,未充分利用緩存技術(shù)實(shí)現(xiàn)"一次加載、處處使用"的技術(shù)優(yōu)勢特點(diǎn)。報文在高并發(fā)、大數(shù)據(jù)量的處理過程中極易造成解析效率低、解析處理時間加長。[0005]3、代碼復(fù)用率低。常規(guī)的XML報文解析處理主要采用硬編碼方式,隨著業(yè)務(wù)的發(fā)展要求需要對XML的報文結(jié)構(gòu)做增加或刪除節(jié)點(diǎn)處理、增加新的報文內(nèi)容時都需要進(jìn)行代碼方面的調(diào)整從而加大項(xiàng)目的開發(fā)、測試、管理等投入成本。另外一點(diǎn)當(dāng)項(xiàng)目上線后并且已穩(wěn)定的在實(shí)際生產(chǎn)環(huán)境中運(yùn)行,此種調(diào)整都是存在一定的風(fēng)險和代價的,容易造成由于編碼設(shè)計的調(diào)整造成系統(tǒng)的不穩(wěn)定性從而帶來相應(yīng)的風(fēng)險。[0006]4、管理維護(hù)困難。在復(fù)雜的數(shù)據(jù)交換或服務(wù)集成方面,特別是部委級與省局、地市級的數(shù)據(jù)交換場景中,比如當(dāng)核屯、系統(tǒng)的業(yè)務(wù)需求、庫表字段發(fā)生變化時。與之相關(guān)的外圍系統(tǒng)設(shè)及到運(yùn)些業(yè)務(wù)需求變化或數(shù)據(jù)字段添加時都面臨著調(diào)整。如何在第一時間響應(yīng)業(yè)務(wù)發(fā)展的需求要求、如何在各個系統(tǒng)之間控制報文模板結(jié)構(gòu)和版本的兼容性是非常關(guān)鍵和迫切的,也是本引擎需重點(diǎn)解決的問題。[0007]5、缺乏有效監(jiān)控。常規(guī)的報文處理和解析基本上都與業(yè)務(wù)代碼緊禪合設(shè)計處理,在典型的數(shù)據(jù)交換和服務(wù)集成的應(yīng)用場景中監(jiān)控起來困難,無法對報文解析處理的時間、異常處理情況、報文模板自動更新、版本進(jìn)行統(tǒng)一的監(jiān)控和跟蹤。[000引在公開號為CN105138613A的中國專利公開文件中,提出了一種業(yè)務(wù)對象和xml報文相互轉(zhuǎn)換的方法及系統(tǒng),其中方法具體包括W下步驟:步驟1:創(chuàng)建報文節(jié)點(diǎn)映射表,并將報文節(jié)點(diǎn)和業(yè)務(wù)對象映射信息導(dǎo)入映射表;步驟2:接收讀取請求,讀取報文節(jié)點(diǎn)和業(yè)務(wù)對象映射信息到緩存中;步驟3:對報文節(jié)點(diǎn)和業(yè)務(wù)對象進(jìn)行格式校驗(yàn);步驟4:系統(tǒng)根據(jù)映射關(guān)系將XML報文轉(zhuǎn)換為業(yè)務(wù)對象;或者系統(tǒng)根據(jù)映射關(guān)系將業(yè)務(wù)對象轉(zhuǎn)換為XML報文數(shù)據(jù)。但該方案是基于業(yè)務(wù)對象,與業(yè)務(wù)代碼之間高禪合,且是基于數(shù)據(jù)庫配置的方式,管理維護(hù)較為困難?!?br/>發(fā)明內(nèi)容】[0009]本發(fā)明所要解決的技術(shù)問題是:提供一種數(shù)據(jù)庫表和XML報文的映射處理方法及其系統(tǒng),提高報文解析效率,且便于管理和維護(hù)。[0010]為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:一種數(shù)據(jù)庫表和XML報文的映射處理方法,包括:[0011]預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;[0012]獲取目標(biāo)數(shù)據(jù)庫;[0013]在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;[0014]判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系;[0015]若是,則確定至少一組的主子表關(guān)系;[0016]根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;[0017]根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。[0018]本發(fā)明還設(shè)及一種數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng),包括:[0019]第一預(yù)設(shè)模塊,用于預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;[0020]第一獲取模塊,用于獲取目標(biāo)數(shù)據(jù)庫;[0021]提取模塊,用于在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;[0022]第一判斷模塊,用于判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系;[0023]第一確定模塊,用于若是,則確定至少一組的主子表關(guān)系;[0024]第一生成模塊,用于根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;[0025]第二生成模塊,用于根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。[0026]本發(fā)明的有益效果在于:通過XML報文模板實(shí)現(xiàn)數(shù)據(jù)表與XML報文之間的相互轉(zhuǎn)換,當(dāng)業(yè)務(wù)邏輯發(fā)生變化時,只要調(diào)整相應(yīng)的報文模板即可,可減少項(xiàng)目開發(fā)、測試、管理的投入成本,提高報文解析效率,且便于管理和維護(hù)。【附圖說明】[0027]圖1為本發(fā)明一種數(shù)據(jù)庫表和XML報文的映射處理方法的流程圖;[0028]圖2為本發(fā)明實(shí)施例一的方法流程圖;[0029]圖3為本發(fā)明實(shí)施例二的方法流程圖;[0030]圖4為本發(fā)明一種數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng)的結(jié)構(gòu)示意圖;[0031]圖5為本發(fā)明實(shí)施例S的結(jié)構(gòu)示意圖。[0032]標(biāo)號說明:[0033]1、第一預(yù)設(shè)模塊;2、第一獲取模塊;3、提取模塊;4、第一判斷模塊;5、第一確定模塊;6、第一生成模塊;7、第二生成模塊;8、發(fā)送模塊;9、解析模塊;10、發(fā)布模塊;11、推送模塊;12、第二獲取模塊;13、比對模塊;14、更新模塊;15、保存模塊;16、啟用模塊;17、第二判斷模塊;18、第=生成模塊;19、執(zhí)行模塊;20、第四生成模塊;21、第五生成模塊?!揪唧w實(shí)施方式】[0034]為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,W下結(jié)合實(shí)施方式并配合附圖詳予說明。[0035]本發(fā)明最關(guān)鍵的構(gòu)思在于:通過XML報文模板實(shí)現(xiàn)數(shù)據(jù)表與XML報文之間的相互轉(zhuǎn)換。[0036]請參閱圖1,一種數(shù)據(jù)庫表和XML報文的映射處理方法,包括:[0037]預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;[0038]獲取目標(biāo)數(shù)據(jù)庫;[0039]在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;[0040]判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系;[0041]若是,則確定至少一組的主子表關(guān)系;[0042]根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;[0043]根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。[0044]從上述描述可知,本發(fā)明的有益效果在于:可將一個或多個任意數(shù)據(jù)表轉(zhuǎn)換成XML報文,可減少項(xiàng)目開發(fā)、測試、管理的投入成本,提高報文解析效率,且便于管理和維護(hù)。[0045]進(jìn)一步地,所述"生成對應(yīng)的XML報文"之后,進(jìn)一步包括:[0046]發(fā)送所述XML報文至一通訊節(jié)點(diǎn);[0047]所述一通訊節(jié)點(diǎn)接收所述XML報文,并根據(jù)所述XML報文模板,解析得到對應(yīng)的所述目標(biāo)數(shù)據(jù)表。[0048]由上述描述可知,可將XML報文寫入到一個或多個表中,從而實(shí)現(xiàn)數(shù)據(jù)庫到XMUXML到數(shù)據(jù)庫雙向出庫、入庫的數(shù)據(jù)解析過程。[0049]進(jìn)一步地,所述"生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板"之后,進(jìn)一步包括:[0050]將所述XML報文模板的更新信息發(fā)布至服務(wù)總線;[0051]服務(wù)總線將所述更新信息推送至各通訊節(jié)點(diǎn);[0052]各通訊節(jié)點(diǎn)獲取所述更新信息;[0053]比對更新信息中的XML報文模板和正在使用的XML報文模板的唯一標(biāo)識符和版本號;[0054]若所述唯一標(biāo)識符一致但版本號不一致,將正在使用的XML報文模板更新為更新信息中的XML報文模板。[0055]進(jìn)一步地,所述"若所述唯一標(biāo)識符一致但版本號不一致,將正在使用的XML報文模板更新為更新信息中的XML報文模板"之后,進(jìn)一步包括:[0056]保存歷史XML報文模板;[0057]若更新后的XML報文模板出現(xiàn)錯誤,啟用歷史XML報文模板。[0058]由上述描述可知,通過更新XML報文模板,保證在數(shù)據(jù)處理過程中解析機(jī)制保持一致。[0059]進(jìn)一步地,所述"生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板"之前,進(jìn)一步包括:[0060]判斷是否存在對應(yīng)所述主子表關(guān)系的XML報文模板;[0061]若是,根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)所述目標(biāo)數(shù)據(jù)表的XML報文;[0062]若否,則執(zhí)行所述生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板的步驟。[0063]由上述描述可知,當(dāng)目標(biāo)數(shù)據(jù)庫中的目標(biāo)數(shù)據(jù)表均存在與之對應(yīng)的XML報文模板時,可直接將數(shù)據(jù)表轉(zhuǎn)換為XML報文,提高解析效率。[0064]進(jìn)一步地,所述"判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系"之后,進(jìn)一步包括:[0065]若否,分別根據(jù)各個目標(biāo)數(shù)據(jù)表W及字段映射表,生成對應(yīng)的XML報文模板;[0066]根據(jù)所述目標(biāo)數(shù)據(jù)表及其對應(yīng)的XML報文模板,生成對應(yīng)的XML報文。[0067]由上述描述可知,若目標(biāo)數(shù)據(jù)表之間不存在主子表關(guān)系,則表示所提取的目標(biāo)數(shù)據(jù)表均為主表,由于一個報文只包含一個主表,因此各個目標(biāo)數(shù)據(jù)表分別生成各自的XML報文。[0068]請參照圖4,本發(fā)明還提出一種數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng),包括:[0069]第一預(yù)設(shè)模塊,用于預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;[0070]第一獲取模塊,用于獲取目標(biāo)數(shù)據(jù)庫;[0071]提取模塊,用于在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;[0072]第一判斷模塊,用于判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系;[0073]第一確定模塊,用于若是,則確定至少一組的主子表關(guān)系;[0074]第一生成模塊,用于根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;[0075]第二生成模塊,用于根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。[0076]進(jìn)一步地,還包括;[0077]發(fā)送模塊,用于發(fā)送所述XML報文至一通訊節(jié)點(diǎn);[0078]解析模塊,用于所述一通訊節(jié)點(diǎn)接收所述XML報文,并根據(jù)所述XML報文模板,解析得到對應(yīng)的所述目標(biāo)數(shù)據(jù)表。[00巧]進(jìn)一步地,還包括:[0080]發(fā)布模塊,用于將所述XML報文模板的更新信息發(fā)布至服務(wù)總線;[0081]推送模塊,用于服務(wù)總線將所述更新信息推送至各通訊節(jié)點(diǎn);[0082]第二獲取模塊,用于各通訊節(jié)點(diǎn)獲取所述更新信息;[0083]比對模塊,用于比對更新信息中的XML報文模板和正在使用的XML報文模板的唯一標(biāo)識符和版本號;[0084]更新模塊,用于若所述唯一標(biāo)識符一致但版本號不一致,將正在使用的XML報文模板更新為更新信息中的XML報文模板。[0085]進(jìn)一步地,還包括:[0086]保存模塊,用于保存歷史XML報文模板;[0087]啟用模塊,用于若更新后的XML報文模板出現(xiàn)錯誤,啟用歷史XML報文模板。[0088]實(shí)施例一[0089]請參照圖1,本發(fā)明的實(shí)施例一為:一種數(shù)據(jù)庫表和XML報文的映射處理方法,包括如下步驟:[0090]SI:預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;例如,通過〈table〉節(jié)點(diǎn)中name="數(shù)據(jù)庫表名",column標(biāo)識為對應(yīng)的XML報文中對應(yīng)的節(jié)點(diǎn);字段映射屬性說明如表1所示;每個table包含一個或多個field,field有很多屬性需要設(shè)定,比如數(shù)據(jù)類型、顯示格式等,其中兩個比較重要的屬性為is_pk和is_biz地,用于表明該字段是否是主鍵或業(yè)務(wù)主鍵,業(yè)務(wù)主鍵的作用非常大,在更新的情況下,業(yè)務(wù)主鍵會用來定位記錄,由于主鍵可能是Sequence類型的,兩個數(shù)據(jù)庫沒辦法共用同一個Sequence,所W用主鍵定位記錄會出現(xiàn)問題,因此,要求每個表一定要配置業(yè)務(wù)主鍵,有時一個字段既可W作為主鍵也可W作為業(yè)務(wù)主鍵。[0091][0092][0093]表1[0094]S2:獲取目標(biāo)數(shù)據(jù)庫;通過用戶名、密碼、配置數(shù)據(jù)庫連接信息,選擇數(shù)據(jù)庫連接格式,進(jìn)入目標(biāo)數(shù)據(jù)庫;可支持基于標(biāo)準(zhǔn)S化類型的多種關(guān)系型數(shù)據(jù)庫,如oracle、sqlserver、mysql等業(yè)界流行關(guān)系型數(shù)據(jù)庫。[0095]S3:在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;根據(jù)業(yè)務(wù)需求確實(shí)所述預(yù)設(shè)個數(shù)。[0096]S4:判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系,若是,執(zhí)行步驟S5,若否,執(zhí)行步驟S9;可通過判斷目標(biāo)數(shù)據(jù)表之間的是否存在字段關(guān)聯(lián),從而判斷是否存在主子表關(guān)系。[0097]S5:確定至少一組的主子表關(guān)系;通過〈table〉節(jié)點(diǎn)屬性中的is_pk="true"定義主表的主鍵,is_bizpk="true"定義為主子表的外鍵關(guān)系。[0098]S6:判斷是否存在對應(yīng)所述主子表關(guān)系的XML報文模板,若是,執(zhí)行步驟S8,若否,執(zhí)行步驟S7。[0099]S7:根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;即XML報文模板中定義了主表、子表之間的層次關(guān)系,W此類推也可在子表中定義子子表的層關(guān)系;同時,一個XML報文模塊對應(yīng)一個主子表關(guān)系,即XML報文對應(yīng)數(shù)據(jù)庫中的一個主表及其若干個子表,允許子表級聯(lián)。[0100]S8:根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文;執(zhí)行步驟S11。[0101]S9:若不存在主子表關(guān)系,即所提取的預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表均為主表,則分別根據(jù)各個目標(biāo)數(shù)據(jù)表W及字段映射表,生成對應(yīng)的XML報文模板。[0102]Sio:根據(jù)所述各個目標(biāo)數(shù)據(jù)表及其對應(yīng)的XML報文模板,生成對應(yīng)的XML報文;執(zhí)行步驟Sll。[0103]Sl1:發(fā)送所述XML報文至一通訊節(jié)點(diǎn);[0104]S12:-通訊節(jié)點(diǎn)接收所述XML報文,并根據(jù)所述XML報文模板,解析得到對應(yīng)的所述目標(biāo)數(shù)據(jù)表。[0105]優(yōu)選地,在生成XML報文之前,按照報文格式交換規(guī)范,并考慮與其它外部系統(tǒng)的數(shù)據(jù)交換,報文的字符集編碼,默認(rèn)統(tǒng)一基于標(biāo)準(zhǔn)的UTF-8設(shè)計,當(dāng)有其它字符集要求時可靈活設(shè)置。通過預(yù)設(shè)標(biāo)準(zhǔn)化的XML報文的字符集編碼,可避免在各系統(tǒng)之間在交互時產(chǎn)生報文格式問題,報文標(biāo)準(zhǔn)規(guī)范保持統(tǒng)一,提高整體可維護(hù)性。[0106]可選地,可W先選擇目標(biāo)數(shù)據(jù)表,再根據(jù)目標(biāo)數(shù)據(jù)表配置字段映射表;可W先選擇主表,再選擇其關(guān)聯(lián)子表。[0107]優(yōu)選地,上述步驟采用可視化工具管理實(shí)現(xiàn),通過報文可視化工具,進(jìn)行數(shù)據(jù)庫關(guān)系設(shè)置、字段的映射配置、字段屬性的選擇、格式的選擇等。如通過可視化的維護(hù)界面維護(hù)報文的主表信息、子表信息、主子表的關(guān)系及主子表包含的字段屬性,報文結(jié)構(gòu)支持動態(tài)生成XML報文文件;可視化工具可提供表名稱、中文名稱的查詢功能,通過關(guān)鍵字段可查詢到報文模板信息;提供模板的測試功能,通過測試數(shù)據(jù)測試模板的準(zhǔn)確性、有效性;提供加載數(shù)據(jù)庫表功能,加載數(shù)據(jù)庫字段信息;提供字段列的新增、修改、刪除功能,加載列功能等。提供多線程處理環(huán)境,通過多線程機(jī)制,支持線程的動態(tài)設(shè)置和調(diào)整,進(jìn)行業(yè)務(wù)數(shù)據(jù)庫的抽取和解析進(jìn)行線程分離設(shè)計,提高整體處理性能;線程數(shù)量根據(jù)硬件資源情況,可動態(tài)調(diào)整,使其處于最佳的處理狀態(tài)。提供API調(diào)用方式和web服務(wù)方式兩種服務(wù)方式,方便不同的開發(fā)語言調(diào)用,其中API調(diào)用方式,用戶可進(jìn)行接口擴(kuò)展,重新接口方法,支持用戶自定義函數(shù),可大大減少代碼的冗余度。[0108]上述步驟的一個具體例子如下:表2和表3為所提取的目標(biāo)數(shù)據(jù)表中的部分?jǐn)?shù)據(jù),表關(guān)系說明如表4所示;[0109][0112]表3[0113][i[i[i[011引[0119]其中,因?yàn)樽侄蜠ECL_ID的內(nèi)容是由相關(guān)組件直接生成的標(biāo)識符,在生成XML報文時可省略,當(dāng)另一通訊節(jié)點(diǎn)接收所述XML報文后,相關(guān)組件會自動補(bǔ)充所述該字段的內(nèi)容。[0120]本實(shí)施例可實(shí)現(xiàn)數(shù)據(jù)庫到XMUXML到數(shù)據(jù)庫雙向出庫、入庫的數(shù)據(jù)解析過程,按照預(yù)先定義好的模板規(guī)則,進(jìn)行數(shù)據(jù)的解析,并支持所有XML現(xiàn)行標(biāo)準(zhǔn),包括化mespace、XPath、W3Cschema、DTD、X-如e巧等,可實(shí)現(xiàn)一個或多個任意數(shù)據(jù)表轉(zhuǎn)換成XML報文,也可將XML報文寫入到一個或多個表中。隨著業(yè)務(wù)的發(fā)展要求需要,可對XML報文的結(jié)構(gòu)做增加或刪除節(jié)點(diǎn)處理,增加新的報文模板時通過提供相應(yīng)的調(diào)用函數(shù)、api及接口適配策略做到零編碼處理機(jī)制,降低與業(yè)務(wù)代碼的禪合度,提高代碼復(fù)用率。[0121]實(shí)施例二[0122]請參照圖3,本實(shí)施例是實(shí)施例的進(jìn)一步拓展,相同之處不再累述,區(qū)別在于,所述步驟S7之后,還包括模板更新過程,具體包括如下步驟:[0123]S13:將所述XML報文模板的更新信息發(fā)布至服務(wù)總線。[0124]S14:服務(wù)總線將所述更新信息推送至各通訊節(jié)點(diǎn)。[0125]S15:各通訊節(jié)點(diǎn)獲取所述更新信息。[0126]S16:比對更新信息中的XML報文模板和正在使用的XML報文模板的唯一標(biāo)識符和版本號;優(yōu)選地,所述唯一標(biāo)識符為模板編號。[0127]S17:判斷是否需要更新,若是,執(zhí)行步驟S18,若否,則執(zhí)行步驟S21;即判斷唯一標(biāo)識符一致時,版本號是否一致,若一致則不需要更新,若不一致則需要更新。[0128]S18:將正在使用的XML報文模板更新為更新信息中的XML報文模板。[0129]S19:保存歷史XML報文模板;XML報文模板發(fā)布后,要對歷史的XML報文模板進(jìn)行跟蹤,保留修改的痕跡,同時對所有的XML報文模板進(jìn)行后臺備份。[0130]S20:若更新后的XML報文模板出現(xiàn)錯誤,啟用歷史XML報文模板;當(dāng)新版本的XML報文模板有問題的時候,可隨時恢復(fù)和啟用舊有的XML報文模板。[0131]S21:獲取更新信息中的下一XML報文模板,繼續(xù)與正在使用XML報文模板進(jìn)行比對,即執(zhí)行步驟S16。[0132]當(dāng)集成調(diào)用方越來越多時,并且各調(diào)用方都使用同一種XML報文模板類型,支持XML報文模板的在線遠(yuǎn)程自動更新,W保證在數(shù)據(jù)處理過程中解析機(jī)制保持一致。[0133]將XML報文模板更新的服務(wù)支持發(fā)布至服務(wù)總線上,通過的消息發(fā)布、訂閱模式,當(dāng)XML報文模板發(fā)生變化的時候,通過消息發(fā)布訂閱方式,將新的XML報文模板推送至各通訊節(jié)點(diǎn)(消息訂閱端),通訊節(jié)點(diǎn)同步更新完業(yè)務(wù)報文模板之后,返回處理的結(jié)果。[0134]XML報文模板采用緩存機(jī)制,每次對XML報文模板進(jìn)行解析的話會占用整個解析過程的20%的時間,所W設(shè)計時充分考慮"一次加載、處處可用",XML報文模板在初始化首次進(jìn)行加載后,后續(xù)再調(diào)用時無需再進(jìn)行解析,W此提高整個過程的處理性能及解析的時間。[0135]本實(shí)施例通過自動更新XML報文模板,對模板版本進(jìn)行統(tǒng)一的監(jiān)控和跟蹤,提高在數(shù)據(jù)交換、服務(wù)集成方面的可維護(hù)性。[0136]實(shí)施例立[0137]請參照圖5,本實(shí)施例為對應(yīng)上述實(shí)施例的一種數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng),包括:[0138]第一預(yù)設(shè)模塊1,用于預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;[0139]第一獲取模塊2,用于獲取目標(biāo)數(shù)據(jù)庫;[0140]提取模塊3,用于在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;[0141]第一判斷模塊4,用于判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系,得到第一判斷結(jié)果;[0142]第一確定模塊5,用于若第一判斷結(jié)果為是,則確定至少一組的主子表關(guān)系;[0143]第一生成模塊6,用于根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;[0144]第二生成模塊7,用于根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。[0145]還包括:[0146]發(fā)送模塊8,用于發(fā)送所述XML報文至一通訊節(jié)點(diǎn);[0147]解析模塊9,用于所述一通訊節(jié)點(diǎn)接收所述XML報文,并根據(jù)所述XML報文模板,解析得到對應(yīng)的所述目標(biāo)數(shù)據(jù)表。[014引還包括;[0149]發(fā)布模塊10,用于將所述XML報文模板的更新信息發(fā)布至服務(wù)總線;[0150]推送模塊11,用于服務(wù)總線將所述更新信息推送至各通訊節(jié)點(diǎn);[0151]第二獲取模塊12,用于各通訊節(jié)點(diǎn)獲取所述更新信息;[0152]比對模塊13,用于比對更新信息中的XML報文模板和正在使用的XML報文模板的唯一標(biāo)識符和版本號;[0153]更新模塊14,用于若所述唯一標(biāo)識符一致但版本號不一致,將正在使用的XML報文模板更新為更新信息中的XML報文模板。[0154]還包括;[0K5]保存模塊15,用于保存歷史XML報文模板;[0156]啟用模塊16,用于若更新后的XML報文模板出現(xiàn)錯誤,啟用歷史XML報文模板。[0157]還包括;[0158]第二判斷模塊17,用于判斷是否存在對應(yīng)所述主子表關(guān)系的XML報文模板,得到第二判斷結(jié)果;[0159]第S生成模塊18,用于若第二判斷結(jié)果為是,根據(jù)所述XML報文模板W及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文;[0160]執(zhí)行模塊19,用于若第二判斷結(jié)果為否,則執(zhí)行所述第一生成模塊6。[0161]還包括;[0162]第四生成模塊20,用于若第一判斷結(jié)果為否,分別根據(jù)各個目標(biāo)數(shù)據(jù)表W及字段映射表,生成對應(yīng)的XML報文模板;[0163]第五生成模塊21,用于根據(jù)所述目標(biāo)數(shù)據(jù)表及其對應(yīng)的XML報文模板,生成對應(yīng)的XML報文。[0164]綜上所述,本發(fā)明提供的一種數(shù)據(jù)庫表和XML報文的映射處理方法及其系統(tǒng),通過XML報文模板實(shí)現(xiàn)數(shù)據(jù)表與XML報文之間的相互轉(zhuǎn)換,當(dāng)業(yè)務(wù)邏輯發(fā)生變化時,只要調(diào)整相應(yīng)的報文模板即可,可減少項(xiàng)目開發(fā)、測試、管理的投入成本,提高報文解析效率,且便于管理和維護(hù);通過預(yù)設(shè)標(biāo)準(zhǔn)化的XML報文的字符集編碼,可避免在各系統(tǒng)之間在交互時產(chǎn)生報文格式問題,報文標(biāo)準(zhǔn)規(guī)范保持統(tǒng)一,提高整體可維護(hù)性。[0165]W上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的
技術(shù)領(lǐng)域:
,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)?!局鳈?quán)項(xiàng)】1.一種數(shù)據(jù)庫表和XML報文的映射處理方法,其特征在于,包括:預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;獲取目標(biāo)數(shù)據(jù)庫;在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系;若是,則確定至少一組的主子表關(guān)系;根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;根據(jù)所述XML報文模板以及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫表和XML報文的映射處理方法,其特征在于,所述"生成對應(yīng)的XML報文"之后,進(jìn)一步包括:發(fā)送所述XML報文至一通訊節(jié)點(diǎn);所述一通訊節(jié)點(diǎn)接收所述XML報文,并根據(jù)所述XML報文模板,解析得到對應(yīng)的所述目標(biāo)數(shù)據(jù)表。3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫表和XML報文的映射處理方法,其特征在于,所述"生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板"之后,進(jìn)一步包括:將所述XML報文模板的更新信息發(fā)布至服務(wù)總線;服務(wù)總線將所述更新信息推送至各通訊節(jié)點(diǎn);各通訊節(jié)點(diǎn)獲取所述更新信息;比對更新信息中的XML報文模板和正在使用的XML報文模板的唯一標(biāo)識符和版本號;若所述唯一標(biāo)識符一致但版本號不一致,將正在使用的XML報文模板更新為更新信息中的XML報文模板。4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)庫表和XML報文的映射處理方法,其特征在于,所述"若所述唯一標(biāo)識符一致但版本號不一致,將正在使用的XML報文模板更新為更新信息中的XML報文模板"之后,進(jìn)一步包括:保存歷史XML報文模板;若更新后的XML報文模板出現(xiàn)錯誤,啟用歷史XML報文模板。5.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫表和XML報文的映射處理方法,其特征在于,所述"生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板"之前,進(jìn)一步包括:判斷是否存在對應(yīng)所述主子表關(guān)系的XML報文模板;若是,根據(jù)所述XML報文模板以及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)所述目標(biāo)數(shù)據(jù)表的XML報文;若否,則執(zhí)行所述生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板的步驟。6.根據(jù)權(quán)利要求1所述的數(shù)據(jù)庫表和XML報文的映射處理方法,其特征在于,所述"判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系"之后,進(jìn)一步包括:若否,分別根據(jù)各個目標(biāo)數(shù)據(jù)表以及字段映射表,生成對應(yīng)的XML報文模板;根據(jù)所述目標(biāo)數(shù)據(jù)表及其對應(yīng)的XML報文模板,生成對應(yīng)的XML報文。7.-種數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng),其特征在于,包括:第一預(yù)設(shè)模塊,用于預(yù)設(shè)數(shù)據(jù)庫字段與XML報文節(jié)點(diǎn)字段的字段映射表;第一獲取模塊,用于獲取目標(biāo)數(shù)據(jù)庫;提取模塊,用于在所述目標(biāo)數(shù)據(jù)庫中提取預(yù)設(shè)個數(shù)的目標(biāo)數(shù)據(jù)表;第一判斷模塊,用于判斷所述目標(biāo)數(shù)據(jù)表之間是否存在主子表關(guān)系;第一確定模塊,用于若是,則確定至少一組的主子表關(guān)系;第一生成模塊,用于根據(jù)所述字段映射表和主子表關(guān)系,生成對應(yīng)主子表關(guān)系組數(shù)的XML報文模板,所述XML報文模板包含主子表之間的層級嵌套關(guān)系;第二生成模塊,用于根據(jù)所述XML報文模板以及對應(yīng)的目標(biāo)數(shù)據(jù)表,生成對應(yīng)的XML報文。8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng),其特征在于,還包括:發(fā)送模塊,用于發(fā)送所述XML報文至一通訊節(jié)點(diǎn);解析模塊,用于所述一通訊節(jié)點(diǎn)接收所述XML報文,并根據(jù)所述XML報文模板,解析得到對應(yīng)的所述目標(biāo)數(shù)據(jù)表。9.根據(jù)權(quán)利要求7所述的數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng),其特征在于,還包括:發(fā)布模塊,用于將所述XML報文模板的更新信息發(fā)布至服務(wù)總線;推送模塊,用于服務(wù)總線將所述更新信息推送至各通訊節(jié)點(diǎn);第二獲取模塊,用于各通訊節(jié)點(diǎn)獲取所述更新信息;比對模塊,用于比對更新信息中的XML報文模板和正在使用的XML報文模板的唯一標(biāo)識符和版本號;更新模塊,用于若所述唯一標(biāo)識符一致但版本號不一致,將正在使用的XML報文模板更新為更新信息中的XML報文模板。10.根據(jù)權(quán)利要求9所述的數(shù)據(jù)庫表和XML報文的映射處理系統(tǒng),其特征在于,還包括:保存模塊,用于保存歷史XML報文模板;啟用模塊,用于若更新后的XML報文模板出現(xiàn)錯誤,啟用歷史XML報文模板。【文檔編號】G06F17/30GK106021594SQ201610396661【公開日】2016年10月12日【申請日】2016年6月6日【發(fā)明人】姚少揚(yáng),孫玉友,靳誼【申請人】福建榕基軟件股份有限公司