實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的方法、裝置和設(shè)備的制作方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例提供了一種實(shí)現(xiàn)Mashup業(yè)務(wù)的方法、裝置和設(shè)備,涉及通信【技術(shù)領(lǐng)域】,用于支持多種類(lèi)型的數(shù)據(jù)源的Mashup業(yè)務(wù)。本發(fā)明實(shí)施例提供的實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的方法包括:對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接口;根據(jù)業(yè)務(wù)請(qǐng)求者的業(yè)務(wù)請(qǐng)求消息,在已注冊(cè)的所述組件中查詢所需的組件,并按照統(tǒng)一的第二格式為所述所需的組件生成業(yè)務(wù)請(qǐng)求接口,將所述業(yè)務(wù)提供接口和所述業(yè)務(wù)請(qǐng)求接口進(jìn)行匹配;利用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向所述所需的組件調(diào)用業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng)求者。
【專(zhuān)利說(shuō)明】實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的方法、裝置和設(shè)備
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種實(shí)現(xiàn)Mashup業(yè)務(wù)的方法、裝置和設(shè)備?!颈尘凹夹g(shù)】
[0002]業(yè)務(wù)聚合(Mashup)是將多個(gè)不同的支持Web應(yīng)用程序接口(Web ApplicationInterface,API)的應(yīng)用進(jìn)行堆疊、聚合形成的新型的Web應(yīng)用。Mashup服務(wù)器是一個(gè)Web集成平臺(tái),它允許用戶輕松集成來(lái)自任意具有Web API的應(yīng)用程序的數(shù)據(jù)和資源,其主要功能包括提供聚合應(yīng)用邏輯編排功能,聚合應(yīng)用的執(zhí)行環(huán)境以及和外部數(shù)據(jù)源、子服務(wù)進(jìn)行通信等。
[0003]Mashup起源于因特網(wǎng)(Internet),屬于WEB2.0的一種新應(yīng)用。目前業(yè)界眾多廠商的解決方案聚焦于web類(lèi)的應(yīng)用,以及互聯(lián)網(wǎng)數(shù)據(jù)源的集成和融合,如web服務(wù)(webservice)數(shù)據(jù)源、聚合業(yè)務(wù)(Really Simple Syndication, RSS)數(shù)據(jù)源、訂閱網(wǎng)志(ATOM)數(shù)據(jù)源等。
[0004]在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問(wèn)題:
[0005]隨著電信運(yùn)營(yíng)商對(duì)業(yè)務(wù)能力的開(kāi)放,業(yè)務(wù)創(chuàng)建者,如第三方開(kāi)發(fā)者、用戶、運(yùn)營(yíng)商等,已經(jīng)可以將穩(wěn)定的、可信度高且服務(wù)質(zhì)量保障度高的電信服務(wù)數(shù)據(jù)源集成為Mashup業(yè)務(wù)。但現(xiàn)有的方案中Mashup服務(wù)器不支持電信服務(wù)數(shù)據(jù)源的Mashup業(yè)務(wù),無(wú)法滿足用戶的需要。
【發(fā)明內(nèi)容】
[0006]為解決現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明的實(shí)施例提供一種實(shí)現(xiàn)Mashup業(yè)務(wù)的方法、裝置和設(shè)備。
[0007]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0008]一種實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的方法,所述方法包括:
[0009]對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接Π ;
[0010]根據(jù)業(yè)務(wù)請(qǐng)求者的業(yè)務(wù)請(qǐng)求消息,在已注冊(cè)的所述組件中查詢所需的組件,并按照統(tǒng)一的第二格式為所述所需的組件生成業(yè)務(wù)請(qǐng)求接口,將所述業(yè)務(wù)提供接口和所述業(yè)務(wù)請(qǐng)求接口進(jìn)行匹配;
[0011 ] 利用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向所述所需的組件調(diào)用業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng)求者。
[0012]一種實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的裝置,所述裝置包括:
[0013]業(yè)務(wù)提供接口生成單元,用于對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接口;
[0014]業(yè)務(wù)請(qǐng)求接口生成單元,用于根據(jù)業(yè)務(wù)請(qǐng)求者的業(yè)務(wù)請(qǐng)求消息,在已注冊(cè)的所述組件中查詢所需的組件,并按照統(tǒng)一的第二格式為所述所需的組件生成業(yè)務(wù)請(qǐng)求接口,將所述業(yè)務(wù)提供接口和所述業(yè)務(wù)請(qǐng)求接口進(jìn)行匹配;
[0015]業(yè)務(wù)實(shí)現(xiàn)單元,用于利用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向所述所需的組件調(diào)用業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng)求者。
[0016]一種網(wǎng)絡(luò)設(shè)備,包括:
[0017]請(qǐng)求消息分析單元,用于對(duì)接收到的組件注冊(cè)請(qǐng)求消息進(jìn)行分析,將所述組件注冊(cè)請(qǐng)求消息發(fā)送至組件注冊(cè)單元,所述組件注冊(cè)請(qǐng)求消息攜帶組件標(biāo)識(shí)ID,以及,對(duì)接收到的業(yè)務(wù)請(qǐng)求消息進(jìn)行分析,將所述業(yè)務(wù)請(qǐng)求消息發(fā)送至組件請(qǐng)求處理單元,
[0018]所述組件注冊(cè)單元,用于根據(jù)組件注冊(cè)請(qǐng)求消息中攜帶的所述組件ID,向組件存儲(chǔ)單元發(fā)送組件查詢請(qǐng)求,查詢組件存儲(chǔ)單元中所有已經(jīng)注冊(cè)的組件中是否有相同ID的組件已經(jīng)注冊(cè),如果沒(méi)有相同ID的組件注冊(cè),則調(diào)用Mashable API創(chuàng)建單元,以使所述Mashable API創(chuàng)建單元按照統(tǒng)一的第一格式為組件生成業(yè)務(wù)提供接口 ;所述組件存儲(chǔ)單元,用于存儲(chǔ)組件和組件的描述信息,所述描述信息包括組件ID ;
[0019]所述組件請(qǐng)求處理單元,用于根據(jù)業(yè)務(wù)請(qǐng)求消息,按照統(tǒng)一的第二格式為組件生成業(yè)務(wù)請(qǐng)求接口,或者,調(diào)用所述Mashable API創(chuàng)建單元以使所述Mashable API創(chuàng)建單元按照統(tǒng)一的第二格式為組件生成業(yè)務(wù)請(qǐng)求接口,以及利用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向相應(yīng)的組件請(qǐng)求業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng)求者。
[0020]本發(fā)明實(shí)施例提供的技術(shù)方案,通過(guò)采用統(tǒng)一的格式為各個(gè)數(shù)據(jù)源的組件生成業(yè)務(wù)提供接口或業(yè)務(wù)請(qǐng)求接口,實(shí)現(xiàn)了對(duì)各種數(shù)據(jù)源的統(tǒng)一封裝機(jī)制,從而能夠支持包括電信服務(wù)數(shù)據(jù)源在內(nèi)的多種類(lèi)型的數(shù)據(jù)源通過(guò)該交互接口進(jìn)行Mashup業(yè)務(wù)的創(chuàng)建和請(qǐng)求,增強(qiáng)了 Mashup業(yè)務(wù)的可擴(kuò)展性,滿足了用戶的需要。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0021]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0022]圖1為本發(fā)明一個(gè)實(shí)施例提供的實(shí)現(xiàn)Mashup業(yè)務(wù)的方法流程圖;
[0023]圖2為本發(fā)明一個(gè)實(shí)施例提供的Mashup系統(tǒng)結(jié)構(gòu)示意圖;
[0024]圖3為本發(fā)明又一個(gè)實(shí)施例提供的非Mashup Service數(shù)據(jù)源組件的注冊(cè)流程示意圖;
[0025]圖4 (a)為本發(fā)明又一個(gè)實(shí)施例提供的Mashup Service數(shù)據(jù)源部署流程示意圖;
[0026]圖4 (b)為本發(fā)明又一個(gè)實(shí)施例提供的Mashup Service數(shù)據(jù)源組件的注冊(cè)流程示意圖;
[0027]圖5為本發(fā)明又一實(shí)施例提供的預(yù)定結(jié)構(gòu)的示意圖;
[0028]圖6為本發(fā)明又一實(shí)施例提供的一種預(yù)定結(jié)構(gòu)的示例;
[0029]圖7為本發(fā)明又一實(shí)施例提供的一種動(dòng)態(tài)生成業(yè)務(wù)請(qǐng)求接口的場(chǎng)景示意圖;[0030]圖8為本發(fā)明又一實(shí)施例提供的Mashup系統(tǒng)與AAA系統(tǒng)和計(jì)費(fèi)系統(tǒng)之間交互的流程示意圖;
[0031]圖9為本發(fā)明又一實(shí)施例提供一種實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的裝置結(jié)構(gòu)示意圖。【具體實(shí)施方式】
[0032]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0033]本發(fā)明實(shí)施例的技術(shù)構(gòu)思在于提供一種創(chuàng)新的動(dòng)態(tài)創(chuàng)建Mashup業(yè)務(wù)的方案,該方案通過(guò)對(duì)包括互聯(lián)網(wǎng)數(shù)據(jù)源和電信服務(wù)數(shù)據(jù)源的各種數(shù)據(jù)源的組件,使用統(tǒng)一的應(yīng)用程序接口(Application Interface, API)格式進(jìn)行封裝、注冊(cè),以使Mashup服務(wù)器支持各種數(shù)據(jù)源的Mashup業(yè)務(wù)。
[0034]本發(fā)明一個(gè)實(shí)施例提供的實(shí)現(xiàn)Mashup業(yè)務(wù)的方法,參見(jiàn)圖1,包括:
[0035]11:對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接Π ;
[0036]12:根據(jù)業(yè)務(wù)請(qǐng)求者的業(yè)務(wù)請(qǐng)求消息,在已注冊(cè)的所述組件中獲取所需的組件,并按照統(tǒng)一的第二格式為所述所需的組件生成業(yè)務(wù)請(qǐng)求接口;
[0037]13:利 用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向所述所需的組件請(qǐng)求業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng)求者。
[0038]上述的數(shù)據(jù)源包括電信服務(wù)數(shù)據(jù)源在內(nèi)的各種數(shù)據(jù)源。Mashup業(yè)務(wù)可以作為Mashup數(shù)據(jù)源,提供第二次開(kāi)發(fā)或重用
[0039]為了便于清楚描述本發(fā)明實(shí)施例的技術(shù)方案,在本發(fā)明的實(shí)施例中,采用了“第一”、“第二”等字樣對(duì)功能和作用基本相同的相同項(xiàng)或相似項(xiàng)進(jìn)行區(qū)分,本領(lǐng)域技術(shù)人員可以理解“第一”、“第二”等字樣并不對(duì)數(shù)量和執(zhí)行次序進(jìn)行限定。
[0040]其中,所述第一格式和第二格式為相同的格式,或者,所述第一格式和第二格式為不同的格式。即所有的業(yè)務(wù)請(qǐng)求接口具有相同的格式,所有的業(yè)務(wù)提供接口具有相同的格式,而業(yè)務(wù)請(qǐng)求接口和業(yè)務(wù)提供接口的格式可以相同,也可以不同。
[0041]其中,上述的格式可以理解為請(qǐng)求或調(diào)用業(yè)務(wù)時(shí)的具體消息構(gòu)成,例如,該消息可以由函數(shù)和參數(shù)構(gòu)成或者該消息由協(xié)議調(diào)用構(gòu)成。
[0042]示例性的,一種可以采用的格式表示如下:
[0043]函數(shù)(參數(shù));如Weather (city)
[0044]另一種可以采用的格式表示如下:
[0045]協(xié)議:參數(shù);如Http:/GET/P0SI^..[0046]進(jìn)一步的,在步驟11之前,還可以包括按照預(yù)定結(jié)構(gòu)創(chuàng)建Mashup業(yè)務(wù),例如,業(yè)務(wù)開(kāi)發(fā)者按照組件導(dǎo)入部分(Component imports)、命名空間定義部分(Mashup namespacedefinition)、語(yǔ)法定義部分(Schema definition)、操作(Operation)部分四層結(jié)構(gòu)利用動(dòng)態(tài)腳本語(yǔ)言(如JavaScript)創(chuàng)建Mashup業(yè)務(wù)。傳統(tǒng)的Mashup業(yè)務(wù)開(kāi)發(fā)方法,由于Mashup數(shù)據(jù)源的格式不統(tǒng)一,業(yè)務(wù)開(kāi)發(fā)者需要同時(shí)掌握Web Service、Rest、C++、Java等具體的編程技術(shù),開(kāi)發(fā)難度大、對(duì)業(yè)務(wù)開(kāi)發(fā)者的要求高。而采用本發(fā)明的這種方式使業(yè)務(wù)開(kāi)發(fā)者無(wú)需額外的學(xué)習(xí)其他的開(kāi)發(fā)語(yǔ)言(包括Mashup Server標(biāo)簽語(yǔ)言和網(wǎng)頁(yè)語(yǔ)言),只通過(guò)使用擴(kuò)展的動(dòng)態(tài)腳本語(yǔ)言就能夠創(chuàng)建Mashup業(yè)務(wù),降低了業(yè)務(wù)開(kāi)發(fā)難度和對(duì)業(yè)務(wù)開(kāi)發(fā)者的要求。
[0047]業(yè)務(wù)請(qǐng)求者通過(guò)請(qǐng)求信息和應(yīng)答信息得到相應(yīng)的Mashup業(yè)務(wù),享受相應(yīng)的服務(wù)。
[0048]示例性的,一種請(qǐng)求信息可以為:HTTP://www.sina.com.cn/user=123&password=123而相應(yīng)的應(yīng)答信息為用戶所請(qǐng)求的網(wǎng)頁(yè)的內(nèi)容,例如驗(yàn)證通過(guò)的網(wǎng)頁(yè)。將請(qǐng)求信息攜帶在上述業(yè)務(wù)請(qǐng)求消息中,將應(yīng)答信息攜帶在Mashup業(yè)務(wù)應(yīng)答消息中。
[0049]本發(fā)明實(shí)施例中的組件為業(yè)務(wù)請(qǐng)求者和實(shí)際的業(yè)務(wù)(如數(shù)據(jù)源)之間的代理。組件利用業(yè)務(wù)提供接口從數(shù)據(jù)源調(diào)用相應(yīng)的業(yè)務(wù),利用業(yè)務(wù)請(qǐng)求接口接收業(yè)務(wù)請(qǐng)求者發(fā)送的業(yè)務(wù)請(qǐng)求消息,以根據(jù)該業(yè)務(wù)請(qǐng)求消息請(qǐng)求實(shí)際的業(yè)務(wù)提供的操作(Operation)。
[0050]由該業(yè)務(wù)提供接口、業(yè)務(wù)請(qǐng)求接口和相關(guān)參數(shù)構(gòu)成Mashable API。利用MashableAPI統(tǒng)一對(duì)組件進(jìn)行管理,組件對(duì)外部開(kāi)放具有統(tǒng)一格式的Mashable API以供Mashup業(yè)務(wù)的創(chuàng)建和請(qǐng)求。
[0051]業(yè)務(wù)提供接口在組件注冊(cè)的時(shí)候自動(dòng)生成,并隨同組件存儲(chǔ),而業(yè)務(wù)請(qǐng)求接口是在發(fā)起業(yè)務(wù)請(qǐng)求或調(diào)用組件的時(shí)候動(dòng)態(tài)生成,業(yè)務(wù)請(qǐng)求接口根據(jù)業(yè)務(wù)請(qǐng)求者和業(yè)務(wù)提供者的實(shí)際情況而定,無(wú)需預(yù)先存儲(chǔ)業(yè)務(wù)請(qǐng)求接口。這種方式滿足了組件注冊(cè)的動(dòng)態(tài)特性和節(jié)省內(nèi)存的需求。
[0052]本發(fā)明實(shí)施例提供的技術(shù)方案,通過(guò)采用統(tǒng)一的格式為各個(gè)數(shù)據(jù)源的組件生成業(yè)務(wù)提供接口或業(yè)務(wù)請(qǐng)求接口,實(shí)現(xiàn)了對(duì)各種數(shù)據(jù)源的統(tǒng)一封裝機(jī)制,從而能夠支持包括電信服務(wù)數(shù)據(jù)源在內(nèi)的多種類(lèi)型的數(shù)據(jù)源通過(guò)該交互接口進(jìn)行Mashup業(yè)務(wù)的創(chuàng)建和請(qǐng)求,增強(qiáng)了 Mashup業(yè)務(wù)的可擴(kuò)展性,滿足了用戶的需要。
[0053]為了清楚描述本發(fā)明實(shí)施例的技術(shù)方案,首先,參見(jiàn)圖2,對(duì)本發(fā)明實(shí)施例提供的Mashup系統(tǒng)結(jié)構(gòu)進(jìn)行介紹。在該系統(tǒng)中主要包括如下單元:
[0054]請(qǐng)求消息分析單元(Request Analysis Unit) 201:該單元用于接收來(lái)自客戶端,即圖2中的業(yè)務(wù)請(qǐng)求者200所用的客戶端的各種請(qǐng)求消息,包括mashup部署請(qǐng)求消息,組件注冊(cè)請(qǐng)求消息,業(yè)務(wù)請(qǐng)求消息,并對(duì)接收到的請(qǐng)求消息進(jìn)行分析后轉(zhuǎn)發(fā)到系統(tǒng)中相應(yīng)的單元進(jìn)行處理。
[0055]Mashup部署單兀(Mashup Deployer Unit) 202:該單兀用于處理mashup部署請(qǐng)求消息,將Mashup service數(shù)據(jù)源部署到Mashup服務(wù)器上。并調(diào)用相應(yīng)的單元為Mashupservice數(shù)據(jù)源的組件生成業(yè)務(wù)提供接口。
[0056]組件生成單元(Component Generator Unit)203:為該單元用于生成Mashup數(shù)據(jù)源對(duì)應(yīng)的組件。
[0057]腳本解析單元(Script Parser Unit) 204:該單元用于解析使用動(dòng)態(tài)語(yǔ)言(例如Java Script)描述的Mashup業(yè)務(wù),并且?guī)椭M件生成單元203為該Mashup業(yè)務(wù)生成組件。
[0058]組件注冊(cè)單元(Component Registration Unit)205:該單元用于處理組件注冊(cè)請(qǐng)求消息,并生成與業(yè)務(wù)請(qǐng)求者交互的交互代碼(該交互代碼基于腳本語(yǔ)言),以及為請(qǐng)求組件提供相應(yīng)的代碼。注冊(cè)過(guò)程完成后,該單元還可以調(diào)用組件存儲(chǔ)單元207中存儲(chǔ)的組件和組件詳細(xì)描述。
[0059]Mashable API 創(chuàng)建單元 206:為組件創(chuàng)建Mashable API,該 Mashable API 包括業(yè)務(wù)提供接口和業(yè)務(wù)請(qǐng)求接口。
[0060]組件存儲(chǔ)單兀(Components Repository Unit) 207:該單兀相當(dāng)于一個(gè)存儲(chǔ)池(Pool),用于存儲(chǔ)注冊(cè)后的組件和組件詳細(xì)描述。
[0061]組件請(qǐng)求處理單元(Component Request Unit) 208:該單元用于處理組件請(qǐng)求過(guò)程。
[0062]組件管理單元(Component Management Unit) 209:該單元用于管理與組件使用過(guò)程相關(guān)的一些操作,如驗(yàn)證,鑒權(quán)和計(jì)費(fèi)。圖2中所示的Mashup系統(tǒng)能夠接收來(lái)自業(yè)務(wù)請(qǐng)求者(Requestor) 200的請(qǐng)求,執(zhí)行部署(Deploy)或組件注冊(cè)等過(guò)程,或與外部服務(wù)(External Service)功能210進(jìn)行交互,或與其他的系統(tǒng)如計(jì)費(fèi)(Billing)系統(tǒng)211、認(rèn)證鑒權(quán)系統(tǒng)(如AAA) 212進(jìn)行交互。
[0063]上述只是對(duì)主要功能單元的示例性說(shuō)明,例如,該系統(tǒng)中的組件請(qǐng)求處理單元208中還可以包括腳本執(zhí)行引擎(Script) 2081,用于測(cè)試和執(zhí)行Mashup的腳本描述。
[0064]下面結(jié)合圖2,對(duì)本發(fā)明又一個(gè)實(shí)施例提供的實(shí)現(xiàn)Mashup業(yè)務(wù)的方法進(jìn)行詳細(xì)說(shuō)明。具體包括如下處理:
[0065]11:對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接
□。
[0066]在本發(fā)明實(shí)施例中,將數(shù)據(jù)源分為業(yè)務(wù)聚合服務(wù)(Mashup Service)數(shù)據(jù)源和非Mashup Service數(shù)據(jù)源,對(duì)這兩類(lèi)數(shù)據(jù)源采用不同的方式進(jìn)行注冊(cè)。其中,電信服務(wù)數(shù)據(jù)源屬于非Mashup Service數(shù)據(jù)源。
[0067]采用這種方式是由于,非Mashup Service數(shù)據(jù)源的組件,如Java組件、C++組件、表述性狀態(tài)轉(zhuǎn)移(Representational State Transfer,REST)組件或Web服務(wù)描述語(yǔ)言(WebServices Description Language, WSDL)的 Web 組件,這些組件通常在實(shí)現(xiàn) Mashup 業(yè)務(wù)之前就已經(jīng)發(fā)布或使用且已經(jīng)進(jìn)行了部署,可以直接進(jìn)行組件的注冊(cè)過(guò)程。而對(duì)于MashupService數(shù)據(jù)源,需要在將Mashup Service數(shù)據(jù)源部署在Mashup服務(wù)器上的過(guò)程中生成相應(yīng)的組件。下面分別對(duì)這兩種情況進(jìn)行介紹。
[0068]第一種情況、非Mashup Service數(shù)據(jù)源組件的注冊(cè)
[0069]參見(jiàn)圖3,非Mashup Service數(shù)據(jù)源組件的注冊(cè)過(guò)程,具體包括如下步驟:
[0070]1:注冊(cè)請(qǐng)求者向請(qǐng)求消息分析單元發(fā)送注冊(cè)組件請(qǐng)求消息,該注冊(cè)組件請(qǐng)求消息中攜帶組件的信息,如組件的數(shù)據(jù)和組件標(biāo)識(shí)(ID)。組件ID可以為唯一標(biāo)識(shí)組件的一個(gè)字符串,如“31^”、“麗5”,“1冊(cè)訪虹11^0”,組件ID由組件提供者或組件生成者提供。但不局限于此,組件的信息還可以包括組件關(guān)鍵字,組件關(guān)鍵字可以指示該組件所支持的業(yè)務(wù)類(lèi)型,不同的組件可以有相同的組件關(guān)鍵字,例如,對(duì)組件ID分別為SMS1、SMS2和SMS3的組件,組件關(guān)鍵字都可以為SMS。
[0071]不同組件的注冊(cè)組件請(qǐng)求消息中攜帶的組件信息也不同。
[0072]例如,當(dāng)組件為C++組件時(shí),上述注冊(cè)組件請(qǐng)求消息中攜帶C++的動(dòng)態(tài)鏈接庫(kù)文件(.dll文件)數(shù)據(jù)和組件ID ;當(dāng)所述組件為Java組件時(shí),上述注冊(cè)組件請(qǐng)求消息中攜帶java數(shù)據(jù)包、組件ID和數(shù)據(jù)類(lèi)型描述,本發(fā)明實(shí)施例提供的一種數(shù)據(jù)類(lèi)型描述為對(duì)象名(屬性值1,屬性值2,…);當(dāng)所述組件為REST組件時(shí),上述注冊(cè)組件請(qǐng)求消息中攜帶REST統(tǒng)一資源定位符(Universal Resource Locator, URL)和組件ID ;當(dāng)所述組件為WSDL的Web組件時(shí),上述注冊(cè)組件請(qǐng)求消息中攜帶HTTP URL和組件ID。
[0073]2:請(qǐng)求消息分析單元對(duì)接收到的注冊(cè)組件請(qǐng)求消息進(jìn)行分析后,將該注冊(cè)請(qǐng)求消息轉(zhuǎn)發(fā)至組件注冊(cè)單元。
[0074]3:組件注冊(cè)單元向組件存儲(chǔ)單元發(fā)送組件查詢(Query Component)請(qǐng)求,查詢組件存儲(chǔ)單元中所有已經(jīng)注冊(cè)的組件,判斷是否有相同的組件已經(jīng)注冊(cè)。這里,相同的組件主要指具有相同組件ID的組件。
[0075]4:組件存儲(chǔ)單元接收到組件查詢請(qǐng)求后,在存儲(chǔ)的已注冊(cè)組件的組件ID中,查找是否存在與上述注冊(cè)組件請(qǐng)求消息中攜帶的組件ID (如SMS)相同的組件ID,若存在,則說(shuō)明組件ID為SMS的組件已經(jīng)注冊(cè)了,若不存在說(shuō)明組件ID為SMS的組件還未注冊(cè)。組件存儲(chǔ)單元反饋查詢結(jié)果給組件注冊(cè)單元。
[0076]5a:如果有相同ID的組件注冊(cè),則組件注冊(cè)單元反饋發(fā)送注冊(cè)失敗信息給注冊(cè)請(qǐng)求者,以使注冊(cè)請(qǐng)求者及時(shí)獲知注冊(cè)失敗進(jìn)行后續(xù)的處理,如注冊(cè)請(qǐng)求者可以更新組件ID,例如,將組件ID的字符串SMS更改為SMS1、SMS2或SMS3,重新發(fā)起注冊(cè)流程。
[0077]5b:如果沒(méi)有相同ID的組件注冊(cè),則組件注冊(cè)單元發(fā)送交互接口生成請(qǐng)求(Generate Script Adaptor)給 Mashable API 創(chuàng)建單兀。Mashable API 創(chuàng)建單兀為相應(yīng)的組件生成業(yè)務(wù)提供接口,對(duì)不同的數(shù)據(jù)源的組件生成業(yè)務(wù)提供接口時(shí)采用的方式和代碼也不同。
[0078]例如,Mashable API創(chuàng)建單元根據(jù)動(dòng)態(tài)鏈接庫(kù)文件(.dll文件)數(shù)據(jù)和組件ID,使用Java Native Interface (JNI)為C++組件生成業(yè)務(wù)提供接口 ;
[0079]根據(jù)java數(shù)據(jù)包和組件ID,以Java類(lèi)和組件ID為Java組件生成業(yè)務(wù)提供接口,該業(yè)務(wù)提供接口通過(guò)Java提供的類(lèi)和函數(shù)調(diào)用實(shí)際的業(yè)務(wù);
[0080]根據(jù)REST URL [HTTP URL]和組件ID為REST組件生成業(yè)務(wù)提供接口。
[0081]當(dāng)所述組件為Web服務(wù)描述語(yǔ)言WSDL的Web組件時(shí),根據(jù)所述Web組件的HTTPURL和組件ID生成業(yè)務(wù)提供接口。
[0082]上述生成的業(yè)務(wù)提供接口具有統(tǒng)一的格式,如第一格式。
[0083]6b Cashable API創(chuàng)建單元向組件注冊(cè)單元返回創(chuàng)建成功的信息,以及為組件的生成業(yè)務(wù)提供接口的參數(shù)。若創(chuàng)建失敗,MashabIe API創(chuàng)建單元向組件注冊(cè)單元發(fā)送創(chuàng)建失敗消息,圖中僅示出了創(chuàng)建成功的場(chǎng)景。
[0084]7b:組件注冊(cè)單元發(fā)送存儲(chǔ)消息(Store Component)給組件存儲(chǔ)單元,組件存儲(chǔ)單元存儲(chǔ)上述注冊(cè)成功的組件及其相關(guān)信息,如該組件的業(yè)務(wù)提供接口,組件的數(shù)據(jù)和組件ID等。
[0085]Sb:組件存儲(chǔ)成功后,組件存儲(chǔ)單元返回組件注冊(cè)單元存儲(chǔ)成功信息。
[0086]%、組件注冊(cè)單元返回注冊(cè)組件成功消息給請(qǐng)求消息分析單元。
[0087]10b、請(qǐng)求消息分析單元反饋?zhàn)?cè)組件成功消息給注冊(cè)請(qǐng)求者。
[0088]另:若Sb中組件存儲(chǔ)不成功,后續(xù)步驟反饋組件注冊(cè)失敗的信息給注冊(cè)請(qǐng)求者。
[0089]第二種情況、Mashup Service數(shù)據(jù)源組件的注冊(cè)
[0090]首先通過(guò)將Mashup Service數(shù)據(jù)源部署在Mashup服務(wù)器上的過(guò)程生成組件,參見(jiàn)圖4 (a),包括如下步驟:
[0091]401:業(yè)務(wù)部署者發(fā)送Mashup部署請(qǐng)求消息至請(qǐng)求消息分析單元,該消息包括Mashup業(yè)務(wù)和參數(shù)。Mashup業(yè)務(wù)主要由Mashup腳本描述構(gòu)成,參數(shù)主要包括組件ID,業(yè)務(wù)描述和訪問(wèn)策略。
[0092]應(yīng)當(dāng)注意到,在進(jìn)行組件注冊(cè)之前,本發(fā)明實(shí)施例還包括按照預(yù)定結(jié)構(gòu)創(chuàng)建Mashup業(yè)務(wù),例如,業(yè)務(wù)開(kāi)發(fā)者按照組件導(dǎo)入部分、命名空間定義部分、語(yǔ)法定義部分、操作部分四層結(jié)構(gòu)利用動(dòng)態(tài)腳本語(yǔ)言(如JavaScript)創(chuàng)建Mashup業(yè)務(wù)。傳統(tǒng)的Mashup業(yè)務(wù)開(kāi)發(fā)方法,由于Mashup數(shù)據(jù)源的格式不統(tǒng)一,業(yè)務(wù)開(kāi)發(fā)者需要同時(shí)掌握Web Service、Rest、C++、Java等具體的編程技術(shù),開(kāi)發(fā)難度大、對(duì)業(yè)務(wù)開(kāi)發(fā)者的要求高。而采用本發(fā)明的這種方式使業(yè)務(wù)開(kāi)發(fā)者無(wú)需額外的學(xué)習(xí)其他的開(kāi)發(fā)語(yǔ)言(包括Mashup Server標(biāo)簽語(yǔ)言和網(wǎng)頁(yè)語(yǔ)言),只通過(guò)使用擴(kuò)展的動(dòng)態(tài)腳本語(yǔ)言就能夠創(chuàng)建Mashup業(yè)務(wù),降低了業(yè)務(wù)開(kāi)發(fā)難度和對(duì)業(yè)務(wù)開(kāi)發(fā)者的要求。
[0093]402:請(qǐng)求消息分析單元對(duì)Mashup部署請(qǐng)求消息進(jìn)行分析后,轉(zhuǎn)發(fā)該消息到Mashup部署單元。
[0094]403:Mashup部署單元向組件生成單元發(fā)送組件生成請(qǐng)求,請(qǐng)求組件生成單元為該Mashup Service數(shù)據(jù)源生成組件。
[0095]404:組件生成單元發(fā)送腳本解析請(qǐng)求,請(qǐng)求腳本解析單元解析Mashup業(yè)務(wù)的腳本描述并獲取其中的關(guān)鍵字及參數(shù),關(guān)鍵字包括導(dǎo)入(imports),命名空間(namespace),模式(schema),操作(operation)。
[0096]405:腳本解析單元將解析結(jié)果,如關(guān)鍵字和參數(shù)等,反饋至組件生成單元。
[0097]406:組件生成單元根據(jù)腳本解析單元反饋的參數(shù)和imports, namespace,schema, operation等關(guān)鍵字來(lái)解析得到Mashup業(yè)務(wù)的相應(yīng)組件和操作。
[0098]組件生成單元按照預(yù)定結(jié)構(gòu)解析得到Mashup業(yè)務(wù)的相應(yīng)組件,該預(yù)定結(jié)構(gòu)與創(chuàng)建Mashup業(yè)務(wù)時(shí)采用的預(yù)定結(jié)構(gòu)一致。參見(jiàn)圖5,在該預(yù)定結(jié)構(gòu)中包括組件導(dǎo)入部分(Component imports)、命名空間定義部分(Mashup namespace definition)、語(yǔ)法定義部分(Schema definition)、操作(Operation)部分。其中,操作部分可以包括一個(gè)或多個(gè)操作,如包括操作I至操作n,n為序號(hào)。參見(jiàn)圖6,為本發(fā)明實(shí)施例提供的一種預(yù)定結(jié)構(gòu)的示例。
[0099]Mashup業(yè)務(wù)的相應(yīng)組件是指創(chuàng)建Mashup業(yè)務(wù)時(shí)所導(dǎo)入的組件,利用組件ID、關(guān)鍵字及參數(shù)解析得到該所導(dǎo)入的一個(gè)或多個(gè)組件。例如,當(dāng)組件ID為identifier時(shí),根據(jù)導(dǎo)入操作的命令importComponent (“identifier”)可以解析出Mashup業(yè)務(wù)中組件ID為identifier 的組件。
[0100]407:在解析獲得相應(yīng)的組件后,組件生成單元將部署成功消息發(fā)送至Mashup部
署單元。
[0101]408 =Mashup部署單元反饋部署成功消息至請(qǐng)求消息分析單元。
[0102]409:請(qǐng)求消息分析單元轉(zhuǎn)發(fā)該部署成功消息給業(yè)務(wù)部署者。
[0103]注:若在解析或部署過(guò)程中出現(xiàn)錯(cuò)誤,那么407-409中反饋部署失敗消息。
[0104]當(dāng)部署成功后,對(duì)Mashup Service數(shù)據(jù)源的組件進(jìn)行注冊(cè),注冊(cè)過(guò)程與圖3所示的過(guò)程基本相同,不再贅述。主要的區(qū)別點(diǎn)在于,參見(jiàn)圖4 (b),進(jìn)行注冊(cè)可以在該組件生成后,直接由組件生成單元向組件存儲(chǔ)單元發(fā)送注冊(cè)查詢請(qǐng)求(Query Component),參見(jiàn)圖4 (b)中步驟411,發(fā)起組件注冊(cè)流程,在步驟412中由組件存儲(chǔ)單元向組件生成單元反饋查詢結(jié)果,這種處理方式簡(jiǎn)化了處理的流程。其中圖4(b)中的步驟413和414參見(jiàn)圖3中的步驟5b和6b,步驟415和416參見(jiàn)圖3中的7b和8b。在注冊(cè)過(guò)程中,對(duì)Mashup Service數(shù)據(jù)源的組件,根據(jù)Mashup Service數(shù)據(jù)源的腳本描述(如javascript代碼)生成業(yè)務(wù)提供接口。
[0105]通過(guò)上述的組件注冊(cè)過(guò)程,各個(gè)數(shù)據(jù)源的組件都具有了業(yè)務(wù)提供接口,利用該業(yè)務(wù)提供接口可以直接調(diào)用實(shí)際的業(yè)務(wù)。如Java組件可以利用業(yè)務(wù)提供接口創(chuàng)建java類(lèi)的對(duì)象,調(diào)用java的函數(shù)。
[0106]12:根據(jù)業(yè)務(wù)請(qǐng)求,在已注冊(cè)的所述組件中獲取相應(yīng)的組件,并按照統(tǒng)一的第二格式為獲取到的所述組件動(dòng)態(tài)生成業(yè)務(wù)請(qǐng)求接口。
[0107]對(duì)所有組件生成的業(yè)務(wù)請(qǐng)求接口具有統(tǒng)一的格式,如第二格式。與業(yè)務(wù)請(qǐng)求接口相對(duì)應(yīng)的第二格式可以與業(yè)務(wù)提供接口所對(duì)應(yīng)的第一格式相同,也可以不同。
[0108]本發(fā)明實(shí)施例的技術(shù)方案提供一種門(mén)戶功能給業(yè)務(wù)請(qǐng)求者,業(yè)務(wù)請(qǐng)求者可以查詢注冊(cè)的組件。對(duì)于每個(gè)已經(jīng)注冊(cè)的組件,Mashup服務(wù)器按需生成業(yè)務(wù)請(qǐng)求接口。所謂按需主要指根據(jù)業(yè)務(wù)請(qǐng)求者的狀態(tài)和所述組件的數(shù)據(jù)源的狀態(tài)來(lái)為組件生成業(yè)務(wù)請(qǐng)求接口。
[0109]業(yè)務(wù)請(qǐng)求者的狀態(tài)主要包括業(yè)務(wù)請(qǐng)求者的發(fā)起端狀態(tài)(如傳統(tǒng)終端或新型終端)、業(yè)務(wù)呈現(xiàn)方式和響應(yīng)時(shí)間中的一種或多種;組件的數(shù)據(jù)源的狀態(tài)包括數(shù)據(jù)源的負(fù)載能力、數(shù)據(jù)源的組件的服務(wù)質(zhì)量(Quality of Service, QoS)和數(shù)據(jù)源的可靠性。
[0110]當(dāng)上述的狀態(tài)發(fā)生變化時(shí),生成的業(yè)務(wù)請(qǐng)求接口也發(fā)生變化。例如,當(dāng)用戶(業(yè)務(wù)請(qǐng)求者)通過(guò)瀏覽器訪問(wèn)已注冊(cè)組件的注冊(cè)信息變化時(shí),生成的業(yè)務(wù)請(qǐng)求接口也會(huì)發(fā)生變化。所以業(yè)務(wù)請(qǐng)求接口是動(dòng)態(tài)生成的,并不預(yù)先進(jìn)行存儲(chǔ),避免了由于預(yù)先存儲(chǔ)業(yè)務(wù)請(qǐng)求接口而需要占用大量?jī)?nèi)存所帶來(lái)的問(wèn)題,動(dòng)態(tài)生成業(yè)務(wù)請(qǐng)求接口的方式能夠滿足組件注冊(cè)的動(dòng)態(tài)特性和節(jié)省內(nèi)存的需求。
[0111]下面結(jié)合圖7所示的場(chǎng)景,具體說(shuō)明基于業(yè)務(wù)請(qǐng)求者的查詢動(dòng)態(tài)生成業(yè)務(wù)請(qǐng)求接口的流程。
[0112]701:業(yè)務(wù)請(qǐng)求者發(fā)送業(yè)務(wù)請(qǐng)求消息到請(qǐng)求消息分析單元,該業(yè)務(wù)請(qǐng)求消息中攜帶組件關(guān)鍵字,或者組件ID。
[0113]702:請(qǐng)求消息分析單元分析業(yè)務(wù)請(qǐng)求消息后,將業(yè)務(wù)請(qǐng)求消息轉(zhuǎn)發(fā)給組件請(qǐng)求處
理單元。
[0114]703:組件請(qǐng)求處理單元發(fā)送組件查詢請(qǐng)求到組件存儲(chǔ)單元中查詢所請(qǐng)求的組件。
[0115]704:組件存儲(chǔ)單元將查詢結(jié)果返回給組件請(qǐng)求處理單元;
[0116]如果組件存儲(chǔ)單元中有對(duì)應(yīng)的注冊(cè)組件,即已注冊(cè)組件的組件ID與所述業(yè)務(wù)請(qǐng)求消息中攜帶的組件關(guān)鍵字匹配時(shí),則查詢成功,執(zhí)行步驟705。
[0117]如果組件存儲(chǔ)單元中沒(méi)有組件ID對(duì)應(yīng)的組件信息,即已注冊(cè)組件的組件ID與所述業(yè)務(wù)請(qǐng)求消息中攜帶的組件關(guān)鍵字不匹配時(shí),則查詢失敗,則發(fā)送查詢失敗信息給請(qǐng)求消息分析單元。
[0118]705:判斷組件請(qǐng)求處理單元自身能否生成業(yè)務(wù)請(qǐng)求接口,若組件請(qǐng)求處理單元自身能夠生成該組件的業(yè)務(wù)請(qǐng)求接口時(shí),執(zhí)行步驟708;[0119]當(dāng)組件請(qǐng)求處理單元無(wú)法生成相應(yīng)的業(yè)務(wù)請(qǐng)求接口時(shí),則執(zhí)行步驟706。
[0120]706:組件請(qǐng)求處理單元發(fā)送交互接口生成請(qǐng)求到Mashable API創(chuàng)建單元以創(chuàng)建該組件的業(yè)務(wù)請(qǐng)求接口。
[0121]707 =Mashable API創(chuàng)建單元?jiǎng)?chuàng)建業(yè)務(wù)請(qǐng)求接口并返回創(chuàng)建結(jié)果,當(dāng)創(chuàng)建成功時(shí),執(zhí)行步驟708。
[0122]其中,當(dāng)存在多個(gè)組件,這些組件的組件ID都與業(yè)務(wù)請(qǐng)求消息中的組件關(guān)鍵字相匹配時(shí),組件請(qǐng)求處理單元或Mashable API創(chuàng)建單元根據(jù)業(yè)務(wù)請(qǐng)求者的狀態(tài)和已注冊(cè)組件的數(shù)據(jù)源的狀態(tài),選擇合適的已注冊(cè)組件,為所選擇的組件動(dòng)態(tài)生成業(yè)務(wù)請(qǐng)求接口。
[0123]708:當(dāng)生成業(yè)務(wù)請(qǐng)求接口時(shí),組件請(qǐng)求處理單元發(fā)送應(yīng)答消息,如接口生成成功消息至請(qǐng)求消息分析單元。
[0124]709:請(qǐng)求消息分析單元向業(yè)務(wù)請(qǐng)求者反饋接口生成成功消息。
[0125]下面以一個(gè)具體的Mashup業(yè)務(wù)“Etour”為例進(jìn)行說(shuō)明。
[0126]Mashup 業(yè)務(wù) Etour 是由 weather 業(yè)務(wù)和 FlightSearchService 業(yè)務(wù)組成。對(duì)weather業(yè)務(wù),如果組件存儲(chǔ)單元中存儲(chǔ)了組件關(guān)鍵字為weather系列的組件,例如,Java組件weather業(yè)務(wù),REST組件weather業(yè)務(wù)等。業(yè)務(wù)請(qǐng)求者請(qǐng)求Etour業(yè)務(wù)時(shí),Mashup服務(wù)器根據(jù)組件的數(shù)據(jù)源的狀態(tài)(負(fù)載,組件的QoS,數(shù)據(jù)源可靠性等)和業(yè)務(wù)請(qǐng)求者的狀態(tài)(請(qǐng)求者所使用的終端,業(yè)務(wù)呈現(xiàn)方式,響應(yīng)時(shí)間等)選擇最合適的組件,如Java組件,并為該組件動(dòng)態(tài)地生成業(yè)務(wù)請(qǐng)求接口,該業(yè)務(wù)請(qǐng)求接口包括組件調(diào)用協(xié)議,調(diào)用函數(shù)和參數(shù)等信息。對(duì)FlightSearchService業(yè)務(wù)采用相同的方式進(jìn)行處理。
[0127]業(yè)務(wù)請(qǐng)求者根據(jù)業(yè)務(wù)請(qǐng)求接口的協(xié)議,調(diào)用函數(shù)和參數(shù)等,請(qǐng)求調(diào)用實(shí)際的業(yè)務(wù)。業(yè)務(wù)請(qǐng)求接口涉及到的調(diào)用函數(shù),調(diào)用協(xié)議和參數(shù)的舉例如下:
[0128]java組件weather業(yè)務(wù)的業(yè)務(wù)請(qǐng)求接口對(duì)應(yīng)于Java調(diào)用函數(shù)Weather (city),city是參數(shù),指示城市名,調(diào)用協(xié)議為SOAP協(xié)議,還可以包括其它參數(shù),如指示能夠提供的QoS的參數(shù),該參數(shù)指示響應(yīng)時(shí)間為0.3s,反饋信息格式為SMS;
[0129]WSDL的Web組件weather業(yè)務(wù)的業(yè)務(wù)請(qǐng)求接口對(duì)應(yīng)于提供根據(jù)WSDL描述提供的調(diào)用函數(shù),參數(shù)是x,y,其中X和I分別表示經(jīng)度和緯度,綁定SOAP調(diào)用協(xié)議。還可以包括其它參數(shù),如指示能夠提供的QoS的參數(shù),該參數(shù)指示響應(yīng)時(shí)間是0.5s,反饋信息格式為網(wǎng)頁(yè)。
[0130]13:利用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向所述所需的組件請(qǐng)求業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng)求者。
[0131]將業(yè)務(wù)提供接口和業(yè)務(wù)請(qǐng)求接口進(jìn)行匹配,即將業(yè)務(wù)提供接口和業(yè)務(wù)請(qǐng)求接口進(jìn)行匹配,一個(gè)業(yè)務(wù)提供接口可以對(duì)應(yīng)于一個(gè)業(yè)務(wù)請(qǐng)求接口,一個(gè)業(yè)務(wù)提供接口也可以對(duì)應(yīng)于多個(gè)業(yè)務(wù)請(qǐng)求接口。業(yè)務(wù)提供接口包括對(duì)一個(gè)或多個(gè)業(yè)務(wù)的調(diào)用,業(yè)務(wù)請(qǐng)求接口包括對(duì)單個(gè)或組合的mashup業(yè)務(wù)的調(diào)用。一個(gè)組件所對(duì)應(yīng)的業(yè)務(wù)提供接口和業(yè)務(wù)請(qǐng)求接口構(gòu)成這個(gè)組件的Mashable API,Mashable API是組件對(duì)外部暴露的接口。
[0132]下面以一個(gè)具體的Mashup業(yè)務(wù)“Etour”為例說(shuō)明組件的使用過(guò)程。
[0133]組件的使用過(guò)程包括根據(jù)業(yè)務(wù)請(qǐng)求消息查詢已經(jīng)注冊(cè)的組件,注冊(cè)的組件按照簡(jiǎn)單的負(fù)載均衡的原理(如順序調(diào)用,隨機(jī)分配等)以及業(yè)務(wù)創(chuàng)建者的實(shí)際需求被聚合(Mashup)。按照操作(operation)定義調(diào)用相應(yīng)的導(dǎo)入組件。組件使用的mashable API可以用標(biāo)準(zhǔn)的HTML標(biāo)記〈script〉導(dǎo)入,例如:
[0134]〈script type=' text/javascript' src= ^./stub/sms' ></script)
[0135]其中,“ sms ”是一個(gè)組件ID.[0136]表1
【權(quán)利要求】
1.一種實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的方法,其特征在于,所述方法包括: 對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接口; 根據(jù)業(yè)務(wù)請(qǐng)求者的業(yè)務(wù)請(qǐng)求消息,在已注冊(cè)的所述組件中查詢所需的組件,并按照統(tǒng)一的第二格式為所述所需的組件生成業(yè)務(wù)請(qǐng)求接口,將所述業(yè)務(wù)提供接口和所述業(yè)務(wù)請(qǐng)求接口進(jìn)行匹配; 利用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向所述所需的組件調(diào)用業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng)求者。
2.根據(jù)權(quán)利 要求1所述的方法,其特征在于,所述對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接口包括: 接收注冊(cè)組件請(qǐng)求消息,所述注冊(cè)組件請(qǐng)求消息中攜帶組件標(biāo)識(shí)ID ; 在存儲(chǔ)的已注冊(cè)組件中,查詢所述組件ID所對(duì)應(yīng)的組件是否已經(jīng)注冊(cè),若已經(jīng)注冊(cè),更新所述組件ID,重新執(zhí)行注冊(cè)流程,若未注冊(cè),按照統(tǒng)一的第一格式生成業(yè)務(wù)提供接口并存儲(chǔ)。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接口包括: 當(dāng)所述組件為C++組件時(shí),根據(jù)C++組件的動(dòng)態(tài)鏈接庫(kù)文件和組件ID,通過(guò)Java本地接口 Java Native Interface生成所述業(yè)務(wù)提供接口 ; 當(dāng)所述組件為Java組件時(shí),根據(jù)Java組件的java數(shù)據(jù)包和組件ID生成所述業(yè)務(wù)提供接口 ; 當(dāng)所述組件為表述性狀態(tài)轉(zhuǎn)移REST組件時(shí),根據(jù)所述REST組件的REST統(tǒng)一資源定位符URL和組件ID生成所述業(yè)務(wù)提供接口 ; 當(dāng)所述組件為Web服務(wù)描述語(yǔ)言WSDL的Web組件時(shí),根據(jù)所述Web組件的HTTP URL和組件ID生成所述業(yè)務(wù)提供接口。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)業(yè)務(wù)請(qǐng)求者的業(yè)務(wù)請(qǐng)求消息,在已注冊(cè)的所述組件中查詢所需的組件包括: 接收業(yè)務(wù)請(qǐng)求消息,所述業(yè)務(wù)請(qǐng)求消息中攜帶組件關(guān)鍵字; 當(dāng)已注冊(cè)組件的組件ID與所述業(yè)務(wù)請(qǐng)求消息中攜帶的組件關(guān)鍵字匹配時(shí),獲取所述已注冊(cè)的組件。
5.根據(jù)權(quán)利要求1或4所述的方法,其特征在于,所述按照統(tǒng)一的第二格式為所述所需的組件生成業(yè)務(wù)請(qǐng)求接口包括:根據(jù)業(yè)務(wù)請(qǐng)求者的狀態(tài)和所述已注冊(cè)組件的數(shù)據(jù)源的狀態(tài),選擇合適的已注冊(cè)組件,并為所述選擇的組件動(dòng)態(tài)生成業(yè)務(wù)請(qǐng)求接口 ; 所述業(yè)務(wù)請(qǐng)求者的狀態(tài)至少包括如下的一種或其組合: 業(yè)務(wù)請(qǐng)求者所使用的終端、業(yè)務(wù)呈現(xiàn)方式和響應(yīng)時(shí)間; 所述組件的數(shù)據(jù)源的狀態(tài)至少包括如下的一種或其組合: 所述數(shù)據(jù)源的負(fù)載能力、所述數(shù)據(jù)源的組件的服務(wù)質(zhì)量QoS和所述數(shù)據(jù)源的可靠性。
6.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,在所述對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接口之前,所述方法還包括: 所述數(shù)據(jù)源包括業(yè)務(wù)聚合服務(wù)Mashup service數(shù)據(jù)源和非Mashup service數(shù)據(jù)源; 在將Mashup service數(shù)據(jù)源部署在Mashup服務(wù)器上的部署過(guò)程中,對(duì)所述Mashupservice數(shù)據(jù)源的Mashup業(yè)務(wù)按照預(yù)定結(jié)構(gòu)進(jìn)行解析得到所述Mashup service數(shù)據(jù)源的組件。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,在將Mashupservice數(shù)據(jù)源部署在Mashup服務(wù)器上之前,所述方法還包括: 利用動(dòng)態(tài)腳本語(yǔ)言按照如下預(yù)定結(jié)構(gòu)創(chuàng)建Mashup業(yè)務(wù): 組件導(dǎo)入部分、命名空間定義部分、語(yǔ)法定義部分和操作定義部分。
8.一種實(shí)現(xiàn)業(yè)務(wù)聚合Mashup業(yè)務(wù)的裝置,其特征在于,所述裝置包括: 業(yè)務(wù)提供接口生成單元,用于對(duì)數(shù)據(jù)源的組件進(jìn)行注冊(cè)并按照統(tǒng)一的第一格式為所述組件生成業(yè)務(wù)提供接口; 業(yè)務(wù)請(qǐng)求接口生成單元,用于根據(jù)業(yè)務(wù)請(qǐng)求者的業(yè)務(wù)請(qǐng)求消息,在已注冊(cè)的所述組件中查詢所需的組件,并按照統(tǒng)一的第二格式為所述所需的組件生成業(yè)務(wù)請(qǐng)求接口,將所述業(yè)務(wù)提供接口和所述業(yè)務(wù)請(qǐng)求接口進(jìn)行匹配; 業(yè)務(wù)實(shí)現(xiàn)單元,用于利用所述業(yè)務(wù)請(qǐng)求接口接收所述業(yè)務(wù)請(qǐng)求消息,利用所述業(yè)務(wù)提供接口向所述所需的組件調(diào)用業(yè)務(wù),利用所述業(yè)務(wù)請(qǐng)求接口將生成的Mashup業(yè)務(wù)應(yīng)答消息發(fā)送至業(yè)務(wù)請(qǐng) 求者。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述數(shù)據(jù)源包括業(yè)務(wù)聚合服務(wù)Mashupservice數(shù)據(jù)源和非Mashup service數(shù)據(jù)源,所述裝置還包括: 組件獲得單元,用于在將Mashup service數(shù)據(jù)源部署在Mashup服務(wù)器上的部署過(guò)程中,對(duì)所述Mashup service數(shù)據(jù)源的Mashup業(yè)務(wù)按照預(yù)定結(jié)構(gòu)進(jìn)行解析得到所述Mashupservice數(shù)據(jù)源的組件。
10.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括業(yè)務(wù)創(chuàng)建單元,用于利用動(dòng)態(tài)腳本語(yǔ)言按照如下預(yù)定結(jié)構(gòu)創(chuàng)建Mashup業(yè)務(wù): 組件導(dǎo)入部分、命名空間定義部分、語(yǔ)法定義部分和操作定義部分。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述業(yè)務(wù)提供接口生成單元包括: 第一接收模塊,用于接收注冊(cè)組件請(qǐng)求消息,所述注冊(cè)組件請(qǐng)求消息中攜帶組件ID ;查詢處理模塊,用于在存儲(chǔ)的已注冊(cè)組件中,查詢所述組件ID所對(duì)應(yīng)的組件是否已經(jīng)注冊(cè),若已經(jīng)注冊(cè),更新所述組件ID,重新執(zhí)行注冊(cè)流程,若未注冊(cè),按照統(tǒng)一的第一格式生成業(yè)務(wù)提供接口并存儲(chǔ)。
12.根據(jù)權(quán)利要求8所述的裝置,其特征在于, 所述業(yè)務(wù)請(qǐng)求接口生成單元包括: 第二接收模塊,用于接收業(yè)務(wù)請(qǐng)求消息,所述業(yè)務(wù)請(qǐng)求消息中攜帶組件關(guān)鍵字; 獲取模塊,用于當(dāng)已注冊(cè)組件的組件ID與所述業(yè)務(wù)請(qǐng)求消息中攜帶的組件關(guān)鍵字匹配時(shí),獲取所述已注冊(cè)的組件。
13.根據(jù)權(quán)利要求8或12所述的裝置,其特征在于, 所述業(yè)務(wù)請(qǐng)求接口生成單元進(jìn)一步包括: 生成模塊,用于根據(jù)業(yè)務(wù)請(qǐng)求者的狀態(tài)和所述已注冊(cè)組件的數(shù)據(jù)源的狀態(tài),選擇合適的已注冊(cè)組件,并為所述選擇的組件動(dòng)態(tài)生成業(yè)務(wù)請(qǐng)求接口。
【文檔編號(hào)】H04L29/08GK103944902SQ201410162733
【公開(kāi)日】2014年7月23日 申請(qǐng)日期:2010年8月13日 優(yōu)先權(quán)日:2010年8月13日
【發(fā)明者】倪瑞特·阿芒哥, 庫(kù)塔斯哇拉·樸拉胡, 馬赫斯哇拉·瑞迪, 陳珊, 馬其鋒 申請(qǐng)人:華為技術(shù)有限公司