專(zhuān)利名稱(chēng):遠(yuǎn)程調(diào)用對(duì)象的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及遠(yuǎn)程調(diào)用技術(shù)領(lǐng)域,更具體地說(shuō),涉及一種在分布式系統(tǒng)中遠(yuǎn)程調(diào)用對(duì)象的方法和系統(tǒng)。
背景技術(shù):
從分布式系統(tǒng)架構(gòu)成為軟件架構(gòu)的主流以來(lái),系統(tǒng)間的遠(yuǎn)程調(diào)用平臺(tái)就大量得涌現(xiàn)出來(lái),比較成熟的分布式調(diào)用技術(shù)有:C0RBA、RM1、EJB、WebService或Xml-RPC等。遠(yuǎn)程調(diào)用的過(guò)程一般為:接收客戶(hù)端的調(diào)用命令,根據(jù)該調(diào)用命令中的業(yè)務(wù)對(duì)象名稱(chēng)定位所述業(yè)務(wù)對(duì)象,并由該業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽,通過(guò)該業(yè)務(wù)對(duì)象方法標(biāo)簽對(duì)該業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用。一個(gè)企業(yè)級(jí)的系統(tǒng)是例如銀行系統(tǒng)包括多個(gè)客戶(hù)端(刷卡機(jī)11、內(nèi)部轉(zhuǎn)賬12和網(wǎng)絡(luò)計(jì)算機(jī)13)、以及與各個(gè)客戶(hù)端相對(duì)應(yīng)的業(yè)務(wù)接口(刷卡接口 21、內(nèi)部轉(zhuǎn)賬接口 22和網(wǎng)上交易接口 23),以及,銀行系統(tǒng)和設(shè)置在銀行系統(tǒng)中的多個(gè)調(diào)用系統(tǒng)(調(diào)用系統(tǒng)31、調(diào)用系統(tǒng)32和調(diào)用系統(tǒng)33),各調(diào)用系統(tǒng)與各業(yè)務(wù)接口——對(duì)應(yīng)。上述系統(tǒng)存在以下問(wèn)題:在該系統(tǒng)中,每種調(diào)用系統(tǒng)對(duì)應(yīng)一種客戶(hù)端,也就是說(shuō),當(dāng)存在多種客戶(hù)端的時(shí)候,需要有多種調(diào)用系統(tǒng)與其相適配,每出現(xiàn)一種客戶(hù)端,就需要增加與該客戶(hù)端相對(duì)應(yīng)的調(diào)用系統(tǒng),無(wú)法實(shí)現(xiàn)業(yè)務(wù)邏輯和接口的剝離,無(wú)法復(fù)用業(yè)務(wù)邏輯,即使針對(duì)相同的業(yè)務(wù)邏輯,仍然需要針對(duì)不同的接口進(jìn)行開(kāi)發(fā)。例如:都是提款,通過(guò)刷卡機(jī)和網(wǎng)絡(luò)計(jì)算機(jī)由于遠(yuǎn)程調(diào)用協(xié)議不一致,就必須開(kāi)發(fā)兩套調(diào)用系統(tǒng)適應(yīng)不同的業(yè)務(wù)接口才可以提款,比較繁瑣,增加了設(shè)計(jì)人員的工作量,增加系統(tǒng)的成本。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種分布式系統(tǒng)中的遠(yuǎn)程調(diào)用對(duì)象的方法和系統(tǒng),以解決現(xiàn)有技術(shù)存在的通用性不高的問(wèn)題。本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的方法,包括:創(chuàng)建與各客戶(hù)端對(duì)應(yīng)的代理對(duì)象;利用該代理對(duì)象接收相應(yīng)的客戶(hù)端發(fā)出的調(diào)用命令,并將其轉(zhuǎn)換成與客戶(hù)端協(xié)議相適應(yīng)的命令信息;將所述該命令信息處理成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令;按照所述統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令中的業(yè)務(wù)對(duì)象的名稱(chēng)定位所述業(yè)務(wù)對(duì)象,由該業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽;利用該標(biāo)簽對(duì)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用,并由代理對(duì)象將調(diào)用結(jié)果反饋給所述客戶(hù)端。優(yōu)選的,代理對(duì)象將調(diào)用結(jié)果轉(zhuǎn)換成所述客戶(hù)端能夠識(shí)別的結(jié)果信息后,反饋給所述客戶(hù)端。優(yōu)選的,按照以下步驟創(chuàng)建代理對(duì)象:
讀取對(duì)應(yīng)客戶(hù)端的業(yè)務(wù)接口文件,分析業(yè)務(wù)對(duì)象名稱(chēng)和業(yè)務(wù)對(duì)象方法標(biāo)簽;解析相應(yīng)的業(yè)務(wù)對(duì)象方法標(biāo)簽和所述接口參數(shù),生成對(duì)應(yīng)的方法體;根據(jù)所述接口參數(shù)和所述方法體生成代理對(duì)象。優(yōu)選的,將命令信息處理成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令的實(shí)現(xiàn)方式為:根據(jù)各代理對(duì)象所遵從的協(xié)議,按照各代理對(duì)象協(xié)議的參數(shù)映射,將各種數(shù)據(jù)類(lèi)型的調(diào)用命令轉(zhuǎn)換成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令。本發(fā)明還公開(kāi)了一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng),包括多個(gè)客戶(hù)端和用于存儲(chǔ)業(yè)務(wù)對(duì)象的業(yè)務(wù)對(duì)象容器,還包括調(diào)用裝置,該調(diào)用裝置包括多個(gè)代理對(duì)象單元和執(zhí)行單元;各代理對(duì)象單元與客戶(hù)端一一對(duì)應(yīng),用于接收所述客戶(hù)端的調(diào)用命令,針對(duì)該調(diào)用命令發(fā)送與該客戶(hù)端技術(shù)協(xié)議相適配的命令信息,接收反饋過(guò)來(lái)的調(diào)用結(jié)果信息,并該調(diào)用結(jié)果信息轉(zhuǎn)換成對(duì)應(yīng)客戶(hù)端能夠識(shí)別的信息后,反饋給客戶(hù)端;執(zhí)行單元,用于獲取所述命令信息,將該命令信息轉(zhuǎn)換為統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令,根據(jù)所述該統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令中的業(yè)務(wù)對(duì)象的名稱(chēng)在所述業(yè)務(wù)對(duì)象容器中定位所述業(yè)務(wù)對(duì)象,由該業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽,按照所述業(yè)務(wù)對(duì)象方法標(biāo)簽對(duì)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用,并反饋調(diào)用結(jié)果至所述代理對(duì)象單元。優(yōu)選的,所述系統(tǒng)還包括:代理對(duì)象生成單元,用于獲取對(duì)應(yīng)的客戶(hù)端業(yè)務(wù)接口文件,并依據(jù)該業(yè)務(wù)接口文件生成與客戶(hù)端技術(shù)協(xié)議相適配的代理對(duì)象單元。優(yōu)選的,所述系統(tǒng)還包括:業(yè)務(wù)對(duì)象管理單元, 用于管理所述業(yè)務(wù)對(duì)象容器中的各個(gè)業(yè)務(wù)對(duì)象。優(yōu)選的,所述執(zhí)行單元由以下單元組成:獲取單元,用于獲取代理對(duì)象單元發(fā)送過(guò)來(lái)的命令信息;歸一化單元,將所述命令信息轉(zhuǎn)換成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令;定位單元,根據(jù)所述統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令中的目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)定位該目標(biāo)業(yè)務(wù)對(duì)象在業(yè)務(wù)對(duì)象容器中的位置;調(diào)用單元,由所述業(yè)務(wù)對(duì)象得知業(yè)務(wù)對(duì)象方法標(biāo)簽,按照該業(yè)務(wù)對(duì)象方法標(biāo)簽找到該業(yè)務(wù)對(duì)象方法,進(jìn)行調(diào)用;所述反饋單元,將調(diào)用結(jié)果反饋給代理對(duì)象單元。優(yōu)選的,所述代理對(duì)象生成單元設(shè)置在所述調(diào)用裝置中。通過(guò)上述技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本發(fā)明預(yù)先創(chuàng)建與各客戶(hù)端相對(duì)應(yīng)的代理對(duì)象,并通過(guò)將各客戶(hù)端發(fā)送的命令信息按照客戶(hù)端的協(xié)議轉(zhuǎn)換后,進(jìn)行歸一化,由此可以支持來(lái)自多個(gè)客戶(hù)端的命令信息,實(shí)現(xiàn)業(yè)務(wù)邏輯的復(fù)用,從而實(shí)現(xiàn)業(yè)務(wù)邏輯與接口的剝離,屏蔽了業(yè)務(wù)接口的專(zhuān)業(yè)性,無(wú)需為每個(gè)客戶(hù)端設(shè)計(jì)各自的調(diào)用系統(tǒng),便可適配多個(gè)客戶(hù)端,節(jié)約了工作人員的工作量,降低成本。
圖1為現(xiàn)有技術(shù)的結(jié)構(gòu)示意圖;圖2為本發(fā)明分布式系統(tǒng)中遠(yuǎn)程調(diào)用對(duì)象的方法的流程圖;圖3為本發(fā)明分布式系統(tǒng)中遠(yuǎn)程調(diào)用對(duì)象的方法的代理對(duì)象生成流程圖4為本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的實(shí)施例一結(jié)構(gòu)示意圖;圖5為本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的執(zhí)行單元的結(jié)構(gòu)示意圖;圖6為本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)實(shí)施例遠(yuǎn)程調(diào)用對(duì)象的流程圖;圖7為本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的實(shí)施例二的結(jié)構(gòu)示意圖;圖8為本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的實(shí)施例三的結(jié)構(gòu)示意圖;圖9為本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的實(shí)施例四的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明的基本思想是:預(yù)先創(chuàng)建與各客戶(hù)端相對(duì)應(yīng)的代理對(duì)象;利用所述代理對(duì)象接收相應(yīng)的客戶(hù)端發(fā)出的針對(duì)目標(biāo)業(yè)務(wù)對(duì)象的調(diào)用命令,并將其轉(zhuǎn)換成與客戶(hù)端協(xié)議相適應(yīng)的命令信息;將所述命令信息處理成統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令;按照所述統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令中的目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)定位所述目標(biāo)業(yè)務(wù)對(duì)象,得到所述目標(biāo)業(yè)務(wù)對(duì)象,由該目標(biāo)業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽,利用該標(biāo)簽對(duì)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用,并反饋調(diào)用結(jié)果。為了使本領(lǐng)域技術(shù)人員更好理解本發(fā)明技術(shù)方案,下面對(duì)本文所述的業(yè)務(wù)對(duì)象進(jìn)行簡(jiǎn)單介紹描述:首先對(duì)本文中出現(xiàn)的幾個(gè)名詞術(shù)語(yǔ)進(jìn)行解釋:業(yè)務(wù)對(duì)象:業(yè)務(wù)方法的集合體;例如:賬號(hào)管理對(duì)象;業(yè)務(wù)對(duì)象名稱(chēng): 對(duì)業(yè)務(wù)對(duì)象定乂的Iv全局唯一的字符串標(biāo)簽;
業(yè)務(wù)對(duì)象方法:一定業(yè)務(wù)邏輯的集合;例如:取款;業(yè)務(wù)對(duì)象方法標(biāo)簽:能夠唯一定位業(yè)務(wù)方法的定義;業(yè)務(wù)邏輯:完成一個(gè)完整業(yè)務(wù)的操作步驟;例如:取款:檢查賬號(hào)-是否有錢(qián)-取αΚ ~扣政。例如:“取款”是一個(gè)業(yè)務(wù)對(duì)象方法,其封裝了多種取款的業(yè)務(wù)邏輯,所述業(yè)務(wù)邏輯指的是完成一個(gè)完整業(yè)務(wù)的操作步驟,例如:客戶(hù)端發(fā)送取款100元的請(qǐng)求信息時(shí),該業(yè)務(wù)對(duì)象包含以下業(yè)務(wù)邏輯,如:—查詢(xún)?cè)撚脩?hù)賬戶(hù)上的余額;-如果該賬戶(hù)的余額少于100元,則將“余額不足”的信息反饋給客戶(hù)端;—如果該賬戶(hù)的余額多于100元,則調(diào)動(dòng)送幣機(jī)構(gòu)將100元的紙幣反饋給客戶(hù)端,并將該賬戶(hù)的余額減去100元。在系統(tǒng)中,所述業(yè)務(wù)對(duì)象一般存儲(chǔ)在對(duì)象容器中,所述對(duì)象容器就是存儲(chǔ)多個(gè)業(yè)務(wù)對(duì)象的功能單元,每個(gè)業(yè)務(wù)對(duì)象都存在一個(gè)靜態(tài)屬性-業(yè)務(wù)對(duì)象名稱(chēng),在所述對(duì)象容器中,一個(gè)業(yè)務(wù)對(duì)象唯一對(duì)應(yīng)一個(gè)業(yè)務(wù)對(duì)象名稱(chēng)。下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。以傳輸綜合資源網(wǎng)管系統(tǒng)(TransNMS)為例,TransNMS是三層分布式網(wǎng)管系統(tǒng)。由于這是一個(gè)復(fù)雜的中大型系統(tǒng),必須支持以下的應(yīng)用場(chǎng)景:1、支持其他系統(tǒng)訪(fǎng)問(wèn)接口,例如EMOS (電子管理支撐系統(tǒng))系統(tǒng)接口 ;2、面向不同類(lèi)型的用戶(hù),支持不同類(lèi)型用戶(hù)呈現(xiàn)方式,例如WebClient和Applictaion Client。
以上的需求就決定了本系統(tǒng)必須根據(jù)不同應(yīng)用場(chǎng)景支持不同的分布式接口。下面通過(guò)告警監(jiān)控為例來(lái)進(jìn)行說(shuō)明:1、大客戶(hù)需要通過(guò)WEB監(jiān)控大客戶(hù)電路上的告警,為了穿越防火墻,使用基于HTTP 的 Xml-RPC 通信接口 ;2、網(wǎng)管人員使用告警監(jiān)控監(jiān)控實(shí)時(shí)告警,為了能夠提高訪(fǎng)問(wèn)效率,使用了 EJB的無(wú)狀態(tài)Bean作為接口 ;3、電子運(yùn)維人員使用告警生成的故障單,為了達(dá)到系統(tǒng)無(wú)關(guān)的擴(kuò)展性,采用了WebService 接 P ;上述需求都是由告警業(yè)務(wù)對(duì)象提供的業(yè)務(wù)對(duì)象中的一部分。因此,告警業(yè)務(wù)對(duì)象必須同時(shí)支持三種不同的外部接口。TransNMS系統(tǒng)實(shí)現(xiàn)業(yè)務(wù)對(duì)象和外部接口的分離也就實(shí)現(xiàn)了業(yè)務(wù)邏輯的重用。請(qǐng)參考圖2,為本發(fā)明分布式系統(tǒng)中遠(yuǎn)程調(diào)用對(duì)象的方法的流程圖。各客戶(hù)端遠(yuǎn)程調(diào)用告警業(yè)務(wù)對(duì)象的方法可按照以下步驟進(jìn)行:步驟SlOl:預(yù)先創(chuàng)建與各客戶(hù)端技術(shù)協(xié)議相對(duì)應(yīng)的代理對(duì)象。根據(jù)業(yè)務(wù)接口文件生成與大客戶(hù)客戶(hù)端、網(wǎng)管客戶(hù)端和維護(hù)客戶(hù)端相對(duì)應(yīng)的代理對(duì)象。大客戶(hù)客戶(hù)端、網(wǎng)管客戶(hù)端和維護(hù)客戶(hù)端分別對(duì)應(yīng)EJB代理對(duì)象、XRPC代理對(duì)象和WebService代理對(duì)象。 所述業(yè)務(wù)接口文件包含業(yè)務(wù)對(duì)象名稱(chēng)、業(yè)務(wù)對(duì)象方法標(biāo)簽和接口參數(shù)。由于只有支持的技術(shù)協(xié)議相適配的實(shí)體才能進(jìn)行通信,所以預(yù)先創(chuàng)建代理對(duì)象,該代理對(duì)象支持對(duì)應(yīng)客戶(hù)端的技術(shù)協(xié)議。步驟S102:利用所述代理對(duì)象接收相應(yīng)的客戶(hù)端的調(diào)用命令,并進(jìn)行轉(zhuǎn)換。利用所述代理對(duì)象接收相應(yīng)的客戶(hù)端發(fā)出的針對(duì)目標(biāo)業(yè)務(wù)對(duì)象的調(diào)用命令,并將其轉(zhuǎn)換為與客戶(hù)端技術(shù)協(xié)議相適應(yīng)的命令信息。各代理對(duì)象接收對(duì)應(yīng)的客戶(hù)端發(fā)出的調(diào)用命令(如X1、X2和X3),并將其轉(zhuǎn)換為與各自客戶(hù)端技術(shù)協(xié)議相適應(yīng)的命令信息,所述命令信息包含目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)及業(yè)務(wù)對(duì)象方法標(biāo)簽。此時(shí),來(lái)自大客戶(hù)客戶(hù)端的命令信息為:X1 method (Tl, t)來(lái)自網(wǎng)管客戶(hù)端的命令信息為:X2 method(T2, t)來(lái)自維護(hù)客戶(hù)端的命令信息為:X3 method (T3,t)步驟S103:將所述命令信息處理成統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令。為了實(shí)現(xiàn)調(diào)用格式的統(tǒng)一,將來(lái)自各客戶(hù)端的調(diào)用命令處理成統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令 X method (T, t)。需要說(shuō)明的是,各客戶(hù)端采用的調(diào)用協(xié)議不同,但是調(diào)用的內(nèi)容是相同的;代理對(duì)象將對(duì)應(yīng)的客戶(hù)端發(fā)送的調(diào)用命令進(jìn)行格式轉(zhuǎn)換,轉(zhuǎn)換成對(duì)應(yīng)接口對(duì)應(yīng)的命令信息。例如,對(duì)于同一個(gè)字符串序列,與Corba接口對(duì)應(yīng)的代理對(duì)象將該字符串序列轉(zhuǎn)換成與Corba接口對(duì)應(yīng)的格式:StringListHolder,與WebService接口對(duì)應(yīng)的代理對(duì)象將該字符串序列轉(zhuǎn)換成與WebService接口對(duì)應(yīng)的格式:String[],與EJB接口對(duì)應(yīng)的代理對(duì)象將該字符串序列轉(zhuǎn)換成與EJB接口對(duì)應(yīng)的格式:List〈String>。下面以銀 行取錢(qián)為例子:
業(yè)務(wù)對(duì)象:銀行;業(yè)務(wù)對(duì)象名稱(chēng):A銀行(名稱(chēng)可以由用戶(hù)定);業(yè)務(wù)對(duì)象方法:轉(zhuǎn)帳;業(yè)務(wù)對(duì)象方法標(biāo)簽:B轉(zhuǎn)帳(可以由用戶(hù)定);接口:ATM機(jī)接口 -以Xl代替、網(wǎng)上銀行接口 -以X2代替、柜臺(tái)接口 -以X3代替,三個(gè)接口的數(shù)據(jù)類(lèi)型分別為T(mén)l、T2、T3,三個(gè)接口有各自的代理對(duì)象(分別為第一代理對(duì)象、第二代理對(duì)象和第三代理對(duì)象)。調(diào)用命令:對(duì)X X實(shí)施轉(zhuǎn)帳-以A代替(注:對(duì)于上述三個(gè)接口而言調(diào)用命令是同樣的)。三個(gè)客戶(hù)端通過(guò)X1、X2、X3接口發(fā)出對(duì)X X實(shí)施轉(zhuǎn)帳的調(diào)用命令,調(diào)用命令分別經(jīng)過(guò)所述第一代理對(duì)象、第二代理對(duì)象和第三代理對(duì)象轉(zhuǎn)換后,變成每個(gè)代理對(duì)象都會(huì)根據(jù)自身協(xié)議將調(diào)用命令映射轉(zhuǎn)換X1、X2、X3接口的命令信息:X1 (Tl,t),X2 (T2, t),X3 (T3,t),并將轉(zhuǎn)換后的命令信息進(jìn)一步轉(zhuǎn)換為統(tǒng)一調(diào)用命令A(yù)(T,t),從而完成不同代理對(duì)象發(fā)出調(diào)用命令的歸一化。所述調(diào)用命令中包含有目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)。步驟S104:按照所述調(diào)用命令中的目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng),得到目標(biāo)業(yè)務(wù)對(duì)象方法,并調(diào)用。按照所述調(diào)用命令中的目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)定位所述目標(biāo)業(yè)務(wù)對(duì)象,得到目標(biāo)業(yè)務(wù)對(duì)象方法,并對(duì)該 目標(biāo)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用。步驟S105:代理對(duì)象將調(diào)用結(jié)果轉(zhuǎn)換為與客戶(hù)端技術(shù)協(xié)議相適應(yīng)的結(jié)果信息后,反饋給客戶(hù)端。所述代理對(duì)象將調(diào)用結(jié)果轉(zhuǎn)換為各種客戶(hù)端能夠識(shí)別的數(shù)據(jù)類(lèi)型的結(jié)果信息后,反饋給對(duì)應(yīng)的客戶(hù)端。本發(fā)明實(shí)施例通過(guò)建立與各客戶(hù)端的技術(shù)協(xié)議相適配的代理單元,接收各客戶(hù)端發(fā)送過(guò)來(lái)的各種數(shù)據(jù)類(lèi)型的調(diào)用命令,對(duì)該調(diào)用命令進(jìn)行歸一化處理,處理成統(tǒng)一的統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令(處理成統(tǒng)一的統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令的關(guān)鍵是參數(shù)類(lèi)型的轉(zhuǎn)化,不同代理接口類(lèi)型,可以使用不同的參數(shù)映射,轉(zhuǎn)化為標(biāo)準(zhǔn)的業(yè)務(wù)對(duì)象調(diào)用,從而完成歸一化命令),由此實(shí)現(xiàn)多個(gè)業(yè)務(wù)對(duì)象的復(fù)用,使得業(yè)務(wù)邏輯和接口脫離,節(jié)省了開(kāi)發(fā)成本,提高了查找業(yè)務(wù)對(duì)象的效率。圖3示出了本發(fā)明遠(yuǎn)程調(diào)用對(duì)象的方法的代理對(duì)象的生成流程圖。上述實(shí)施例的步驟SlOl中,預(yù)先創(chuàng)建與各客戶(hù)端技術(shù)協(xié)議相對(duì)應(yīng)的代理對(duì)象的具體過(guò)程包括以下步驟:步驟SlOll:讀取業(yè)務(wù)接口文件,分析業(yè)務(wù)對(duì)象名稱(chēng)和業(yè)務(wù)對(duì)象方法標(biāo)簽。步驟S1012:生成代理接口的方法。該方法可以根據(jù)預(yù)先設(shè)置的映射關(guān)系,將對(duì)應(yīng)的業(yè)務(wù)接口的接口參數(shù)類(lèi)型轉(zhuǎn)換成統(tǒng)一數(shù)據(jù)類(lèi)型。例如:List〈Strig> 類(lèi)型參數(shù)在 EJB 接口映射是 List〈String>,在 WebService 接口映射為String []數(shù)組。步驟S1013:解析相應(yīng)的業(yè)務(wù)對(duì)象方法標(biāo)簽和所述接口參數(shù),生成對(duì)應(yīng)的方法體。
步驟S1014:根據(jù)所述接口參數(shù)和所述方法體生成代理對(duì)象。下面以EJB為例進(jìn)一步說(shuō)明代理對(duì)象生成的過(guò)程:讀取接口文件為:public interface IAlarmBO{String getAlarml dByName(String alarmName);}根據(jù)該接口文件生成相應(yīng)的XXXBean類(lèi)文件,XXXBean實(shí)現(xiàn)建立javax.ejb.SessionBean接口和業(yè)務(wù)接口和EJB標(biāo)簽。
public class AIarmBean implements javax.ejb.SessionBean,IAIarmBOi
public static B0_NAME = “AlarmBO” ;
}從接口文件中解析相應(yīng)的方法名稱(chēng)和參數(shù),生成同樣的方法體。該方法體為:
public class AIarmBean implements javax.ejb.SessionBean,IAIarmBOi
String getAI arm IdByName (Str i ng alarmName) {
}將各種數(shù)據(jù)格式的調(diào)用命令處理成統(tǒng)一的數(shù)據(jù)類(lèi)型的調(diào)用命令。例如:
public class AIarmBean implements javax.ejb.SessionBean,IAIarmBOi
String getAI arm IdByName (Str i ng alarmName) {
BoCommand command = BoCommandFactory.createCommand (BO NAME,“getAI arm IdByName”,a IarmName);return (String) command, exec ();
}上述代碼中表示,ge t AI arml dByName的數(shù)據(jù)類(lèi)型為L(zhǎng)ist〈String>。使用XDoclet的ejbdoclet進(jìn)行編譯,產(chǎn)生接口相關(guān)的文件XXXHome.java(EJB對(duì)象的Home對(duì)象),XXXEjbObject.j ava(EJB的遠(yuǎn)程接口文件);并進(jìn)行ant編譯后生成相應(yīng)的代理對(duì)象。上述遠(yuǎn)程調(diào)用對(duì)象的方法的流程可以由一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)執(zhí)行,請(qǐng)參考圖4,為本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的實(shí)施例一的結(jié)構(gòu)示意圖。本系統(tǒng)包括客戶(hù)端100、調(diào)用裝置200和業(yè)務(wù)對(duì)象容器300。
其中,所述業(yè)務(wù)對(duì)象容器300存儲(chǔ)所有業(yè)務(wù)對(duì)象, 所述調(diào)用裝置200包括多個(gè)代理對(duì)象單元201,還包括執(zhí)行單元202,其中,各代理對(duì)象單元201與客戶(hù)端100 —一對(duì)應(yīng),獲取所述客戶(hù)端100的調(diào)用命令之后,將該調(diào)用命令轉(zhuǎn)換為與客戶(hù)端協(xié)議相適配的命令信息;執(zhí)行單元202獲取該命令信息之后,將該調(diào)用命令進(jìn)行轉(zhuǎn)換成統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令,根據(jù)所述該統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令中的業(yè)務(wù)對(duì)象的名稱(chēng)在所述業(yè)務(wù)對(duì)象容器300中定位所述業(yè)務(wù)對(duì)象,由該業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽,按照所述業(yè)務(wù)對(duì)象方法標(biāo)簽對(duì)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用,并反饋調(diào)用結(jié)果至相應(yīng)的客戶(hù)端 100。圖5示出了該實(shí)施例的執(zhí)行單元的結(jié)構(gòu)示意圖。所述執(zhí)行單元202可以由獲取單元2021、歸一化單元2022、定位單元2023、調(diào)用單元2024和反饋單元2025組成,所述獲取單元2021獲取代理對(duì)象單元201發(fā)送過(guò)來(lái)的命令信息,并將該命令信息提供給歸一化單元2022,該歸一化單元2022將所述命令信息轉(zhuǎn)換成符合統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令,并將該調(diào)用命令提供給定位單元2023,該定位單元2023根據(jù)命令信息中的目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)定位該目標(biāo)業(yè)務(wù)對(duì)象在業(yè)務(wù)對(duì)象容器300中的位置,并通知調(diào)用單元2024,調(diào)用單元2024由所述業(yè)務(wù)對(duì)象得知業(yè)務(wù)對(duì)象方法標(biāo)簽,按照該業(yè)務(wù)對(duì)象方法標(biāo)簽找到該業(yè)務(wù)對(duì)象方法,進(jìn)行調(diào)用;所述反饋單元2025將調(diào)用結(jié)果反饋給代理對(duì)象單元201,所述代理對(duì)象單元201將所述調(diào)用結(jié)果轉(zhuǎn)換為對(duì)應(yīng)客戶(hù)端100能夠識(shí)別的數(shù)據(jù)格式的結(jié)果信息,并將該結(jié)果信息反饋給該客戶(hù)端100。圖6示出了上述系統(tǒng)執(zhí)行遠(yuǎn)程調(diào)用對(duì)象的方法的流程圖,具體包括以下步驟:步驟S201:代理對(duì)象生成單元生成與各客戶(hù)端相對(duì)應(yīng)的代理對(duì)象。步驟S202:代理對(duì)象接收對(duì)應(yīng)的客戶(hù)端的調(diào)用命令。步驟S203:代理對(duì)象發(fā)送該命令信息至執(zhí)行單元。代理對(duì)象將所述調(diào)用命令轉(zhuǎn)換成與客戶(hù)端協(xié)議相適應(yīng)的命令信息。所述命令信息中包含目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)和業(yè)務(wù)對(duì)象方法標(biāo)簽。步驟S204:執(zhí)行單元將所述命令信息轉(zhuǎn)換成符合統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令。所述調(diào)用命令包含目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)、目標(biāo)業(yè)務(wù)對(duì)象方法的標(biāo)簽。步驟S205:執(zhí)行單元定位所述業(yè)務(wù)對(duì)象。所述執(zhí)行單元按照所述調(diào)用命令包含的目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)確定所述目標(biāo)業(yè)務(wù)對(duì)象在業(yè)務(wù)容器中的位置。步驟S206:執(zhí)行單元調(diào)用所述業(yè)務(wù)對(duì)象,并將調(diào)用結(jié)果反饋給所述代理對(duì)象單
J Li ο步驟S207:代理對(duì)象單元將所述調(diào)用結(jié)果轉(zhuǎn)換成與客戶(hù)端技術(shù)協(xié)議相適配的結(jié)果信息后,反饋給所述客戶(hù)端。圖7示出了本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的實(shí)施例二的結(jié)構(gòu)示意圖。在上述實(shí)施例的基礎(chǔ)上,本發(fā)明還可以包括代理對(duì)象生成單元400,代理對(duì)象生成單元400利用接口文件生成代理對(duì)象單元201的具體方法請(qǐng)參考上述遠(yuǎn)程調(diào)用對(duì)象的方法部分,在此不再贅述。需要說(shuō)明的是,代理對(duì)象生成單元400可以設(shè)置在所述調(diào)用裝置200中,如圖8所示。
圖9示出了本發(fā)明一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)的實(shí)施例四的結(jié)構(gòu)示意圖。由于業(yè)務(wù)對(duì)象的調(diào)用涉及到業(yè)務(wù)對(duì)象的生命周期和并發(fā)的問(wèn)題,所以簡(jiǎn)單將對(duì)象名稱(chēng)和業(yè)務(wù)對(duì)象一一對(duì)應(yīng)地綁定不是最好的方式,所以在上述實(shí)施例的基礎(chǔ)上,本系統(tǒng)還可以包括業(yè)務(wù)對(duì)象管理單元500,用于對(duì)業(yè)務(wù)對(duì)象容器中的業(yè)務(wù)對(duì)象進(jìn)行生命周期的管理和并發(fā)調(diào)用處理。本發(fā)明實(shí)施例由與多個(gè)客戶(hù)端協(xié)議適配的多個(gè)代理對(duì)象對(duì)各客戶(hù)端發(fā)送過(guò)來(lái)的調(diào)用命令進(jìn)行歸一化,處理成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令,實(shí)現(xiàn)多個(gè)業(yè)務(wù)對(duì)象的復(fù)用,使用本發(fā)明能夠構(gòu)建一個(gè)和接口無(wú)關(guān)的分布式系統(tǒng),可以適配多個(gè)客戶(hù)端,使得業(yè)務(wù)邏輯和接口分離,屏蔽各個(gè)外部接口的差異,無(wú)需針對(duì)每個(gè)客戶(hù)端,開(kāi)發(fā)獨(dú)立一套調(diào)用系統(tǒng),從而節(jié)省了開(kāi)發(fā)成本,提高了查找業(yè)務(wù)對(duì)象的效率。以上公開(kāi)的僅為本發(fā)明的優(yōu)選實(shí)施方式,但本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的沒(méi)有創(chuàng)造性的變化,以及在不脫離本發(fā)明原理前提下所作的若干改進(jìn)和潤(rùn)飾,都應(yīng)落在本發(fā)明的 保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種遠(yuǎn)程調(diào)用對(duì)象的方法,其特征在于,包括: 創(chuàng)建與各客戶(hù)端對(duì)應(yīng)的代理對(duì)象; 利用該代理對(duì)象接收相應(yīng)的客戶(hù)端發(fā)出的調(diào)用命令,并將其轉(zhuǎn)換成與客戶(hù)端協(xié)議相適應(yīng)的命令息; 將所述該命令信息處理成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令; 按照所述統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令中的業(yè)務(wù)對(duì)象的名稱(chēng)定位所述業(yè)務(wù)對(duì)象,由該業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽; 利用該標(biāo)簽對(duì)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用,并由代理對(duì)象將調(diào)用結(jié)果反饋給所述客戶(hù)端。
2.如權(quán)利要求1所述的方法,其特征在于,代理對(duì)象將調(diào)用結(jié)果轉(zhuǎn)換成所述客戶(hù)端能夠識(shí)別的結(jié)果信息后,反饋給所述客戶(hù)端。
3.如權(quán)利要求1或2所述的方法,其特征在于,按照以下步驟創(chuàng)建代理對(duì)象: 讀取對(duì)應(yīng)客戶(hù)端的業(yè)務(wù)接口文件,分析業(yè)務(wù)對(duì)象名稱(chēng)和業(yè)務(wù)對(duì)象方法標(biāo)簽; 解析相應(yīng)的業(yè)務(wù)對(duì)象方法標(biāo)簽和所述接口參數(shù),生成對(duì)應(yīng)的方法體; 根據(jù)所述接口 參數(shù)和所述方法體生成代理對(duì)象。
4.如權(quán)利要求1或2所述的方法,其特征在于,將命令信息處理成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令的實(shí)現(xiàn)方式為: 根據(jù)各代理對(duì)象接口類(lèi)型,使用不同的參數(shù)映射,轉(zhuǎn)化為標(biāo)準(zhǔn)的業(yè)務(wù)對(duì)象調(diào)用,從而完成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令的生成。
5.一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng),包括多個(gè)客戶(hù)端和用于存儲(chǔ)業(yè)務(wù)對(duì)象的業(yè)務(wù)對(duì)象容器,其特征在于,還包括調(diào)用裝置,該調(diào)用裝置包括多個(gè)代理對(duì)象單元和執(zhí)行單元; 各代理對(duì)象單元與客戶(hù)端一一對(duì)應(yīng),用于接收所述客戶(hù)端的調(diào)用命令,針對(duì)該調(diào)用命令發(fā)送與該客戶(hù)端技術(shù)協(xié)議相適配的命令信息,接收反饋過(guò)來(lái)的調(diào)用結(jié)果信息,并該調(diào)用結(jié)果信息轉(zhuǎn)換成對(duì)應(yīng)客戶(hù)端能夠識(shí)別的信息后,反饋給客戶(hù)端; 執(zhí)行單元,用于獲取所述命令信息,將該命令信息轉(zhuǎn)換為統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令,根據(jù)所述該統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令中的業(yè)務(wù)對(duì)象的名稱(chēng)在所述業(yè)務(wù)對(duì)象容器中定位所述業(yè)務(wù)對(duì)象,由該業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽,按照所述業(yè)務(wù)對(duì)象方法標(biāo)簽對(duì)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用,并反饋調(diào)用結(jié)果至所述代理對(duì)象單元。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,還包括: 代理對(duì)象生成單元,用于獲取對(duì)應(yīng)的客戶(hù)端業(yè)務(wù)接口文件,并依據(jù)該業(yè)務(wù)接口文件生成與客戶(hù)端技術(shù)協(xié)議相適配的代理對(duì)象單元。
7.如權(quán)利要求5或6所述的系統(tǒng),其特征在于,還包括: 業(yè)務(wù)對(duì)象管理單元,用于管理所述業(yè)務(wù)對(duì)象容器中的各個(gè)業(yè)務(wù)對(duì)象。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述執(zhí)行單元由以下單元組成: 獲取單元,用于獲取代理對(duì)象單元發(fā)送過(guò)來(lái)的命令信息; 歸一化單元,將所述命令信息轉(zhuǎn)換成統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令; 定位單元,根據(jù)所述統(tǒng)一數(shù)據(jù)類(lèi)型的調(diào)用命令中的目標(biāo)業(yè)務(wù)對(duì)象的名稱(chēng)定位該目標(biāo)業(yè)務(wù)對(duì)象在業(yè)務(wù)對(duì)象容器中的位置; 調(diào)用單元,由所述業(yè)務(wù)對(duì)象得知業(yè)務(wù)對(duì)象方法標(biāo)簽,按照該業(yè)務(wù)對(duì)象方法標(biāo)簽找到該業(yè)務(wù)對(duì)象方法,進(jìn)行調(diào)用;所述反饋單元,將調(diào)用結(jié)果反饋給代理對(duì)象單元。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述代理對(duì)象生成單元設(shè)置在所述調(diào)用裝置 中。
全文摘要
本發(fā)明公開(kāi)了一種遠(yuǎn)程調(diào)用對(duì)象的方法,包括創(chuàng)建與各客戶(hù)端對(duì)應(yīng)的代理對(duì)象;利用該代理對(duì)象接收相應(yīng)的客戶(hù)端發(fā)出的調(diào)用命令,并將其轉(zhuǎn)換成與客戶(hù)端協(xié)議相適應(yīng)的命令信息;將所述命令信息處理成統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令;按照所述統(tǒng)一數(shù)據(jù)類(lèi)型調(diào)用命令中的業(yè)務(wù)對(duì)象的名稱(chēng)定位所述業(yè)務(wù)對(duì)象,由該業(yè)務(wù)對(duì)象得到業(yè)務(wù)對(duì)象方法標(biāo)簽;利用該標(biāo)簽對(duì)業(yè)務(wù)對(duì)象方法進(jìn)行調(diào)用。本發(fā)明同時(shí)還公開(kāi)了一種遠(yuǎn)程調(diào)用對(duì)象的系統(tǒng)。本發(fā)明預(yù)先創(chuàng)建與各客戶(hù)端相對(duì)應(yīng)的代理對(duì)象,并通過(guò)將各客戶(hù)端發(fā)送的命令信息按照客戶(hù)端的協(xié)議轉(zhuǎn)換后,進(jìn)行歸一化,由此可以支持來(lái)自多個(gè)客戶(hù)端的命令信息,實(shí)現(xiàn)業(yè)務(wù)邏輯的復(fù)用,從而實(shí)現(xiàn)業(yè)務(wù)邏輯與接口的剝離,屏蔽了業(yè)務(wù)接口的專(zhuān)業(yè)性,可適配多個(gè)客戶(hù)端,節(jié)約了工作人員的工作量,降低成本。
文檔編號(hào)G06F9/46GK103246547SQ20111045128
公開(kāi)日2013年8月14日 申請(qǐng)日期2012年2月14日 優(yōu)先權(quán)日2012年2月14日
發(fā)明者張旭 申請(qǐng)人:北京億陽(yáng)信通科技有限公司