專利名稱:一種報文組裝與解析的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及Java技術(shù)和可擴(kuò)展標(biāo)記語言(XML)技術(shù),具體的涉及ー種可擴(kuò)展標(biāo)記語言(XML)報文組裝與解析方法和系統(tǒng)。
背景技術(shù):
在中國移動通信集団有限公司ー級BOSS樞紐系統(tǒng)中,各省BOSS系統(tǒng)以及各業(yè)務(wù)平臺與中心ー級BOSS樞紐進(jìn)行業(yè)務(wù)數(shù)據(jù)交互時的消息都是使用可擴(kuò)展標(biāo)記語言(XML)報文格式進(jìn)行的。中移動集團(tuán)每次下發(fā)ー級BOSS新需求時都會提供相應(yīng)的接ロ規(guī)范,規(guī)范中規(guī)定了每個業(yè)務(wù)交易可擴(kuò)展標(biāo)記語言(XML)格式。省BOSS在實(shí)現(xiàn)這類業(yè)務(wù)時需要根據(jù)集團(tuán)提供的接ロ規(guī)范將這類業(yè)務(wù)的受理數(shù)據(jù)組裝成可擴(kuò)展標(biāo)記語言(XML)報文發(fā)送到中心ー級BOSS樞紐與其他省BOSS進(jìn)行數(shù)據(jù)交互。正是基于這類業(yè)務(wù)的需求,開發(fā)了一種針對中國移動ー級BOSS接ロ規(guī)范的可擴(kuò)展標(biāo)記語言(XML)報文組裝與解析的方法。這種方法有效的解決了繁瑣的可擴(kuò)展標(biāo)記語言(XML)報文組裝過程,只需要根據(jù)不同業(yè)務(wù)規(guī)范配置相應(yīng)的控制文件就能組裝出相應(yīng)的可擴(kuò)展標(biāo)記語言(XML)報文,不需要為每個業(yè)務(wù)單獨(dú)的寫可擴(kuò)展標(biāo)記語言(XML)報文組裝程序,與傳統(tǒng)的組裝與解析報文程序相比,省去了大量的代碼量,大大提高了開發(fā)的效率。開發(fā)此方法用到的技術(shù)是Java技術(shù)以及Jdom解析技木,其核心功能是可以將填充好的幾個值對象自動成組織成可擴(kuò)展標(biāo)記語言(XML)報文,同時也可以根據(jù)控制文件自動解析可擴(kuò)展標(biāo)記語言(XML)報文并將解析的數(shù)據(jù)信息存入Ha ShMap數(shù)據(jù)結(jié)構(gòu)中,十分方便的進(jìn)行數(shù)據(jù)交互與獲取,同時還具有一定的安全性,可以根據(jù)配置對需要進(jìn)行保密的數(shù)據(jù)字段進(jìn)行加密。由于ー級BOSS業(yè)務(wù)在實(shí)現(xiàn)的過程中需要頻繁的與外省BOSS或業(yè)務(wù)平臺進(jìn)行交互,而在交互的過程中,消息都是以可擴(kuò)展標(biāo)記語言(XML)報文格式表達(dá)的。為此,開發(fā)出了一套針對中國移動通信集団有限公司ー級BOSS接ロ規(guī)范組裝與解析可擴(kuò)展標(biāo)記語言(XML)報文的方法,該方法只需根據(jù)集団提供的接ロ規(guī)范寫控制文件和VO類,VO類即java值對象,可根據(jù)控制文件自動生成,使用VO類體現(xiàn)了 java面向?qū)ο蟮乃枷?;在通過方法調(diào)用就可以自動組裝與解析可擴(kuò)展標(biāo)記語言(XML)報文。同時這套解析方法具有很好的公共性,復(fù)用率極高,而且不論報文節(jié)點(diǎn)層次多深多復(fù)雜,都能自動組裝與解析,省去了直接使用JDOM技術(shù)組裝與解析的繁雜性,使軟件質(zhì)量大幅提高,提升了在同行業(yè)內(nèi)的競爭優(yōu)勢。
發(fā)明內(nèi)容
本發(fā)明的技術(shù)方案如下本發(fā)明提供一種報文組裝與解析系統(tǒng)方法,其特征在于使用Java技術(shù)與Jdom解析技術(shù),在省分一級系統(tǒng)中將可擴(kuò)展標(biāo)記語言(XML)報文的操作都封裝在可擴(kuò)展標(biāo)記語言(XML)Parser類中,并采用以下方法供調(diào)用(l)public String procMessageTo可擴(kuò)展標(biāo)記語言(XML),將填充好的幾個值對象組織成可擴(kuò)展標(biāo)記語言(XML)報文;(2)public void proc 可擴(kuò)展標(biāo)記語言(XML)ToMessage,根據(jù)控制文件 fiIaName解析報文可擴(kuò)展標(biāo)記語言(XML) Str,分別將報文頭和報文體存放在msgHead和msgBody兩個hash中。 其中在調(diào)用方法(I)之前需要完成以下步驟 設(shè)定3個參數(shù),第一個參數(shù)HaspMap數(shù)據(jù)類型代表報文頭,第二個參數(shù)HashMap數(shù)據(jù)類型代表報文體,第三個參數(shù)String類型表示的是控制文件名稱。其中HaspMap中存放的數(shù)據(jù)都是將要組裝報文的內(nèi)容,鍵值正為組裝報文的節(jié)點(diǎn),HashMap數(shù)據(jù)通過程序自動生成,相應(yīng)的Vo類調(diào)用自己的propertyToHash方法。其中每個Vo類都需要實(shí)現(xiàn)Message接口。Vo類都需要實(shí)現(xiàn)Message接口可以采用將Vo類的屬性值放到HashMap中或根據(jù)HashMap存放的數(shù)據(jù)賦值給Vo類的字段屬性,二者互為逆向。Vo類的字段屬性為集團(tuán)規(guī)范定義的每個業(yè)務(wù)交易報文的元素名稱。其中在調(diào)用方法(2)之前需要完成以下步驟proc可擴(kuò)展標(biāo)記語言(XML)ToMessage為解析中心返回的可擴(kuò)展標(biāo)記語言(XML)報文,并將解析的數(shù)據(jù)存入Ha ShMap中,設(shè)定4個參數(shù)分別表示接收的可擴(kuò)展標(biāo)記語言(XML)報文、控制文件、存放報文頭的HashMap和存放報文體的HashMap。其中方法⑴和⑵互為逆向過程。本發(fā)明還提供了一種報文組裝與解析系統(tǒng),其特征在于采用Java技術(shù)與Jdom解析技術(shù),在省分一級系統(tǒng)中將可擴(kuò)展標(biāo)記語言(XML)報文的操作都封裝在可擴(kuò)展標(biāo)記語言(XML)Parser類中,并采用以下方法調(diào)用模塊第一方法調(diào)用模塊public String procMessageTo可擴(kuò)展標(biāo)記語言(XML),將填充好的幾個值對象組織成可擴(kuò)展標(biāo)記語言(XML)報文;第二方法調(diào)用模塊public void proc可擴(kuò)展標(biāo)記語言(XML) ToMessage,根據(jù)控制文件filaName解析報文可擴(kuò)展標(biāo)記語言(XML) Str,分別將報文頭和報文體存放在msgHead 和 msgBody 兩個 hash 中。其中在調(diào)用第一方法調(diào)用模塊之前需要完成以下步驟設(shè)定3個參數(shù),第一個參數(shù)HaspMap數(shù)據(jù)類型代表報文頭,第二個參數(shù)HashMap數(shù)據(jù)類型代表報文體,第三個參數(shù)String類型表示的是控制文件名稱。其中HaspMap中存放的數(shù)據(jù)都是將要組裝報文的內(nèi)容,鍵值正為組裝報文的節(jié)點(diǎn),HashMap數(shù)據(jù)通過程序自動生成,相應(yīng)的Vo類調(diào)用自己的propertyToHash方法。其中每個Vo類都需要實(shí)現(xiàn)Message接口。Vo類都需要實(shí)現(xiàn)Message接口可以采用將Vo類的屬性值放到HashMap中或根據(jù)HashMap存放的數(shù)據(jù)賦值給Vo類的字段屬性,二者互為逆向。Vo類的字段屬性為集團(tuán)規(guī)范定義的每個業(yè)務(wù)交易報文的元素名稱。其中在調(diào)用第二方法調(diào)用模塊之前需要完成以下步驟proc可擴(kuò)展標(biāo)記語言(XML)ToMessage為解析中心返回的可擴(kuò)展標(biāo)記語言(XML)報文,并將解析的數(shù)據(jù)存入HashMap中,設(shè)定4個參數(shù)分別表示接收的可擴(kuò)展標(biāo)記語言(XML)報文、控制文件、存放報文頭的Ha shMap和存放報文體的Ha shMap。
其中第一方法調(diào)用模塊和第二方法調(diào)用模塊互為逆向過程。
圖I為本發(fā)明提供的集團(tuán)規(guī)范中定義異地停機(jī)報文示意圖;圖2為本發(fā)明提供的異地停機(jī)插入的數(shù)據(jù)示意圖;圖3為本發(fā)明提供的填寫辦理異地停機(jī)業(yè)務(wù)的信息示意具體實(shí)施例方式本組裝與解析可擴(kuò)展標(biāo)記語言( XML)的方法主要是使用Java技術(shù)與Jdom解析技術(shù),在省分一級系統(tǒng)中對可擴(kuò)展標(biāo)記語言(XML)報文的操作都封裝在可擴(kuò)展標(biāo)記語言(XML)Parser類中,其中主要含有兩個核心的方法供調(diào)用(I)public String procMessageTo 可擴(kuò)展標(biāo)記語言(XML) (HashMap msgHead,HashMap msgBody, String fiIeName)將填充好的幾個值對象組織成可擴(kuò)展標(biāo)記語言(XML)報文(2)public void proc 可擴(kuò)展標(biāo)記語言(XML) ToMessage (String 可擴(kuò)展標(biāo)記語言(XML) Str, String fiIeName, HashMap msgHead, HashMap msgBody)根據(jù)控制文件fiIaName解析報文可擴(kuò)展標(biāo)記語言(XML) Str,分別將報文頭和報文體存放在msgHead和msgBody兩個hash中從這兩個方法的參數(shù)來看,在調(diào)用方法之前需要做一些準(zhǔn)備工作,第一個方法procMessageTo可擴(kuò)展標(biāo)記語言(XML)調(diào)用步驟如下準(zhǔn)備好3個參數(shù),第一個參數(shù)Ha spMap數(shù)據(jù)類型代表報文頭,第二個參數(shù)HashMap數(shù)據(jù)類型代表報文體,第三個參數(shù)String類型表示的是控制文件名稱。HaspMap中存放的數(shù)據(jù)都是要組裝報文的內(nèi)容,鍵值正是要組裝報文的節(jié)點(diǎn),當(dāng)然這些HashMap數(shù)據(jù)也是通過程序自動生成的,只需要相應(yīng)的Vo類調(diào)用自己的propertyToHash方法即可。由此可見,在組裝報文之前最重要的是要填充好值對象Vo類,而Vo類存放的數(shù)據(jù)正是業(yè)務(wù)的受理的數(shù)據(jù),也就是需要和其他省BOSS或業(yè)務(wù)平臺進(jìn)行交互的數(shù)據(jù)。在設(shè)計時每個Vo類都需要實(shí)現(xiàn)Message接ロ,Message接ロ代碼如下
public interface Message extends java. io.Serializable {
public void hashToProperty (HashMap hash); public HashMap propertyToHash ();
}其含有兩個方法,一個是將Vo類的屬性值放到HashMap中,另ー個是根據(jù)HashMap存放的數(shù)據(jù)賦值給Vo類的字段屬性,二者互為逆向。說到這里,那么很明顯組裝報文很重要的一點(diǎn)就是寫No類,Vo類是根據(jù)集團(tuán)規(guī)范來的寫的,Vo類的字段屬性正是集團(tuán)規(guī)范定義的每個業(yè)務(wù)交易報文的元素名稱。同時控制文件的名稱也是唯一的,名稱中含有每個交易的編碼,交易編碼是由集團(tuán)規(guī)范定義的,每個交易一般都需要兩個控制文件,一個用于發(fā)起交易,一個用于落地交易,在組裝可擴(kuò)展標(biāo)記語言(XML)報文前,程序當(dāng)然也會根據(jù)配置找到需要的控制文件,一般所需的這些配置信息都放在了 SOBOPERCODE表中,SOBOPERCODE為業(yè)務(wù)配置信息表,里面存放了每個交易所必須的信息。由此看來,在調(diào)用procMessageTo可擴(kuò)展標(biāo)記語言(XML)這個方法組裝可擴(kuò)展標(biāo)記語言(XML)報文之前,需要我們做的工作就是將Vo類賦值,其他所需信息都有程序幫我們自動完成。在準(zhǔn)備好這些參數(shù)調(diào)用procMessageTo可擴(kuò)展標(biāo)記語言(XML)方法之后,具體用到的就是利用Java技術(shù)和Jdom解析技術(shù)以及業(yè)務(wù)本身的特點(diǎn)組裝報文的過程,里面包含有的遞歸的思想,整個組裝方法不局限于某個業(yè)務(wù),適用于所有的交易,具有很好的公用性,這里對其具體的實(shí)現(xiàn)細(xì)節(jié)就不在敘述了,在我們的程序代碼中已實(shí)現(xiàn)了這個功能。第二個方法proc可擴(kuò)展標(biāo)記語言(XML) ToMessage是解析中心返回的可擴(kuò)展標(biāo)記語言(XML)報文,并將解析的數(shù)據(jù)存入HashMap中,4個參數(shù)分別表示接收的可擴(kuò)展標(biāo)記語言(XML)報文、控制文件、存放報文頭的HashMap、存放報文體的HashMap,這個方法是與第一個方法procMessageTo可擴(kuò)展標(biāo)記語言(XML)互為逆向的一個過程,具體實(shí)現(xiàn)方式相似,對其具體實(shí)現(xiàn)過程不在贅述。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。以下為根據(jù)本發(fā)明技術(shù)方案的一個
具體實(shí)施例方式I、根據(jù)集團(tuán)下發(fā)的業(yè)務(wù)規(guī)范寫好發(fā)起和落地兩個可擴(kuò)展標(biāo)記語言(XML)控制文件。2、根據(jù)集團(tuán)規(guī)范或控制文件寫好相應(yīng)的VO類。3、根據(jù)集團(tuán)規(guī)范中定義的某個業(yè)務(wù)信息在業(yè)務(wù)配置表SOBOPERCODE中配置一條數(shù)據(jù)。4、調(diào)用可擴(kuò)展標(biāo)記語言(XML)Parser類中的procMessageTo可擴(kuò)展標(biāo)記語言(XML) (HashMap msgHead, HashMap msgBody, String fiIeName)方法組織報文或 proc 可擴(kuò)展標(biāo)記語言(XML) ToMessage (String可擴(kuò)展標(biāo)記語言(XML) Str, String fiIeName,HashMapmsgHead, HashMapmsgBody)方法解析報文(這兩個方法在前面技術(shù)方案中已作說明)。5、通過后臺日志可以查看組裝好的可擴(kuò)展標(biāo)記語言(XML)報文以及解析報文的詳細(xì)過程。下面列舉一個實(shí)際案例,說明這個方法的調(diào)用過程,列舉異地停機(jī)報文的組裝過程。集團(tuán)規(guī)范中定義異地停機(jī)報文如圖I所示首先根據(jù)報文寫出以下控制文件
權(quán)利要求
1.一種報文組裝與解析系統(tǒng)方法,其特征在于 使用Java技術(shù)與Jdom解析技術(shù),在省分一級系統(tǒng)中將可擴(kuò)展標(biāo)記語言(XML)報文的操作都封裝在可擴(kuò)展標(biāo)記語言(XML)剖析程序(Parser)類中,并采用以下方法供調(diào)用 (1)公共字符串處理報文(publicString procMessage)到可擴(kuò)展標(biāo)記語言(XML)J^填充好的幾個值對象組織成可擴(kuò)展標(biāo)記語言(XML)報文; (2)公共空閑處理可擴(kuò)展標(biāo)記語言(publicvoid procXML)到報文(Message),根據(jù)控制文件filaName解析報文可擴(kuò)展標(biāo)記語言(XML) Str,分別將報文頭和報文體存放在報文頭(msgHead)和報文體(msgBody)兩個無用數(shù)據(jù)(hash)中。
2.如權(quán)利要求I所述方法,其中在調(diào)用方法(I)之前需要完成以下步驟 設(shè)定三個參數(shù),第一個參數(shù)HaspMap數(shù)據(jù)類型代表報文頭,第二個參數(shù)HashMap數(shù)據(jù)類型代表報文體,第三個參數(shù)String類型表示的是控制文件名稱。
3.如權(quán)利要求2所述方法,其中HaspMap中存放的數(shù)據(jù)都是將要組裝報文的內(nèi)容,鍵值正為組裝報文的節(jié)點(diǎn),HashMap數(shù)據(jù)通過程序自動生成,相應(yīng)的Vo類調(diào)用自己的propertyToHash 方法。
4.如權(quán)利要求3所述方法,其中每個Vo類都需要實(shí)現(xiàn)Message接口。
5.如權(quán)利要求4所述方法,Vo類都需要實(shí)現(xiàn)Message接口可以采用將Vo類的屬性值放到HashMap中或根據(jù)HashMap存放的數(shù)據(jù)賦值給Vo類的字段屬性,二者互為逆向。
6.如權(quán)利要求1-5任一所述方法,Vo類的字段屬性為集團(tuán)規(guī)范定義的每個業(yè)務(wù)交易報文的元素名稱。
7.如權(quán)利要求I所述方法,其中在調(diào)用方法(2)之前需要完成以下步驟 處理可擴(kuò)展標(biāo)記語言到報文(procXML ToMessage)為解析中心返回的可擴(kuò)展標(biāo)記語言(XML)報文,并將解析的數(shù)據(jù)存入HashMap中,設(shè)定4個參數(shù)分別表示接收的可擴(kuò)展標(biāo)記語言(XML)報文、控制文件、存放報文頭的HashMap和存放報文體的HashMap。
8.如權(quán)利要求I所述方法,其中方法(I)和(2)互為逆向過程。
9.一種報文組裝與解析系統(tǒng),其特征在于 該系統(tǒng)采用Java技術(shù)與Jdom解析技術(shù)進(jìn)行組裝與解析,在省分一級系統(tǒng)中將可擴(kuò)展標(biāo)記語言(XML)報文的操作都封裝在可擴(kuò)展標(biāo)記語言(XML)Parser類中,并采用以下方法調(diào)用模塊 第一方法調(diào)用模塊公共字符串處理報文(public String procMessage)到可擴(kuò)展標(biāo)記語言(XML),將填充好的幾個值對象組織成可擴(kuò)展標(biāo)記語言(XML)報文; 第二方法調(diào)用模塊公共空閑處理可擴(kuò)展標(biāo)記語言(public void procXML)到報文(Message),根據(jù)控制文件filaName解析報文可擴(kuò)展標(biāo)記語言(XML) Str,分別將報文頭和報文體存放在報文頭(msgHead)和報文體(msgBody)兩個無用數(shù)據(jù)(hash)中。
10.如權(quán)利要求9所述系統(tǒng),其中在調(diào)用第一方法調(diào)用模塊之前需要完成以下步驟 設(shè)定三個參數(shù),第一個參數(shù)HaspMap數(shù)據(jù)類型代表報文頭,第二個參數(shù)HashMap數(shù)據(jù)類型代表報文體,第三個參數(shù)String類型表示的是控制文件名稱。
11.如權(quán)利要求10所述系統(tǒng),其中HaspMap中存放的數(shù)據(jù)都是將要組裝報文的內(nèi)容,鍵值正為組裝報文的節(jié)點(diǎn),HashMap數(shù)據(jù)通過程序自動生成,相應(yīng)的Vo類調(diào)用自己的propertyToHash 方法。
12.如權(quán)利要求11所述系統(tǒng),其中每個Vo類都需要實(shí)現(xiàn)Message接口。
13.如權(quán)利要求12所述系統(tǒng),Vo類都需要實(shí)現(xiàn)Message接口可以采用將No類的屬性值放到HashMap中或根據(jù)HashMap存放的數(shù)據(jù)賦值給Vo類的字段屬性,二者互為逆向。
14.如權(quán)利要求9-13任一所述系統(tǒng),Vo類的字段屬性為集團(tuán)規(guī)范定義的每個業(yè)務(wù)交易報文的元素名稱。
15.如權(quán)利要求9所述系統(tǒng),其中在調(diào)用第二方法調(diào)用模塊之前需要完成以下步驟 proc可擴(kuò)展標(biāo)記語言(XML) ToMessage為解析中心返回的可擴(kuò)展標(biāo)記語言(XML)報文,并將解析的數(shù)據(jù)存入HashMap中,設(shè)定4個參數(shù)分別表示接收的可擴(kuò)展標(biāo)記語言(XML)報文、控制文件、存放報文頭的HashMap和存放報文體的HashMap。
16.如權(quán)利要求9所述系統(tǒng),其中第一方法調(diào)用模塊和第二方法調(diào)用模塊互為逆向過程。
全文摘要
本發(fā)明涉及一種報文組裝與解析系統(tǒng)方法,其特征在于使用Java技術(shù)與Jdom解析技術(shù),在省分一級系統(tǒng)中將可擴(kuò)展標(biāo)記語言(XML)報文的操作都封裝在可擴(kuò)展標(biāo)記語言(XML)剖析程序(Parser)類中,并采用以下方法供調(diào)用(1)公共字符串處理報文(publicStringprocMessage)到可擴(kuò)展標(biāo)記語言(XML),將填充好的幾個值對象組織成可擴(kuò)展標(biāo)記語言(XML)報文;(2)公共空閑處理可擴(kuò)展標(biāo)記語言(publicvoidprocXML)到報文(Message),根據(jù)控制文件filaName解析報文可擴(kuò)展標(biāo)記語言(XML)Str,分別將報文頭和報文體存放在報文頭(msgHead)和報文體(msgBody)兩個無用數(shù)據(jù)(hash)中。
文檔編號H04L29/08GK102624894SQ20121006162
公開日2012年8月1日 申請日期2012年3月9日 優(yōu)先權(quán)日2012年3月9日
發(fā)明者吳國良 申請人:北京神州數(shù)碼思特奇信息技術(shù)股份有限公司