專利名稱:生成和執(zhí)行網(wǎng)絡(luò)服務(wù)描述語言調(diào)用流程實(shí)現(xiàn)的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)一般涉及改進(jìn)的數(shù)據(jù)處理系統(tǒng)和方法。更具體地,本申請(qǐng)針對(duì)于 網(wǎng)絡(luò)服務(wù)描述語言調(diào)用流程實(shí)現(xiàn)的自動(dòng)生成和自動(dòng)執(zhí)行。
背景技術(shù):
會(huì)話啟動(dòng)協(xié)議(SIP)是用來建立多媒體會(huì)話的信令協(xié)議。SIP.是因特網(wǎng)協(xié) 議(IP)多媒體子系統(tǒng)(IMS)架構(gòu)中的核心協(xié)議。用于JAVA 2平臺(tái)企業(yè)版(J2EE) 應(yīng)用服務(wù)器環(huán)境的SIP編程模型由SIP小服務(wù)程序(servlet)容器組成。應(yīng)用被 構(gòu)造為小服務(wù)程序邏輯,并且,通過容器來處理低級(jí)通信。
SIP編程模型利用調(diào)用流程的片段,而將其自身提供給關(guān)聯(lián)的小服務(wù)程 序。典型地,復(fù)雜的應(yīng)用將具有作為其實(shí)現(xiàn)的一部分的多個(gè)小服務(wù)程序,其 中,各個(gè)小服務(wù)程序?qū)⑻幚砹鞒痰牟煌矫?。通過在調(diào)用流程中的特定點(diǎn)上 設(shè)置作為消息處理機(jī)的另一個(gè)小服務(wù)程序,來實(shí)現(xiàn)小服務(wù)程序之間的交遞 (hand-off)。
已有以可擴(kuò)展標(biāo)記語言(XML)格式描述SIP調(diào)用流程的很多努力。通常 可視化地表示SIP調(diào)用流程。調(diào)用流程描述SIP請(qǐng)求和HTTP請(qǐng)求的次序。 此次序是理想的(idealistic);事實(shí)上,亂序遞交可能影響交換。然而,典型地, 協(xié)議定義可用來推出協(xié)議的特定優(yōu)先規(guī)則??蓪⒄{(diào)用流程劃分為片段,每個(gè) 片段表示調(diào)用流程邏輯的小片(snippet)。
超文本傳送協(xié)議(HTTP)是萬維網(wǎng)的基礎(chǔ)傳輸協(xié)議中的一個(gè)。用于處理網(wǎng) 絡(luò)請(qǐng)求的典型的編程模型是經(jīng)由HTTP小服務(wù)程序編程模型。面向服務(wù)的架 構(gòu)(SOA)是軟件之間的標(biāo)準(zhǔn)化接口 ,使得一個(gè)程序可利用另 一個(gè)程序的功能 (服務(wù))。典型地,SOA引用網(wǎng)絡(luò)服務(wù)。簡單對(duì)象訪問協(xié)議(SOAP)是用于訪問 網(wǎng)絡(luò)上的服務(wù)的、基于XML的基于消息的協(xié)議。SOAP采用XML語法,以 在使用HTTP的因特網(wǎng)上來發(fā)送文本命令。
集中(converged)應(yīng)用是在不同協(xié)議上通信、以完成單個(gè)目的的應(yīng)用。典 型地,每個(gè)協(xié)議交互包含其自己的會(huì)話。集中應(yīng)用橋接(bridge)兩個(gè)或更多會(huì)
話。實(shí)現(xiàn)集中應(yīng)用的一種方式為通過會(huì)話相似性(affinity),其中,相關(guān)的SIP 和HTTP會(huì)話被關(guān)聯(lián),并存活(live)于特定群集成員中,并且,將屬于每個(gè)類 型的會(huì)話的所有請(qǐng)求路由到該特定群集成員。
發(fā)明內(nèi)容
說明性實(shí)施例意識(shí)到現(xiàn)有技術(shù)的缺點(diǎn),并提供了開發(fā)工具,其接收具有
SIP/調(diào)用流程交互的擴(kuò)展的網(wǎng)絡(luò)服務(wù)描述語言。該開發(fā)工具允許用戶選擇調(diào)
用流程中的瑣碎的消息交換。該開發(fā)工具可自動(dòng)生成用于所選消息交換的小
服務(wù)程序,以形成將在集中應(yīng)用引擎中執(zhí)行的應(yīng)用的模板表單(template
form)??商鎿Q地,開發(fā)工具可生成可在解釋引擎中解釋的應(yīng)用的模板表單。
隨后,用戶可訪問(dropin)較高級(jí)的商業(yè)邏輯。將自動(dòng)生成的小服務(wù)程序、或
要解釋的應(yīng)用的模板表單配置為傳遞到包括最后的消息內(nèi)容的網(wǎng)絡(luò)服務(wù)信 自
在一個(gè)說明性實(shí)施例中,在用于執(zhí)行具有調(diào)用流程交互的集中網(wǎng)絡(luò)服務(wù)
應(yīng)用的數(shù)據(jù)處理系統(tǒng)中存在一種方法。該方法包括接收擴(kuò)展描述語言文檔, 其描述一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件,已在其中嵌入了用于一個(gè)或多個(gè)調(diào)用 流程片段的調(diào)用流程描述,并且,其包括至少一個(gè)調(diào)用流程綁定。所述至少 一個(gè)調(diào)用流程綁定將交互操作與所述一個(gè)或多個(gè)調(diào)用流程片段中的給定調(diào)用 流程片段中的綁定點(diǎn)相關(guān)聯(lián)。該方法還包括從所述一個(gè)或多個(gè)調(diào)用流程片 段中選擇一個(gè)或多個(gè)消息交換;自動(dòng)生成用于一個(gè)或多個(gè)所選消息交換中的 每個(gè)的實(shí)現(xiàn),以形成應(yīng)用模板;為一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件提供應(yīng)用模 板中的商業(yè)邏輯,以形成集中應(yīng)用;以及執(zhí)行集中應(yīng)用。
在一個(gè)示例實(shí)施例中,該描述語言文檔是網(wǎng)絡(luò)服務(wù)描述語言文檔。在另 一個(gè)示例實(shí)施例中,所述一個(gè)或多個(gè)調(diào)用流程片段包括一個(gè)或多個(gè)會(huì)話啟動(dòng) 協(xié)議調(diào)用流程片段。
在另 一個(gè)示例實(shí)施例中,從所述一個(gè)或多個(gè)調(diào)用流程片段中選擇一個(gè)或 多個(gè)消息交換包括從用戶接收一個(gè)或多個(gè)消息交換的選擇。
在另 一個(gè)示例實(shí)施例中,自動(dòng)生成用于一個(gè)或多個(gè)所選消息交換中的每 個(gè)的實(shí)現(xiàn)包括自動(dòng)生成一個(gè)或多個(gè)小服務(wù)程序。所述一個(gè)或多個(gè)小服務(wù)程 序中的每個(gè)對(duì)應(yīng)于所述一個(gè)或多個(gè)調(diào)用流程片段中的一個(gè)。
在另 一個(gè)示例實(shí)施例中,所述一個(gè)或多個(gè)小服務(wù)程序包括一個(gè)或多個(gè)會(huì)
話啟動(dòng)協(xié)議小服務(wù)程序。在另一個(gè)示例實(shí)施例中,執(zhí)行集中應(yīng)用包括在集 中應(yīng)用執(zhí)行引擎中執(zhí)行應(yīng)用模板。在另一個(gè)示例實(shí)施例中,執(zhí)行集中應(yīng)用包
括在解釋引擎中解釋應(yīng)用模板。
在另一個(gè)說明性實(shí)施例中,提供了計(jì)算機(jī)程序產(chǎn)品,其包括具有計(jì)算機(jī) 可讀程序的計(jì)算機(jī)可用介質(zhì)。當(dāng)在計(jì)算裝置上執(zhí)行時(shí),該計(jì)算機(jī)可讀程序使 該計(jì)算裝置接收擴(kuò)展描述語言文檔,其描述一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件, 已在其中嵌入了用于一個(gè)或多個(gè)調(diào)用流程片段的調(diào)用流程描述,并且,其包 括至少 一個(gè)調(diào)用流程綁定。所述至少 一個(gè)調(diào)用流程綁定將交互操作與所述一 個(gè)或多個(gè)調(diào)用流程片段中的給定調(diào)用流程片段中的綁定點(diǎn)相關(guān)聯(lián)。該計(jì)算機(jī) 可讀程序還使該計(jì)算裝置從所述一個(gè)或多個(gè)調(diào)用流程片段中選擇一個(gè)或多 個(gè)消息交換;自動(dòng)生成用于一個(gè)或多個(gè)所選消息交換中的每個(gè)的實(shí)現(xiàn),以形 成應(yīng)用模板;為 一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件提供應(yīng)用模板中的商業(yè)邏輯, 以形成集中應(yīng)用;以及執(zhí)行集中應(yīng)用。
在另一個(gè)示例實(shí)施例中,當(dāng)在計(jì)算裝置上執(zhí)行時(shí),該計(jì)算機(jī)可讀程序使 該計(jì)算裝置執(zhí)行上面關(guān)于方法說明性實(shí)施例而概述的各個(gè)操作、或所述操作 的組合。
在另一個(gè)說明性實(shí)施例中,用于執(zhí)行具有調(diào)用流程交互的集中網(wǎng)絡(luò)服務(wù) 應(yīng)用的數(shù)據(jù)處理系統(tǒng)包括處理器、以及耦接到該處理器的存儲(chǔ)器。該存儲(chǔ)器 包含指令,當(dāng)由該處理器執(zhí)行時(shí),所述指令使該處理器接收擴(kuò)展描述語言文 檔,其描述一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件,已在其中嵌入了用于一個(gè)或多個(gè) 調(diào)用流程片段的調(diào)用流程描述,并且,其包括至少一個(gè)調(diào)用流程綁定。所述 至少一個(gè)調(diào)用流程綁定將交互操作與所述一個(gè)或多個(gè)調(diào)用流程片段中的給定 調(diào)用流程片段中的綁定點(diǎn)相關(guān)聯(lián)。所述指令還使該處理器從所述一個(gè)或多 個(gè)調(diào)用流程片段中選擇一個(gè)或多個(gè)消息交換;自動(dòng)生成用于一個(gè)或多個(gè)所選 消息交換中的每個(gè)的實(shí)現(xiàn),以形成應(yīng)用模板;為一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組 件提供應(yīng)用模板中的商業(yè)邏輯,以形成集中應(yīng)用;以及執(zhí)行集中應(yīng)用。
在另一個(gè)示例實(shí)施例中,所述指令還使該處理器執(zhí)行上面關(guān)于方法說明 性實(shí)施例而概述的各個(gè)操作、或所述操作的組合。
通過下面對(duì)本發(fā)明的示例實(shí)施例的詳細(xì)描述,對(duì)于本領(lǐng)域的技術(shù)人員來 說,本發(fā)明的這些和其它特征、以及優(yōu)點(diǎn)將變得清楚。
通過參照下面結(jié)合附圖對(duì)說明性實(shí)施例的詳細(xì)描述,將最佳地理解本發(fā) 明、以及其優(yōu)選使用模式和其它目的及優(yōu)點(diǎn),附圖中
示;
圖2是可實(shí)現(xiàn)說明性實(shí)施例的方面的示例數(shù)據(jù)處理系統(tǒng)的框圖3圖解了根據(jù)示例實(shí)施例的示例會(huì)話啟動(dòng)協(xié)議應(yīng)用調(diào)用流程;
圖4A繪出了根據(jù)說明性實(shí)施例的網(wǎng)絡(luò)服務(wù)描述語言接口綁定;
圖4B繪出了根據(jù)說明性實(shí)施例的使用狀態(tài)屬性的調(diào)用流程綁定;
圖4C圖解了根據(jù)示例實(shí)施例的使用狀態(tài)屬性的調(diào)用流程;
圖5圖解了根據(jù)示例實(shí)施例的監(jiān)聽(listening)接口;
圖6是圖解根據(jù)說明性實(shí)施例的集中應(yīng)用集成引擎的框圖7是圖解根據(jù)說明性實(shí)施例的集中應(yīng)用執(zhí)行引擎的框圖8繪出了根據(jù)說明性實(shí)施例的接口設(shè)計(jì)工具用戶界面;
圖9是圖解根據(jù)說明性實(shí)施例的具有擴(kuò)展的網(wǎng)絡(luò)服務(wù)描述語言的集中應(yīng)
用的操作的流程圖10是圖解根據(jù)說明性實(shí)施例的預(yù)先存在的集中應(yīng)用的操作的流程圖; 圖11是圖解根據(jù)說明性實(shí)施例的新的集中應(yīng)用的操作的流程圖;以及 圖12是圖解根據(jù)說明性實(shí)施例的自動(dòng)生成WSDL調(diào)用流程實(shí)現(xiàn)的開發(fā)
環(huán)境的操作的流程圖。
具體實(shí)施例方式
下文中描述的說明性實(shí)施例提供了用于針對(duì)會(huì)話啟動(dòng)協(xié)議調(diào)用流程交互 來擴(kuò)展網(wǎng)絡(luò)服務(wù)描述語言的機(jī)制。這樣,可在分布式數(shù)據(jù)處理環(huán)境中實(shí)現(xiàn)說 明性實(shí)施例,其中,連同一個(gè)或多個(gè)數(shù)據(jù)網(wǎng)絡(luò)一起利用多個(gè)計(jì)算裝置。因而, 下文中,提供圖1和2作為可實(shí)現(xiàn)說明性實(shí)施例的方面的分布式數(shù)據(jù)處理環(huán) 境和計(jì)算裝置的例子。圖1和2僅為示例,并且,不意圖表明或暗示對(duì)可實(shí) 現(xiàn)說明性實(shí)施例的計(jì)算裝置的類型和/或配置的任何限制??蓪?duì)圖l和2中繪 出的計(jì)算裝置和環(huán)境做出很多修改,而不會(huì)背離本發(fā)明的精神和范圍。
據(jù)處理系統(tǒng)的圖示。分布式數(shù)據(jù)處理系統(tǒng)100可包括可實(shí)現(xiàn)說明性實(shí)施例
的計(jì)算機(jī)網(wǎng)絡(luò)。分布式數(shù)據(jù)處理系統(tǒng)100包含至少一個(gè)網(wǎng)絡(luò)102,其為用來
在分布式數(shù)據(jù)處理系統(tǒng)100內(nèi)連接在一起的各種裝置和計(jì)算機(jī)之間提供通信 鏈路的介質(zhì)。網(wǎng)絡(luò)102可包括諸如有線、無線通信鏈路、或光纖線纜的連接。 在所繪出的例子中,服務(wù)器104和106連同存儲(chǔ)單元108 —起連接到網(wǎng) 絡(luò)102。另夕卜,客戶機(jī)IIO、 112和114也連接到網(wǎng)絡(luò)102。例如,客戶機(jī)IIO、 112和114可為個(gè)人計(jì)算機(jī)、網(wǎng)絡(luò)計(jì)算機(jī)等。在所繪出的例子中,服務(wù)器104 可向客戶機(jī)IIO、 112和114提供諸如引導(dǎo)文件、操作系統(tǒng)映像的數(shù)據(jù)。在此 實(shí)例中,在所繪出的例子中,客戶機(jī)IIO、 112和114是針對(duì)服務(wù)器104的客 戶機(jī)。分布式數(shù)據(jù)處理系統(tǒng)100可包括附加的服務(wù)器、客戶機(jī)和未示出的其 它裝置。
更具體地,分布式數(shù)據(jù)處理系統(tǒng)100可提供會(huì)話啟動(dòng)協(xié)議(SIP)應(yīng)用、以 及網(wǎng)絡(luò)服務(wù)應(yīng)用。服務(wù)器104和106可為群集的成員。更具體地,例如服務(wù) 器104的服務(wù)器可運(yùn)行SIP平臺(tái)和面向服務(wù)的架構(gòu)集成平臺(tái)。
說明性實(shí)施例擴(kuò)展了網(wǎng)絡(luò)服務(wù)描述語言(WSDL),以允許將調(diào)用流程 XML與接口描述合并。這通過用于將操作與調(diào)用流程內(nèi)的片段或消息點(diǎn)相關(guān) 聯(lián)的操作的、附加的WSDL綁定來實(shí)現(xiàn)。另外,WSDL的擴(kuò)展定義了一組交 互,該組交互提供用于操作如何與調(diào)用流程交互的附加語義(semantics)。這些 交互捕獲WSDL之間的交互點(diǎn)。這允許在接口設(shè)計(jì)中的相同的靈活性,包括 用于商業(yè)邏輯的較粗略的粒度(granularity),同時(shí),允許調(diào)用流程交互點(diǎn)的精 細(xì)粒度的控制。
在說明性實(shí)施例中提出的方法是雙向的。所創(chuàng)建的WSDL接口可用于輸 出(outbound)交互(即,根據(jù)調(diào)用流程內(nèi)的某個(gè)事件而通過網(wǎng)絡(luò)服務(wù)而啟動(dòng))、 或用于通常的輸入(inbound)請(qǐng)求響應(yīng)。說明性實(shí)施例可與現(xiàn)有的WSDL工具 一起工作,并且,甚至允許獨(dú)立于實(shí)現(xiàn)的接口/調(diào)用流程設(shè)計(jì)。
在另一個(gè)說明性實(shí)施例中,使用附加的壽命周期監(jiān)聽器接口,來傳達(dá)增 強(qiáng)的集中網(wǎng)絡(luò)服務(wù)處理引擎和集中WSDL的應(yīng)用實(shí)現(xiàn)之間的不同的綁定點(diǎn)。 壽命周期事件對(duì)應(yīng)于綁定交互類型,并包括對(duì)觸發(fā)壽命周期的調(diào)用流程中的 位置的引用。可針對(duì)應(yīng)用而注冊(cè)監(jiān)聽器,以便接收用于集中服務(wù)實(shí)現(xiàn)的壽命 周期時(shí)間??梢砸跃幊谭绞阶?cè)此監(jiān)聽器,或者,在部署描述符(deployment descriptor)內(nèi)注冊(cè)此監(jiān)聽器。
給定SIP調(diào)用流程定義和具有SIP/調(diào)用流程交互的擴(kuò)展的WSDL,集中
應(yīng)用集成(CAI)引擎向面向服務(wù)的應(yīng)用實(shí)踐者提供了在新的集中應(yīng)用集成綠
色空間(green space)中重用現(xiàn)有的網(wǎng)絡(luò)服務(wù)集成技術(shù)的能力。集中應(yīng)用集成引 擎"捆綁(wrap)"著預(yù)先存在的集中網(wǎng)絡(luò)服務(wù)/SIP或僅用于SIP的應(yīng)用,監(jiān)聽 應(yīng)用特定信令,并且,基于所提供的具有SIP/調(diào)用流程擴(kuò)展的WSDL,產(chǎn)生 并接受使用網(wǎng)絡(luò)服務(wù)的交互請(qǐng)求。
給定SIP調(diào)用流程定義、具有SIP/調(diào)用流程交互的擴(kuò)展的WSDL、以及 集中應(yīng)用集成引擎,集中應(yīng)用執(zhí)行(CAE)引擎大大簡化了開發(fā)新的集中應(yīng)用。 在開發(fā)時(shí),開發(fā)者可將SIP調(diào)用流程定義分解為一組SIP小服務(wù)程序、以及 一組網(wǎng)絡(luò)服務(wù)實(shí)現(xiàn)。每個(gè)調(diào)用流程片段可被分解為SIP小服務(wù)程序。每個(gè)交 互可由以JavaBeansTM作為后援的網(wǎng)絡(luò)服務(wù)提供后援。在運(yùn)行時(shí)間,CAE引 擎通過遵循具有SIP/調(diào)用流程交互的擴(kuò)展的WSDL,而將信令"綁結(jié)(stitch)" 到分解的小服務(wù)程序模型上。在適當(dāng)?shù)慕壎c(diǎn),CAE引擎激活(invoke)監(jiān)聽器 回調(diào)(callback)接口。作為回調(diào)的結(jié)果,應(yīng)用執(zhí)行其需要的任何處理,并且, 隨后,使用CAE引擎的支持服務(wù)來產(chǎn)生對(duì)任何監(jiān)聽服務(wù)集成者的輸出交互激 活。
在另 一個(gè)說明性實(shí)施例中,CAI引擎使用狀態(tài)格式,其使用來自具有SIP/ 調(diào)用流程擴(kuò)展的WSDL的XML代表令牌(token)而呈現(xiàn)交互請(qǐng)求/響應(yīng)內(nèi)的狀 態(tài)。狀態(tài)格式提供了用于在調(diào)用的完整壽命周期期間操縱調(diào)用的非常豐富且 有表現(xiàn)力的接口。.狀態(tài)格式可包括自從最后一次出現(xiàn)交互起的操作的改變、 以及執(zhí)行歷史的改變。調(diào)用流程改變歷史可描述自從最后的輸出交互起的附 加信令/執(zhí)行。
對(duì)WSDL的接口擴(kuò)展提供了有關(guān)網(wǎng)絡(luò)實(shí)現(xiàn)的實(shí)現(xiàn)行為的重要的信息量。 該接口還以這樣的方式定義了接口的語義如果將調(diào)用流程分段為適當(dāng)?shù)膯?元,則可將核心、高級(jí)判定邏輯形象化(externalize)為更高級(jí)的處理工具。由 此,在另一個(gè)說明性實(shí)施例中,可將每個(gè)片段的執(zhí)行分離或委派到所生成的 代碼、或解釋引擎。在每個(gè)綁定點(diǎn)上,將控制傳遞到外部機(jī)制,如處理服務(wù) 器,以確定接下來要執(zhí)行哪個(gè)片段??赏ㄟ^包括最后的消息內(nèi)容(例如,通過 SOAP附件(attachment)),而在所生成或解釋的應(yīng)用、以及外部世界之間傳遞 信息。
在另 一個(gè)說明性實(shí)施例中,接口設(shè)計(jì)工具可包括傳統(tǒng)的調(diào)用流程設(shè)計(jì)視 圖、以及傳統(tǒng)的WSDL接口設(shè)計(jì)視圖。調(diào)用流程設(shè)計(jì)視圖可允許將調(diào)用流程
分組為片段或交換、標(biāo)記片段中的每個(gè)消息。隨后,該工具允許創(chuàng)建WSDL
操作和調(diào)用流程之間的映射??捎媒换ヮ愋蛠順?biāo)記該映射。隨后,可視化實(shí)
體對(duì)象的輸出可為WSDL和調(diào)用流程XML文檔,其中,包括了附加的綁定, 用于捕獲交互關(guān)系的操作。
在所繪出的例子中,分布式數(shù)據(jù)處理系統(tǒng)100是具有網(wǎng)絡(luò)120的因特網(wǎng), 其代表網(wǎng)絡(luò)和使用傳輸控制協(xié)議/因特網(wǎng)協(xié)議(TCP/IP)的協(xié)議套件來彼此通信 的網(wǎng)關(guān)在世界范圍的匯集。在因特網(wǎng)的中心是在主節(jié)點(diǎn)或主機(jī)計(jì)算機(jī)之間的 高速數(shù)據(jù)通信線的中樞,其由對(duì)數(shù)據(jù)和消息進(jìn)行路由的幾千個(gè)商業(yè)、政府、 教育和其它計(jì)算機(jī)系統(tǒng)組成。當(dāng)然,分布式數(shù)據(jù)處理系統(tǒng)100還可被實(shí)現(xiàn)為 包括多個(gè)不同類型的網(wǎng)絡(luò),如內(nèi)聯(lián)網(wǎng)、局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)等。如上 所述,圖l意在作為例子,而不是作為對(duì)于本發(fā)明的不同實(shí)施例的架構(gòu)限定, 并且,因此,圖1中示出的特定元素不應(yīng)為被視為針對(duì)可實(shí)現(xiàn)本發(fā)明的說明 性實(shí)施例的環(huán)境的限制
據(jù)處理系統(tǒng)的框圖。數(shù)據(jù)處理系統(tǒng)200是計(jì)算機(jī)的例子,如圖1中的服務(wù)器 102或客戶機(jī)112,其中,可布置實(shí)現(xiàn)用于說明性實(shí)施例的處理的計(jì)算機(jī)可用 代碼或指令。
在所繪出的例子中,數(shù)據(jù)處理系統(tǒng)200采用包括北橋和存儲(chǔ)器控制器集 線器(NB/MCH)202、以及南橋和輸入/輸出(I/0)控制器集線器(SB/ICH)204的 集線器架構(gòu)。處理單元206、主存儲(chǔ)器208和圖形處理器210耦接到NB/MCH 202。圖形處理器210可通過加速圖形端口(AGP)耦接到NB/MCH202。
在所繪出的例子中,局域網(wǎng)(LAN)適配器212連接到SB/ICH 204。音頻 適配器216、鍵盤和鼠標(biāo)適配器220、調(diào)制解調(diào)器222、只讀存儲(chǔ)器(ROM)224、 硬盤驅(qū)動(dòng)器(HDD) 226、 CD-ROM驅(qū)動(dòng)器230、通用串行總線(USB)端口和其 它通信端口 232、以及PCI/PCIe裝置234通過總線238和總線240連接到 SB/ICH 204。例如,PCI/PCIe裝置可包括以太網(wǎng)適配器、附加卡、以及用于 筆記本計(jì)算機(jī)的PC卡。PCI使用卡總線控制器,而PCIe不使用卡總線控制 器。例如,ROM224可為快閃二進(jìn)制輸入/輸出系統(tǒng)(BIOS)。
HDD 226和CD-COM驅(qū)動(dòng)器230通過總線240而連接到SB/ICH 204。 例如,HDD 226和CD-COM驅(qū)動(dòng)器230可使用集成驅(qū)動(dòng)電子器件(IDE)或串 行高級(jí)技術(shù)附連(SATA)接口 。超級(jí)1/0(SIO)裝置236可連接到SB/ICH 204。
操作系統(tǒng)在處理單元206上運(yùn)行。操作系統(tǒng)協(xié)調(diào)并提供在圖2中的數(shù)據(jù) 處理系統(tǒng)200內(nèi)的各種組件的控制。作為客戶機(jī),操作系統(tǒng)可為商業(yè)可用的 操作系統(tǒng),例如Microsoft 、 Windows XP (Microsoft和Windows是美國、其 它國家或者兩者的微軟公司的商標(biāo))。例如JAV八TM編程系統(tǒng)的面向?qū)ο缶幊?系統(tǒng)可與所述操作系統(tǒng)協(xié)作運(yùn)行,并且,從在數(shù)據(jù)處理系統(tǒng)200上執(zhí)行的 JavaTM程序或應(yīng)用提供對(duì)操作系統(tǒng)的調(diào)用(Java是美國、其它國家、或兩者的 太陽微系統(tǒng)有限公司(Sun Microsystems,Inc.)的商標(biāo))。
作為服務(wù)器,例如,數(shù)據(jù)處理系統(tǒng)200可為運(yùn)行高級(jí)交互執(zhí)行體(AD^) 操作系統(tǒng)或LINUX⑧操作系統(tǒng)的IBM eServer 卩86丘68@計(jì)算機(jī)系統(tǒng)(eServer、 pSeries和AIX是美國、其它國家、或兩者的國際商用機(jī)器公司的商標(biāo),而 LINUX是美國、其它國家、或兩者的Linus Torvalds的商標(biāo))。數(shù)據(jù)處理系統(tǒng) 200可為在處理單元206中包括多個(gè)處理器的對(duì)稱多處理器(SMP)系統(tǒng)??商?換地,可采用單處理器系統(tǒng)。
在例如硬盤驅(qū)動(dòng)器226的存儲(chǔ)裝置上放置用于操作系統(tǒng)、面向?qū)ο缶幊?系統(tǒng)和應(yīng)用或程序的指令,并且,可將所述指令加載到主存儲(chǔ)器208中,以 便由處理單元206執(zhí)行??捎墒褂糜?jì)算機(jī)可用程序代碼的處理單元206來執(zhí) 行用于本發(fā)明的說明性實(shí)施例的處理,其中,可將所述計(jì)算機(jī)可用程序代碼 置于諸如主存儲(chǔ)器208、 ROM 224的存儲(chǔ)器、或者一個(gè)或多個(gè)外設(shè)裝置226 和230中。
諸如如圖2所示的總線238或總線240的總線系統(tǒng)可由一個(gè)或多個(gè)總線 組成。當(dāng)然,可使用提供在不同組件或附加到組織或架構(gòu)的裝置之間傳送數(shù) 據(jù)的任意類型的通信組織或架構(gòu)來實(shí)現(xiàn)總線系統(tǒng)。諸如如圖2所示的調(diào)制解 調(diào)器222或網(wǎng)絡(luò)適配器212的通信單元可包括一個(gè)或多個(gè)用來發(fā)送和接收數(shù) 據(jù)的裝置。例如,存儲(chǔ)器可為圖2中的主存儲(chǔ)器208、 ROM 224、或例如在 NB/MCH 202中發(fā)現(xiàn)的高速緩存。
本領(lǐng)域的技術(shù)人員將理解,在圖1-2中的硬件可取決于實(shí)現(xiàn)而改變。除 了圖l-2所繪出的硬件之外、或者替代圖l-2所繪出的硬件,可使用其他內(nèi)部 硬件或外設(shè),如快閃存儲(chǔ)器、等同的非易失性存儲(chǔ)器、或光盤驅(qū)動(dòng)器等。并 且,除了先前提及的SMP系統(tǒng)之外,還可將說明性實(shí)施例的處理應(yīng)用于多處 理器數(shù)據(jù)處理系統(tǒng),而不會(huì)背離本發(fā)明的精神和范圍。
此外,數(shù)據(jù)處理系統(tǒng)200可采取多個(gè)不同的數(shù)據(jù)處理系統(tǒng)中的任一個(gè)的
形式,包括客戶機(jī)服務(wù)器裝置、服務(wù)器計(jì)算裝置、視頻游戲機(jī)、桌上計(jì)算機(jī)、 膝上型計(jì)算機(jī)、電話或其它通信裝置、個(gè)人數(shù)字助理(PDA)等。在一些說明 性例子中,數(shù)據(jù)處理系統(tǒng)200可為便攜式計(jì)算裝置,其配置有快閃存儲(chǔ)器, 例如,以便提供用于存儲(chǔ)操作系統(tǒng)文件和/或用戶生成的數(shù)據(jù)的非易失性存儲(chǔ)
器。本質(zhì)上,數(shù)據(jù)處理系統(tǒng)200可為任何已知或今后開發(fā)的數(shù)據(jù)處理系統(tǒng),
而無架構(gòu)限制。
說明性實(shí)施例擴(kuò)展了網(wǎng)絡(luò)服務(wù)描述語言(WSDL),以允許將調(diào)用流程 XML與接口描述合并。除了諸如類型、消息類型、端口類型、接口、綁定等 的常用的WSDL結(jié)構(gòu)之外,還將WSDL文檔與某個(gè)調(diào)用流程XML相關(guān)聯(lián)。 可從另 一個(gè)XML文檔導(dǎo)入此XML,或者,可將此XML直接嵌入到WSDL 文檔。調(diào)用流程描述應(yīng)用和其它網(wǎng)絡(luò)元素之間的各種交互。圖3圖解了根據(jù) 示例實(shí)施例的示例會(huì)話啟動(dòng)協(xié)議(SIP)應(yīng)用調(diào)用流程。
調(diào)用流程還可被劃分為片段。對(duì)于在圖3中繪出的調(diào)用流程,可將步驟 l-3視為片段l,步驟4-9可為片段2,而"再見(bye)"步驟(未示出)可為片段 3。還可使用附加的片段用于調(diào)入信令。注意,此調(diào)用流程也暗示消息之間的 數(shù)據(jù)流程。對(duì)于說明性實(shí)施例的實(shí)現(xiàn),可期望注釋調(diào)用流程,以便還指示數(shù) 據(jù)流程。
在典型的簡單對(duì)象訪問協(xié)議(SOAP)網(wǎng)絡(luò)服務(wù)綁定中,每個(gè)操作具有關(guān)聯(lián) 的用于操作的SOAP綁定。圖4A繪出了根據(jù)說明性實(shí)施例的網(wǎng)絡(luò)服務(wù)描述 語言接口綁定。通過使用附加的調(diào)用流程綁定,而將該操作合并到SIP調(diào)用 流程。
圖4B繪出了根據(jù)說明性實(shí)施例的具有調(diào)用流程綁定的網(wǎng)絡(luò)服務(wù)描述語 言接口綁定。例如調(diào)用流程綁定412的調(diào)用流程綁定將該操作與調(diào)用流程片 段中的點(diǎn)、以及消息點(diǎn)相關(guān)聯(lián)。這對(duì)操作賦予附加的含義?,F(xiàn)在,看到該接 口的任何人將具有對(duì)在實(shí)現(xiàn)中實(shí)際進(jìn)行何種操作、以及其屬于哪個(gè)交互的更 佳的想法。調(diào)用流程還可變?yōu)閷?shí)現(xiàn)的契約(contract)。
現(xiàn)在,以兩種方式開始應(yīng)用的執(zhí)行通過網(wǎng)絡(luò)事件(對(duì)于某些應(yīng)用)、或通 過取消(kick off)調(diào)用流程片段的操作。隨后,執(zhí)行繼續(xù),直到下一個(gè)綁定點(diǎn) 為止,在該點(diǎn)上,要采取的動(dòng)作取決于綁定交互類型。該交互幫助對(duì)該操作 提供附加的語義,其可用于確定該操作意味著要被如何使用?,F(xiàn)有技術(shù)的 WSDL接口描述的描述性不足以捕獲使用情形。此途徑中的關(guān)鍵使能器(keyenabler)是交互的定義。交互描述上下文,其 中,該實(shí)現(xiàn)預(yù)計(jì)要出現(xiàn)的方法。定義了下面的交互
查詢查詢調(diào)用流程的狀態(tài)。針對(duì)與WSDL相關(guān)聯(lián)的調(diào)用流程而有意 義地定義了該狀態(tài)。這可被用來查詢執(zhí)行流程的當(dāng)前狀態(tài),并能夠放置有意 義的結(jié)果。存在代表狀態(tài)的幾種方式,如關(guān)于先前執(zhí)行的片段、關(guān)于協(xié)議優(yōu) 先交換等。
通知向該通知的實(shí)現(xiàn)方指示應(yīng)從服務(wù)實(shí)現(xiàn)發(fā)送通知,該通知指示 已出現(xiàn)了應(yīng)用中的點(diǎn),例如,已完成了調(diào)用建立。通知相對(duì)于調(diào)用流程的執(zhí) 行來說是異步的。
引導(dǎo)這暫停調(diào)用流程的執(zhí)行,以調(diào)出到外部網(wǎng)絡(luò)服務(wù)終點(diǎn),以便使 用綁定(bound)操作來接收引導(dǎo)。這可為實(shí)際的SOAP網(wǎng)絡(luò)服務(wù)激活、或Java 綁定。
規(guī)定這指示該操作將提供有關(guān)如何在執(zhí)行流程內(nèi)作出判定的描述性 規(guī)則??稍谄吸c(diǎn)上評(píng)估規(guī)定規(guī)則,以確定要移入哪個(gè)片段。這可在任何時(shí) 間被調(diào)用,如在建立時(shí)間。
動(dòng)作(Act):這取消調(diào)用流程的片段。隨后,此操作可被用來取消調(diào)用 流程、或發(fā)送附加的信令流入,如終止調(diào)用。
這些WSDL擴(kuò)展可被用來提供用于實(shí)現(xiàn)的附加接口契約,或可通過網(wǎng)絡(luò) 服務(wù)基礎(chǔ)結(jié)構(gòu)而被增強(qiáng)。
對(duì)調(diào)用流程綁定的附加擴(kuò)展為"狀態(tài)"屬性??稍趯⒔壎ㄅc調(diào)用流程中 的點(diǎn)匹配時(shí)使用狀態(tài)屬性。圖4C圖解了根據(jù)示例實(shí)施例的使用狀態(tài)屬性的調(diào) 用流程綁定。圖4C中繪出的例子圖解了如何通過指定先前的片段而指示狀 態(tài)??墒褂酶?xì)的狀態(tài)指定方案。如果其狀態(tài)匹配,則僅應(yīng)用綁定。操作 還可具有多個(gè)綁定,這有效地將一系列片段與操作關(guān)聯(lián)。
另外,可遵循操作、向和從調(diào)用流程實(shí)現(xiàn)發(fā)送SIP消息,以幫助引導(dǎo)調(diào) 用流程??墒褂玫膬蓚€(gè)機(jī)制為SIP消息的XML表示、以及SOAP附件。SOAP 附件減小了搭載(piggybacked)的低級(jí)SIP消息的成本。
圖5圖解了根據(jù)說明性實(shí)施例的監(jiān)聽接口。使用附加的壽命周期監(jiān)聽器 來在增強(qiáng)的集中網(wǎng)絡(luò)服務(wù)處理^)擎和WSDL的集中應(yīng)用實(shí)現(xiàn)之間傳達(dá)不同的 綁定點(diǎn)。在每次網(wǎng)絡(luò)服務(wù)處理引擎匹配針對(duì)WSDL的調(diào)用流程執(zhí)行中的綁定 點(diǎn)時(shí),監(jiān)聽器實(shí)現(xiàn)得到激活。注意,增強(qiáng)的集中網(wǎng)絡(luò)服務(wù)處理引擎能夠看到
網(wǎng)絡(luò)服務(wù)和與調(diào)用流程相關(guān)的請(qǐng)求兩者。對(duì)于可通過所生成的網(wǎng)絡(luò)服務(wù)綁定 來處理的操作,恰好在調(diào)用操作之前,僅提供、激活動(dòng)作的通知。對(duì)于輸出 動(dòng)作,監(jiān)聽器是必須作出外部調(diào)用的僅有的指示器。
針對(duì)基于面向服務(wù)的架構(gòu)(SOA)的集成的現(xiàn)有技術(shù)的方法對(duì)SIP信令一 無所知。給定現(xiàn)有的集中網(wǎng)絡(luò)服務(wù)/SIP或僅用于SIP的應(yīng)用,系統(tǒng)集成者需 要在適于處理服務(wù)器和SOA編程模型的間隔粒度上與應(yīng)用交互的能力。針對(duì) 基于SOA的集中SIP/網(wǎng)絡(luò)服務(wù)應(yīng)用開發(fā)依賴于源自技術(shù)慣例之一的工具。因 為獨(dú)立地針對(duì)于SIP或網(wǎng)絡(luò)服務(wù)開發(fā)而調(diào)整(gear)現(xiàn)有技術(shù)的應(yīng)用開發(fā)實(shí)踐, 所以,寫入良好結(jié)構(gòu)、健壯、可維護(hù)等的集中應(yīng)用是困難的。開發(fā)進(jìn)行所述 兩者的應(yīng)用是困難的。
圖6是圖解根據(jù)說明性實(shí)施例的集中應(yīng)用集成引擎的框圖。集中應(yīng)用集 成(CAI)引擎620 "捆綁(wrap)"著預(yù)先存在的集中網(wǎng)絡(luò)服務(wù)/SIP應(yīng)用622。使 用監(jiān)聽器接口 624, CAI引擎620監(jiān)聽?wèi)?yīng)用特定的信令,并且,在SOA集成 平臺(tái)630中,基于所提供的具有SIP/調(diào)用流程擴(kuò)展的WSDL,產(chǎn)生并接受使 用網(wǎng)絡(luò)服務(wù)的交互請(qǐng)求。
CAI引擎620具有幾種優(yōu)點(diǎn)。SOA實(shí)踐者可使用現(xiàn)有的平臺(tái)630、工具、 以及技術(shù)來與平臺(tái)集成,這是因?yàn)?,CAI引擎620向?qū)嵺`者給出集中應(yīng)用的 操作的網(wǎng)絡(luò)服務(wù)友好的視圖。在已創(chuàng)建了 SIP/調(diào)用流程WSDL之后,不需要 SIP專門知識(shí)。因?yàn)镃AI引擎620根據(jù)調(diào)用流程描述而工作,所以,可將CAI 引擎620綁縛(bolt)到現(xiàn)有的應(yīng)用622上,而不需要任何應(yīng)用級(jí)別的改變。任 何預(yù)先存在的應(yīng)用信令在其SIP/調(diào)用流程WSDL內(nèi)可具有不同的交互粒度。 集成者可基于它們定義的片段,而選擇交互的粒度。例如, 一個(gè)服務(wù)約定 (engagement)可能需要有關(guān)電話呼叫起始和終止的通知交互,而另 一個(gè)服務(wù)約 定可能需要有關(guān)每一個(gè)單個(gè)SIP消息的通知交互。
CAI引擎620耗用(consume)具有SIP/調(diào)用流程擴(kuò)展的WSDL,其描述由 任意預(yù)先存在的集中網(wǎng)絡(luò)服務(wù)/SIP或僅用于SIP的應(yīng)用(例如,應(yīng)用622)所使 用的信令。CAI引擎620通過使用監(jiān)聽器接口 624而監(jiān)聽預(yù)先存在的應(yīng)用622 及其客戶機(jī)之間的信令,其包括所有輸入和輸出SIP信令、以及網(wǎng)絡(luò)服務(wù)激 活。監(jiān)聽器接口 624是如上面通過參照?qǐng)D5而描述的那樣。當(dāng)在SIP平臺(tái)610 中的調(diào)用流程內(nèi)出現(xiàn)信令時(shí),CAI引擎620跟蹤調(diào)用流程片段之間的過渡, 并在存儲(chǔ)裝置626中維持狀態(tài)信息。
當(dāng)在SIP平臺(tái)610中調(diào)用流程到達(dá)在擴(kuò)展WSDL內(nèi)定義的交互(例如,通 知或引導(dǎo))時(shí),CAI引擎620利用相關(guān)狀態(tài)信息而產(chǎn)生用于適當(dāng)?shù)慕换サ妮敵?網(wǎng)絡(luò)服務(wù)激活。在任意時(shí)刻,CAI引擎620可接收輸入網(wǎng)絡(luò)服務(wù)激活,其請(qǐng) 求或修改相關(guān)的狀態(tài)信息(例如,查詢、規(guī)定、動(dòng)作)。
當(dāng)CAI引擎620耗用具有SIP/調(diào)用流程擴(kuò)展的WSDL時(shí),其生成SIP小 服務(wù)程序、以及以JavaBeansTM作為后援的網(wǎng)絡(luò)服務(wù)實(shí)現(xiàn),例如,所述兩者可 在1^6&8口1^化@集中HTTP/SIP容器中運(yùn)行。所生成的SIP小服務(wù)程序作為簡 單的記錄j 各由代理(record-routingproxy)而工作。在每個(gè)傳入(incoming)響應(yīng)或 后續(xù)請(qǐng)求上,SIP小服務(wù)程序在功能上確保該消息到達(dá)SIP協(xié)議所命令的目 標(biāo)。網(wǎng)絡(luò)服務(wù)實(shí)現(xiàn)用作背對(duì)背(back-to-back)/中間人(man-in-the-middle),并激 活原始的網(wǎng)絡(luò)服務(wù)終點(diǎn)。
當(dāng)網(wǎng)絡(luò)服務(wù)通過所生成的代碼而產(chǎn)生請(qǐng)求、或SIP消息流程時(shí),該代碼 檢索適當(dāng)?shù)臅?huì)話對(duì)象(HttpSession、 SipSession、 SipApplicationSession),并更 新相關(guān)的狀態(tài)信息,例如,消息內(nèi)容、消息之間的時(shí)間等。
當(dāng)狀態(tài)到達(dá)具有所定義的通知或引導(dǎo)交互的點(diǎn)時(shí),所生成的小服務(wù)程序 在標(biāo)準(zhǔn)集成平臺(tái)630上激活通知或引導(dǎo)網(wǎng)絡(luò)服務(wù)交互請(qǐng)求。通知交互包括調(diào) 用流程的狀態(tài)。引導(dǎo)交互包括調(diào)用流程的狀態(tài),并且,CAI引擎620使用來 自集成平臺(tái)630的響應(yīng),以修改其內(nèi)部狀態(tài)。
在任意時(shí)刻,集成平臺(tái)630可在CAI引擎620上激活查詢交互,CAI引 擎620利用當(dāng)前的調(diào)用流程狀態(tài)來響應(yīng)。集成平臺(tái)630還可利用規(guī)定的狀態(tài) 信息,而在CAI引擎620上激活規(guī)定交互。CAI引擎620將此狀態(tài)信息存儲(chǔ) 在存儲(chǔ)裝置626中,并且,將在接收到為應(yīng)用綁定或源自應(yīng)用的相關(guān)的初始 請(qǐng)求時(shí)恢復(fù)它。這可采用串行化到數(shù)據(jù)源的信息的形式,之后查詢?cè)撔畔ⅲ?并且,在接收到初始請(qǐng)求時(shí)將該信息恢復(fù)為會(huì)話對(duì)象。集成平臺(tái)630可利用 規(guī)定的狀態(tài)信息,在CAI引擎620上激活動(dòng)作交互。CAI引擎620將把動(dòng)作 交互傳遞到基礎(chǔ)(underlying)應(yīng)用622,并且,必須對(duì)該應(yīng)用編碼,以便理解 它??商鎿Q地,集成平臺(tái)630可直接激活應(yīng)用622所擁有的任意網(wǎng)絡(luò)服務(wù)操 作。
圖7是圖解根據(jù)說明性實(shí)施例的集中應(yīng)用執(zhí)行引擎的框圖。給定圖6中 示出的SIP調(diào)用流程定義、具有SIP/調(diào)用流程交互的擴(kuò)展的WSDL、以及集 中應(yīng)用集成(CAI)引擎,集中應(yīng)用執(zhí)行(CAE)引擎簡化了新的集中應(yīng)用的開發(fā)。
在開發(fā)時(shí),開發(fā)者可將SIP調(diào)用流程定義分解為一組SIP小服務(wù)程序、以及 一組網(wǎng)絡(luò)服務(wù)實(shí)現(xiàn)。每個(gè)調(diào)用流程片段可被分解為SIP小服務(wù)程序。查詢、
規(guī)定和動(dòng)作交互中的每個(gè)可由以JavaBeans 作為后援的網(wǎng)絡(luò)服務(wù)提供后援。 通知和引導(dǎo)操作使用CAE引擎720提供的支持服務(wù),這是因?yàn)椋瑥膽?yīng)用的角 度來看,它們是輸出的。開發(fā)者插入到各個(gè)小服務(wù)程序的邏輯在上面通過參 照?qǐng)D5而描述的監(jiān)聽器接口 724上生效(capitalize)。
在運(yùn)行時(shí)間,CAE引擎720通過遵循具有SIP/調(diào)用流程交互的擴(kuò)展的 WSDL,而將信令"綁結(jié)"到分解的小服務(wù)程序模型上。在適當(dāng)?shù)慕壎c(diǎn), CAE引擎720激活監(jiān)聽器回調(diào)接口 724。例如,當(dāng)由于調(diào)用片段完成而造成 在兩個(gè)SIP小服務(wù)程序之間傳遞控制時(shí),CAE引擎720可激活onNotify。作 為回調(diào)的結(jié)果,應(yīng)用722執(zhí)行其需要的任何處理,并且,隨后,使用CAE引 擎720的支持服務(wù)來產(chǎn)生對(duì)任何監(jiān)聽服務(wù)集成者的輸出通知或引導(dǎo)交互激 活。
基于應(yīng)用的意圖信令,CAE引擎720提供用于迅速開發(fā)集中應(yīng)用的良好 定義的結(jié)構(gòu)。通過使SIP/調(diào)用流程被分解為小服務(wù)程序,而激勵(lì)開發(fā)者針對(duì) 一段有用的信令而具有一個(gè)小服務(wù)程序過程。這減小了產(chǎn)生單塊 (monolithic)SIP小服務(wù)程序的趨勢(shì),從而減小了代碼復(fù)雜度,并使測試和維護(hù) 容易。因?yàn)镃AE引擎720在回調(diào)期間向應(yīng)用722提供存儲(chǔ)裝置726中的上下 文(contextual)狀態(tài)(例如,onNotify、 onDirect),所以,應(yīng)用開發(fā)者不需要將努 力投入到維持當(dāng)前信令狀態(tài)中。CAE引擎720為開發(fā)者而在存儲(chǔ)裝置726中 維持狀態(tài),并且,不考慮信令復(fù)雜度,而以容易耗用的形式呈現(xiàn)它。在無CAE 引擎720的情況下,開發(fā)者必須花費(fèi)時(shí)間來開發(fā)具有更豐富的功能的相關(guān)狀
態(tài)歷史邏輯,從而需要更多的開發(fā)時(shí)間。
因?yàn)槿缤渌愋偷男帕钅菢犹幚砭W(wǎng)絡(luò)服務(wù)激活、并使用公共接口來描
述網(wǎng)絡(luò)服務(wù)激活,所以,開發(fā)者不需要投入努力來將網(wǎng)絡(luò)服務(wù)請(qǐng)求歷史/細(xì)節(jié) 添加到SIP信令狀態(tài)中。CAE引擎720以開發(fā)者的名義完成了這些。
因?yàn)镃AE引擎720遵循查詢、通知、引導(dǎo)、動(dòng)作、規(guī)定范例,所以,CAE 引擎720允許集中應(yīng)用開發(fā)者和集中應(yīng)用集成者在討論集中功能性時(shí)使用相 同的語言?;贑AE的應(yīng)用免費(fèi)獲得CAI集成點(diǎn),從而激勵(lì)利用SOA生態(tài) 系統(tǒng)(ecosystem)的它們的重用。從外部看,CAE應(yīng)用看起來正像是CAI引擎 捆綁著的非CAE應(yīng)用。這改善了開發(fā)成本的返還,這是因?yàn)?,組織可更容易
地導(dǎo)出允許CAE的應(yīng)用,用于外部耗用。CAE引擎720是超越CAI引擎的 一件增量的工作。
為CAE引擎720構(gòu)造的工具耗用為新應(yīng)用722設(shè)計(jì)的、具有SIP/調(diào)用流 程擴(kuò)展的WSDL。該工具基于將SIP/調(diào)用流程分解為調(diào)用片段,而生成適當(dāng) 的J2EE/SIP實(shí)體對(duì)象。應(yīng)用開發(fā)者取得那些實(shí)體對(duì)象,并填入適當(dāng)?shù)纳虡I(yè)邏 輯。應(yīng)用開發(fā)者將那些實(shí)體對(duì)象與CAE特定的部署描述符一起封裝。此描述 符指示正在使用的具有SIP/調(diào)用的WSDL、適當(dāng)?shù)膽?yīng)用狀態(tài)模型、以及應(yīng)在 運(yùn)行時(shí)間向CAE引擎720注冊(cè)的任意監(jiān)聽器。
在運(yùn)行時(shí)間,CAE引擎720作為控制器工作,該控制器截獲所有傳入信 令、來自SIP平臺(tái)710的SIP信令、或來自集成平臺(tái)730的網(wǎng)絡(luò)服務(wù)信令。 CAE引擎720在激活下屬(underling)應(yīng)用邏輯之前更新其內(nèi)部狀態(tài)。
當(dāng)在SIP平臺(tái)710中完成調(diào)用流程片段時(shí),CAE引擎720自動(dòng)地引導(dǎo)信 令到分解的實(shí)現(xiàn)內(nèi)的適當(dāng)?shù)腟IP d、服務(wù)程序。當(dāng)調(diào)用流程到達(dá)在擴(kuò)展的WSDL 內(nèi)定義的交互(例如,通知或引導(dǎo))時(shí),其激活所定義的應(yīng)用監(jiān)聽器724。該應(yīng) 用可利用來自存儲(chǔ)裝置726的相關(guān)狀態(tài)信息,而產(chǎn)生對(duì)集成平臺(tái)730的輸出 網(wǎng)絡(luò)服務(wù)激活,用于適當(dāng)?shù)慕换?。?duì)于引導(dǎo)交互,應(yīng)用722 "看到"外部系 統(tǒng)的響應(yīng),并可相應(yīng)地更新其狀態(tài)。在任意時(shí)刻,CAE引擎720可接收輸入 網(wǎng)絡(luò)服務(wù)激活,其請(qǐng)求或修改相關(guān)的狀態(tài)信息(例如,查詢、規(guī)定、動(dòng)作)。在 預(yù)先填入(p叩ulate)其知道的信息(例如,自從最后一次出現(xiàn)交互起的信令歷 史、狀態(tài)改變)之后,CAE引擎720將這些傳遞到應(yīng)用722上,以便處理。
對(duì)WSDL的接口擴(kuò)展提供了有關(guān)網(wǎng)絡(luò)實(shí)現(xiàn)的實(shí)現(xiàn)行為的重要的信息量。 該接口還以這樣的方式定義了接口的語義如果將調(diào)用流程分段為適當(dāng)?shù)膯?元,則可將核心、高級(jí)判定邏輯形象化為更高級(jí)的處理工具??蓪⒚總€(gè)片段 的執(zhí)行委派到所生成的代碼、或解釋引擎。在每個(gè)綁定點(diǎn)上,將控制傳遞到 外部機(jī)制,如處理服務(wù)器,以確定接下來要執(zhí)行哪個(gè)片段??赏ㄟ^包括最后 的消息內(nèi)容,而在所生成或解釋的應(yīng)用、以及外部世界之間傳遞信息。
在生成模式中,在接口內(nèi)描述的每個(gè)調(diào)用流程片段將對(duì)應(yīng)于所生成的SIP 小服務(wù)程序。應(yīng)能夠獨(dú)立地執(zhí)行片段,如SIP事務(wù)。可選擇這些片段,以便 暗示并觀察(scope)片段之間的數(shù)據(jù)流??赏ㄟ^使用例如SIP小服務(wù)程序 setHandler()方法的機(jī)制,而實(shí)現(xiàn)片段之間的交遞。
可將三個(gè)綁定交互類型應(yīng)用于此模型引導(dǎo)、規(guī)定、動(dòng)作。對(duì)于引導(dǎo)和
規(guī)定,可繼續(xù)執(zhí)行,直到到達(dá)初始綁定點(diǎn)為止,典型地,在片段的結(jié)尾。在 這樣的點(diǎn)上,如果綁定交互為引導(dǎo),則將進(jìn)行調(diào)出,以確定接下來要執(zhí)行哪
個(gè)片段。調(diào)出將提供所附連(例如,通過SOAP附件)的最后的SIP消息,并且,
到下一個(gè)片段的引導(dǎo)還采用將輸入消息提供給片段的附連。如果綁定點(diǎn)為規(guī) 定,那么,將商議所關(guān)聯(lián)的規(guī)則,以確定接下來要執(zhí)行哪個(gè)片段。還可使用 動(dòng)作交互,以在對(duì)話或新的交互中異步地取消調(diào)用流程片段(例如,終止)。
所生成的應(yīng)用可為集中應(yīng)用,并且,使用會(huì)話相似性來將傳入請(qǐng)求引導(dǎo) 到正在執(zhí)行所生成的代碼的、群集中的相同的應(yīng)用服務(wù)器。這簡化了生成模 型,從而允許所生成的代碼關(guān)注于邏輯,并讓應(yīng)用服務(wù)器層處理負(fù)載平衡、
故障切換(fail-over)等。
在CAI引擎和系統(tǒng)集成者之間發(fā)送的狀態(tài)信息必須足夠豐富,同時(shí)不加 重集成者或集成平臺(tái)的負(fù)擔(dān)。集成者應(yīng)當(dāng)不需要理解SIP的所有細(xì)微差別。 CAI引擎的目的在于,將SIP理解和復(fù)雜度推出集成平臺(tái)。集成者應(yīng)當(dāng)接收 盡可能多的信令信息。這允許集成者在他/她理解了 SIP信令的情況下去作更 明智的事情。集成平臺(tái)不應(yīng)在解析/處理信息時(shí)遇到性能問題。因?yàn)榛A(chǔ)應(yīng)用 可高度狀態(tài)化(stateful),所以,所提供的信息應(yīng)幫助集成者"保持其位置(keep his place)"。預(yù)先存在的應(yīng)用已經(jīng)必須維持該信息的全部。不存在集成平臺(tái)/ 集成者還必須維持該信息的需要。
現(xiàn)有技術(shù)的解決方案趨向于將基于XML或?qū)ο蟮腟IP消息推入集成平 臺(tái)。這迫使集成平臺(tái)解析/處理SIP消息的表示。在大多時(shí)間,該力度級(jí)別不 是必須的,并且,迫使集成平臺(tái)支付解析/存儲(chǔ)成本是過分的?,F(xiàn)有技術(shù)的解 決方案還將"無狀態(tài)(stateless)"或幾乎無狀態(tài)的消息傳遞到集成平臺(tái)。對(duì)于 集成者來說,獲取任何明智選擇需要集成者在本地維持狀態(tài)歷史。這是不需 要的實(shí)現(xiàn)負(fù)擔(dān),其將產(chǎn)生(spawn)很多瑣碎的變化,并使重用困難。
根據(jù)一個(gè)說明性實(shí)施例,提供狀態(tài)格式,以便在CAI的引擎的通知、引 導(dǎo)、查詢、規(guī)定和動(dòng)作操作內(nèi)使用。該格式使用從具有SIP/調(diào)用流程擴(kuò)展的 WSDL得到的XML表示來呈現(xiàn)交互請(qǐng)求/響應(yīng)內(nèi)的狀態(tài)。將此狀態(tài)格式與通 知、引導(dǎo)、查詢、規(guī)定和動(dòng)作范例組合,以提供非常豐富/具有表現(xiàn)力的接口, 以便在它們的完整的壽命周期期間操縱調(diào)用。
對(duì)于通知和引導(dǎo)交互,狀態(tài)格式包括自從最后一次出現(xiàn)通知和卩1導(dǎo)起的 操作參數(shù)的改變、以及執(zhí)行歷史的改變(如在調(diào)用流程中定義的那樣)。調(diào)用流
程改變歷史描述自從最后的輸出通知/引導(dǎo)交互起的附加的信令/執(zhí)行。對(duì)于查 詢交互,狀態(tài)格式包括自從請(qǐng)求方最后一次激活相同的操作起的操作參數(shù)的 改變、以及執(zhí)行歷史的改變。例如,查詢可包括自從對(duì)于相同的調(diào)用而發(fā)出 查詢起的所有改變。對(duì)于動(dòng)作和規(guī)定交互,狀態(tài)格式可包括操作參數(shù)的改變, 但很可能不包括執(zhí)行歷史。
說明性實(shí)施例的狀態(tài)格式使用具有SIP/調(diào)用流程擴(kuò)展的WSDL,作為其
狀態(tài)信息的基礎(chǔ),集成者利用在對(duì)預(yù)先存在的應(yīng)用行為建模時(shí)取得的相同級(jí)
別的粒度/抽象(abstraction)來工作。如果需要,則集成者可使用SOAP附件, 利用基礎(chǔ)信令來工作。這允許集成者向下訪問到SIP字節(jié)級(jí)別(如果需求要求 這樣的話)。因?yàn)轶@人(gory)的信令細(xì)節(jié)作為SOAP附件加載(ride),所以,不 強(qiáng)制SOAP引擎在處理輸入通知、引導(dǎo)等交互網(wǎng)絡(luò)服務(wù)請(qǐng)求時(shí)解析或理解它 們。因?yàn)橥ㄖ?、引?dǎo)和查詢狀態(tài)信息包括自從集成平臺(tái)最后一次接收到通知、 引導(dǎo)和查詢請(qǐng)求起的改變歷史,所以,集成者具有寬松的時(shí)間來實(shí)現(xiàn)"僅在 X改變了時(shí)才做某件事"的行為。
現(xiàn)有技術(shù)的工具獨(dú)立地對(duì)待網(wǎng)絡(luò)服務(wù)接口、以及集中應(yīng)用設(shè)計(jì)。由于在 實(shí)現(xiàn)中需要重新考慮(reconcil)兩個(gè)接口 ,所以,這增大了集中應(yīng)用設(shè)計(jì)的復(fù) 雜度。根據(jù)說明性實(shí)施例,接口設(shè)計(jì)工具包括傳統(tǒng)的調(diào)用流程設(shè)計(jì)視圖(這樣 的視圖可能使用調(diào)用流程內(nèi)的消息交換的序列圖)、以及傳統(tǒng)的WSDL接口設(shè) 計(jì)視圖。調(diào)用流程設(shè)計(jì)視圖可允許將調(diào)用流程分組為交換的片段,并還允許 標(biāo)記片段中的每個(gè)消息,如唯一號(hào)碼或字母數(shù)字的標(biāo)記。該工具允許創(chuàng)建者 在WSDL操作和調(diào)用流程之間映射??捎媒换ヮ愋蛠順?biāo)記該映射??梢暬瘜?shí) 體對(duì)象的輸出可為WSDL和調(diào)用流程XML文檔,其中,包括了附加的綁定, 用于捕獲交互關(guān)系的操作。
圖8繪出了根據(jù)說明性實(shí)施例的接口設(shè)計(jì)工具用戶界面。接口設(shè)計(jì)工具 窗口 800包括WSDL接口設(shè)計(jì)部分802、以及多個(gè)調(diào)用流程片段設(shè)計(jì)部分804。 例如,開發(fā)者可使用橡皮帶(mbber-band)工具,而將WSDL元素與調(diào)用流程 步驟或消息。例如,橡皮帶組件806表示"endCall" WSDL組件和片段3中 的步驟10之間的映射。還將此映射標(biāo)記為"動(dòng)作"交互。
圖9是圖解根據(jù)說明性實(shí)施例的具有擴(kuò)展的網(wǎng)絡(luò)服務(wù)描述語言的集中應(yīng) 用的操作的流程圖。將理解,可通過計(jì)算機(jī)程序指令來實(shí)現(xiàn)流程示的每 塊、以及流程示中的塊的組合??蓪⑦@些計(jì)算機(jī)程序指令提供給處理器、
或其它可編程數(shù)據(jù)處理設(shè)備,以產(chǎn)生機(jī)器(machine),使得在處理器或其它可 編程數(shù)據(jù)處理設(shè)備上執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)在流程圖塊中指定的功能的部 件。還可將這些計(jì)算機(jī)程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)器或存儲(chǔ)介質(zhì)中,其 可引導(dǎo)處理器或其它可編程數(shù)據(jù)處理設(shè)備以特定方式起作用,使得在計(jì)算機(jī) 可讀存儲(chǔ)器或存儲(chǔ)介質(zhì)中存儲(chǔ)的指令產(chǎn)生制造產(chǎn)品,其包括實(shí)現(xiàn)在流程圖塊 中指定的功能的指令部件。
因而,流程示的塊支持用于執(zhí)行所指定的功能的部件的組合、用于 執(zhí)行所指定的功能的步驟的組合、以及用于執(zhí)行所指定的功能的程序指令。 還將理解,可通過基于執(zhí)行特定功能或步驟的專用硬件的計(jì)算機(jī)系統(tǒng)、或通 過專用硬件和計(jì)算機(jī)指令的組合,而實(shí)現(xiàn)流程示的每個(gè)塊、以及流程圖 圖示中的塊的組合。
參照?qǐng)D9,操作開始,并且,開發(fā)者將網(wǎng)絡(luò)服務(wù)描述語言(WSDL)結(jié)構(gòu)與 調(diào)用流程可擴(kuò)展標(biāo)記語言(XML)相關(guān)聯(lián)(塊902)。開發(fā)者使用調(diào)用流程綁定, 而將具有調(diào)用流程片段的WSDL中的操作與消息點(diǎn)合并(塊904)。開發(fā)者可 使用例如圖8所示的接口設(shè)計(jì)工具的接口設(shè)計(jì)工具,而合并操作。
接下來,根據(jù)網(wǎng)絡(luò)事件、或通過取消調(diào)用流程片段的操作,在集中應(yīng)用 集成(CAI)引擎、或集中應(yīng)用執(zhí)行(CAE)引擎中,集中應(yīng)用開始執(zhí)行(塊卯6)。 CAI或CAE引擎確定是否到達(dá)了下一個(gè)綁定點(diǎn)(塊908)。如果未到達(dá)下一個(gè) 綁定點(diǎn),則CAI或CAE引擎確定是否存在退出條件(塊910)。例如,如果應(yīng) 用完成了執(zhí)行、或服務(wù)器關(guān)機(jī),則可能存在退出條件。如果不存在退出條件, 則操作返回到塊卯8,以確定是否到達(dá)了下一個(gè)綁定點(diǎn)。如果在塊910、存在 退出條件,則操作結(jié)束。
返回到塊908,如果到達(dá)了下一個(gè)綁定點(diǎn),那么,CAI或CAE引擎確定 交互類型是否為查詢(塊912)。如果交互類型是查詢,則CAI或CAE引擎查 詢調(diào)用流程的狀態(tài)(塊914)。之后,操作返回到塊908,以確定是否到達(dá)了下 一個(gè)綁定點(diǎn)。
如果交互類型不是查詢,則CAI或CAE引擎確定交互類型是否為通知(塊 916)。如果交互類型是通知,則CAI或CAE引擎將來自服務(wù)實(shí)現(xiàn)的通知發(fā)送 到實(shí)現(xiàn)方,該通知指示已出現(xiàn)了應(yīng)用中的點(diǎn)(塊918)。之后,操作返回到塊908, 以確定是否到達(dá)了下一個(gè)綁定點(diǎn)。
如果交互類型不是通知,則CAI或CAE引擎確定交互類型是否為引導(dǎo)(塊
920)。如果交互類型是引導(dǎo),則CAI或CAE暫停調(diào)用流程的執(zhí)行(塊922), 并調(diào)出到外部網(wǎng)絡(luò)服務(wù)終點(diǎn),以使用綁定操作來接收引導(dǎo)(塊924)。之后,操 作返回到塊卯8,以確定是否到達(dá)了下一個(gè)綁定點(diǎn)。
如果交互類型不是引導(dǎo),則CAI或CAE引擎確定交互類型是否為規(guī)定(塊 926)。如果交互類型是規(guī)定,則CAI或CAE提供有關(guān)如何在執(zhí)行流程內(nèi)作出 判定的描述性規(guī)則(塊928)。之后,操作返回到塊卯8,以確定是否到達(dá)了下 一個(gè)綁定點(diǎn)。
如果交互類型不是規(guī)定,則交互類型為動(dòng)作,并且,CAI或CAE引擎取 消調(diào)用流程的片段(塊932)。之后,操作返回到塊908,以確定是否到達(dá)了下 一個(gè)綁定點(diǎn)。
圖10是圖解根據(jù)說明性實(shí)施例的預(yù)先存在的集中應(yīng)用的操作的流程圖。 操作開始,并且,開發(fā)者在集中應(yīng)用集成(CAI)引擎中,捆綁預(yù)先存在的集中 網(wǎng)絡(luò)服務(wù)/SIP或僅用于SIP的應(yīng)用(塊1002)。隨后,CAI引擎生成網(wǎng)絡(luò)服務(wù) 實(shí)現(xiàn)和SIP小服務(wù)程序(塊1004)。 CAI引擎監(jiān)聽?wèi)?yīng)用特定信令(塊1006),,并 且,確定是否到達(dá)過渡(塊1008)。
如果未到達(dá)過渡,則操作返回到塊1006,以監(jiān)聽?wèi)?yīng)用特定信令。如果在 塊1008中、到達(dá)過渡,則CAI引擎維持狀態(tài)信息(塊1010)。 CAI引擎產(chǎn)生或 接受使用網(wǎng)絡(luò)服務(wù)的交互請(qǐng)求(塊1012)。之后,操作返回到塊1006,以監(jiān)聽 應(yīng)用特定信令。
圖ll是圖解根據(jù)說明性實(shí)施例的新的集中應(yīng)用的操作的流程圖。操作開 始,并且,開發(fā)者將SIP調(diào)用流程定義分解為一組SIP小服務(wù)程序、以及一 組網(wǎng)絡(luò)服務(wù)實(shí)現(xiàn)(塊1102)。隨后,開發(fā)者填充商業(yè)邏輯(塊1104),并且,將 包括用于集中應(yīng)用的WSDL、 SIP小服務(wù)程序、以及網(wǎng)絡(luò)服務(wù)實(shí)現(xiàn)的實(shí)體對(duì) 象與集中應(yīng)用執(zhí)行(CAE)引擎特定部署描述符一起封裝(塊1106)。該部署描述 符指示正在使用的WSDL+SIP調(diào)用流程、適當(dāng)?shù)膽?yīng)用狀態(tài)模型、以及應(yīng)在運(yùn) 行時(shí)間向CAE引擎注冊(cè)的任意監(jiān)聽器。
接下來,在運(yùn)行時(shí)間,CAE引擎耗用用于集中應(yīng)用的WSDL(塊1108), 并且,CAE引擎注冊(cè)監(jiān)聽器(塊1110)。 CAE引擎監(jiān)聽?wèi)?yīng)用特定的信令(塊1112), 并確定是否到達(dá)過渡(塊1114)。如果未到達(dá)過渡,則操作返回到塊1112,以 監(jiān)聽?wèi)?yīng)用特定信令。如果在塊1114中、到達(dá)過渡,則CAE引擎維持狀態(tài)信 息(塊1116)。 CAE引擎產(chǎn)生或接受使用網(wǎng)絡(luò)服務(wù)的交互請(qǐng)求(塊1118)。之后,
操作返回到塊1112,以監(jiān)聽?wèi)?yīng)用特定信令。
現(xiàn)有技術(shù)的創(chuàng)建集中服務(wù)的方法需要用于編寫SIP小服務(wù)程序的基本的 網(wǎng)絡(luò)專門知識(shí)。另外,網(wǎng)絡(luò)服務(wù)接口趨向于通過較高級(jí)的接口而與應(yīng)用交互, 并且,由此,該實(shí)現(xiàn)必須致力于支持抽象。這是耗時(shí)的過程,并且,集中服
務(wù)的創(chuàng)建者必須使用正式的(full fledged)編程環(huán)境來產(chǎn)生可通過此抽象而尋 址的調(diào)用流程邏輯,如SIP小服務(wù)程序。
上述說明性實(shí)施例的對(duì)WSDL的接口擴(kuò)展提供了有關(guān)網(wǎng)絡(luò)實(shí)現(xiàn)的實(shí)現(xiàn)行 為的重要的信息量。該接口還以這樣的方式定義接口的語義如果將調(diào)用流 程分段為適當(dāng)?shù)膯卧?,則可將核心、高級(jí)判定邏輯形象化為更高級(jí)的處理工 具。說明性實(shí)施例可通過將每個(gè)片段的執(zhí)行委派到所生成的代碼、或解釋引 擎,而針對(duì)此分別(sepamtion)生效。在每個(gè)綁定點(diǎn)上,可將控制傳遞到外部 部件,如處理服務(wù)器,以確定接下來要執(zhí)行哪個(gè)片段??赏ㄟ^包括最后的消 息內(nèi)容(例如,通過SOAP附件),而在所生成或解釋的應(yīng)用、以及外部世界 之間傳遞信息。
圖12是圖解根據(jù)說明性實(shí)施例的自動(dòng)生成WSDL調(diào)用流程實(shí)現(xiàn)的開發(fā) 環(huán)境的操作的流程圖。操作開始,并且,開發(fā)工具接收利用SIP/調(diào)用流程交 互的擴(kuò)展的WSDL(塊1202)。對(duì)于調(diào)用流程中的特定的窄范圍的消息交換, 將容易生成實(shí)現(xiàn)。由此,根據(jù)說明性實(shí)施例,開發(fā)工具允許用戶選擇調(diào)用流 程中的瑣碎的消息交換(塊1204)。
SIP小服務(wù)程序提供了用于與網(wǎng)絡(luò)通信的基礎(chǔ)結(jié)構(gòu)。開發(fā)工具可自動(dòng)生成 這些小服務(wù)程序,以形成將在集中應(yīng)用引擎中執(zhí)行的應(yīng)用的模板表單 (template form)??商鎿Q地,開發(fā)工具可生成可在解釋引擎中解釋的應(yīng)用的模 板表單。
例如,應(yīng)用的^t板表單可為圖7中的集中網(wǎng)絡(luò)服務(wù)/SIP應(yīng)用722。隨后, 用戶可訪問(dropin)較高級(jí)的商業(yè)邏輯(塊U08)。之后,操作結(jié)束。網(wǎng)絡(luò)服務(wù) 為應(yīng)用提供較高級(jí)的控制邏輯,其也被稱為商業(yè)邏輯。例如,網(wǎng)絡(luò)服務(wù)可確 定接下來要執(zhí)行哪個(gè)調(diào)用流程片段。將自動(dòng)生成的SIP小服務(wù)程序、或要解 釋的應(yīng)用的模板表單配置為傳遞到包括最后的消息內(nèi)容的網(wǎng)絡(luò)服務(wù)信息。 在一個(gè)示例實(shí)施例中,例如,自動(dòng)生成的代碼可使用SOAP附件而傳遞此信
由此,開發(fā)工具自動(dòng)地生成應(yīng)用的模板表單(塊1206)。在生成模式中,
在接口內(nèi)描述的每個(gè)調(diào)用流程片段對(duì)應(yīng)于所生成的SIP小服務(wù)程序。應(yīng)當(dāng)獨(dú)
立地執(zhí)行片段,如SIP事務(wù)。考慮以下例子INVITE(邀請(qǐng))—100-180 —200 —OK(初始和重新邀請(qǐng))、SUBSCRIBE(訂購)—0K —NOTIFY(通知)—0K、分 支INVITE、 NOTIFY —OK、 BYE(再見)—OK等。典型地,如在上面的例子 中選擇的那樣,可選擇這些片段,以便暗示并觀察片段之間的數(shù)據(jù)流??赏?過使用例如SIP小服務(wù)程序setHandler()方法的機(jī)制,而實(shí)現(xiàn)片段之間的交遞。
典型地,將三個(gè)綁定交互類型應(yīng)用于此模型引導(dǎo)、規(guī)定、動(dòng)作。對(duì)于 引導(dǎo)和規(guī)定,將繼續(xù)執(zhí)行,直到到達(dá)初始綁定點(diǎn)為止,典型地,在片段的結(jié) 尾。在這樣的點(diǎn)上,如果綁定交互為引導(dǎo),則將進(jìn)行調(diào)出,以確定接下來要 執(zhí)行哪個(gè)片段。調(diào)出將提供所附連(例如,通過SOAP附件)的最后的SIP消息。 到下一個(gè)片段的引導(dǎo)還將采用將輸入消息提供給片段的附連。如果綁定點(diǎn)為 規(guī)定,那么,將商議所關(guān)聯(lián)的規(guī)則,以確定接下來要執(zhí)行哪個(gè)片段。還可使 用動(dòng)作交互,以在對(duì)話或新的交互中異步地取消調(diào)用流程片段(例如,終止)。
所生成的應(yīng)用可為集中應(yīng)用。應(yīng)用可使用會(huì)話相似性來將傳入請(qǐng)求? 1導(dǎo) 到正在執(zhí)行所生成的代碼的、群集中的相同的應(yīng)用服務(wù)器。這筒化了生成模 型,從而允許所生成的代碼關(guān)注于邏輯,并允許應(yīng)用服務(wù)器層處理負(fù)載平衡、 故障切換等。
調(diào)用流程實(shí)現(xiàn)的解釋執(zhí)行可類似于所生成的方法??赏ㄟ^例如國際商用 機(jī)器公司的^^58 1^^@語音服務(wù)器的調(diào)用流程引擎,而執(zhí)行解釋實(shí)現(xiàn)。
應(yīng)理解,說明性實(shí)施例可采用整體硬件實(shí)施例、整體軟件實(shí)施例或包括 硬件和軟件元素兩者的實(shí)施例的形式。在一個(gè)示例實(shí)施例中,以軟件方式實(shí) 現(xiàn)說明性實(shí)施例的機(jī)制,其包括但不限于固件、駐留軟件、微碼等。
此外,說明性實(shí)施例可采用可從計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)訪問的計(jì) 算機(jī)軟件產(chǎn)品的形式,所述介質(zhì)提供由計(jì)算機(jī)或任何指令執(zhí)行系統(tǒng)使用或者 由計(jì)算機(jī)和任何指令執(zhí)行系統(tǒng)聯(lián)合使用的程序代碼。為了此描述的目的,計(jì) 算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可為任何能夠包含、存儲(chǔ)、通信、傳播或傳輸該 程序的設(shè)備,其中由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用、或由指令執(zhí)行系統(tǒng)、 設(shè)備或裝置聯(lián)合使用所述代碼。
介質(zhì)可為電、磁、光、電磁、紅外、或半導(dǎo)體系統(tǒng)(或者設(shè)備或裝置)、或 傳播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的例子包括半導(dǎo)體或固態(tài)存儲(chǔ)器、磁帶、可拆卸 計(jì)算機(jī)盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、固體^t盤和光盤。
光盤的當(dāng)前例子包括致密盤-只讀存儲(chǔ)器(CD-ROM)、致密盤-讀/寫(CD-R/W)、 以及DVD。
適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)將包括直接或通過系統(tǒng)總 線而間接耦接到存儲(chǔ)元件的至少一個(gè)處理器。所述存儲(chǔ)元件可包括在程序代 碼的實(shí)際執(zhí)行期間采用的本地存儲(chǔ)器、大容量存儲(chǔ)裝置、以及提供對(duì)于至少 一些程序代碼的暫時(shí)存儲(chǔ)以便減小在執(zhí)行期間必須從大容量存儲(chǔ)裝置檢索代 碼的次數(shù)的高速緩沖存儲(chǔ)器。
輸入/輸出或I/O裝置(包括但不限于鍵盤、顯示器、定點(diǎn)裝置等)可直接 或通過中間I/O控制器而耦接到該系統(tǒng)。網(wǎng)絡(luò)適配器也可耦接到該系統(tǒng),使
得數(shù)據(jù)處理系統(tǒng)能夠通過中間專用或公共網(wǎng)絡(luò)而耦接到其它數(shù)據(jù)處理系統(tǒng)、 或到遠(yuǎn)程打印機(jī)或存儲(chǔ)裝置。調(diào)制解調(diào)器、有線電視調(diào)制解調(diào)器、以及以太 網(wǎng)卡正是當(dāng)前可用的網(wǎng)絡(luò)適配器的類型中的 一些。
為了說明和描述已經(jīng)呈現(xiàn)了本發(fā)明的描述,并且不意于以公開的形式窮 舉或限定本發(fā)明。本領(lǐng)域的技術(shù)人員將理解,可出現(xiàn)許多修改和改變。為了 最佳地解釋本發(fā)明地原理、實(shí)踐應(yīng)用和使得本領(lǐng)域的技術(shù)人員能夠理解本發(fā) 明對(duì)于具有各種修改的各種實(shí)施例適于預(yù)期的特定使用,選擇并描述了實(shí)施 例。
權(quán)利要求
1、一種在用于執(zhí)行具有調(diào)用流程交互的集中網(wǎng)絡(luò)服務(wù)應(yīng)用的數(shù)據(jù)處理系統(tǒng)中的方法,該方法包括接收擴(kuò)展描述語言文檔,該擴(kuò)展描述語言文檔描述一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件,已在該擴(kuò)展描述語言文檔嵌入了用于一個(gè)或多個(gè)調(diào)用流程片段的調(diào)用流程描述,并且,該擴(kuò)展描述語言文檔包括至少一個(gè)調(diào)用流程綁定,其中,所述至少一個(gè)調(diào)用流程綁定將交互操作與所述一個(gè)或多個(gè)調(diào)用流程片段中的給定調(diào)用流程片段中的綁定點(diǎn)相關(guān)聯(lián);從所述一個(gè)或多個(gè)調(diào)用流程片段中選擇一個(gè)或多個(gè)消息交換;自動(dòng)生成用于一個(gè)或多個(gè)所選消息交換中的每個(gè)的實(shí)現(xiàn),以形成應(yīng)用模板;為所述一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件提供所述應(yīng)用模板中的商業(yè)邏輯,以形成集中應(yīng)用;以及執(zhí)行該集中應(yīng)用。
2、 如權(quán)利要求1所述的方法,其中,該描述語言文檔是網(wǎng)絡(luò)服務(wù)描述 語言文檔。
3、 如權(quán)利要求1所述的方法,其中,所述一個(gè)或多個(gè)調(diào)用流程片段包 括一個(gè)或多個(gè)會(huì)話啟動(dòng)協(xié)議調(diào)用流程片段。
4、 如權(quán)利要求1所述的方法,其中,從所述一個(gè)或多個(gè)調(diào)用流程片段 中選擇一個(gè)或多個(gè)消息交換包括從用戶接收對(duì)一個(gè)或多個(gè)消息交換的選擇。
5、 如權(quán)利要求1所述的方法,其中,自動(dòng)生成用于一個(gè)或多個(gè)所選消 息交換中的每個(gè)的實(shí)現(xiàn)包括自動(dòng)生成一個(gè)或多個(gè)小服務(wù)程序,其中,所述一個(gè)或多個(gè)小服務(wù)程序中 的每個(gè)對(duì)應(yīng)于所述一個(gè)或多個(gè)調(diào)用流程片段中的一個(gè)。
6、 如權(quán)利要求5所述的方法,其中,所述一個(gè)或多個(gè)小服務(wù)程序包括 一個(gè)或多個(gè)會(huì)話啟動(dòng)協(xié)議小服務(wù)程序。
7、 如權(quán)利要求5所述的方法,其中,執(zhí)行集中應(yīng)用包括 在集中應(yīng)用執(zhí)行引擎中執(zhí)行應(yīng)用模板。
8、 如權(quán)利要求l所述的方法,其中,執(zhí)行集中應(yīng)用包括 在解釋引擎中解釋應(yīng)用模板。
9、 一種用于執(zhí)行具有調(diào)用流程交互的集中網(wǎng)絡(luò)服務(wù)應(yīng)用的數(shù)據(jù)處理系統(tǒng),包括處理器;以及耦接到該處理器的存儲(chǔ)器,其中,該存儲(chǔ)器包含指令,所述指令在被該 處理器執(zhí)行時(shí)使得該處理器接收擴(kuò)展描述語言文檔,該擴(kuò)展描述語言文檔描述一 個(gè)或多個(gè)網(wǎng)絡(luò) 服務(wù)接口組件,已在該擴(kuò)展描述語言文檔嵌入了用于一個(gè)或多個(gè)調(diào)用流 程片段的調(diào)用流程描述,并且,該擴(kuò)展描述語言文檔包括至少一個(gè)調(diào)用 流程綁定,其中,所述至少一個(gè)調(diào)用流程綁定將交互操作與所述一個(gè)或 多個(gè)調(diào)用流程片段中的給定調(diào)用流程片段中的綁定點(diǎn)相關(guān)聯(lián); 從所述一個(gè)或多個(gè)調(diào)用流程片段中選擇一個(gè)或多個(gè)消息交換; 自動(dòng)生成用于一個(gè)或多個(gè)所選消息交換中的每個(gè)的實(shí)現(xiàn),以形成應(yīng)用模板;為所述一個(gè)或多個(gè)網(wǎng)絡(luò)服務(wù)接口組件提供所述應(yīng)用模板中的商業(yè)邏 輯,以形成集中應(yīng)用;以及 執(zhí)行該集中應(yīng)用。
10、 如權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,自動(dòng)生成用于一個(gè)或多 個(gè)所選消息交換中的每個(gè)的實(shí)現(xiàn)包括自動(dòng)生成一個(gè)或多個(gè)小服務(wù)程序,其中,所述一個(gè)或多個(gè)小服務(wù)程序中 的每個(gè)對(duì)應(yīng)于所述一個(gè)或多個(gè)調(diào)用流程片段中的 一個(gè)。
11、 如權(quán)利要求IO所述的數(shù)據(jù)處理系統(tǒng),其中,執(zhí)行集中應(yīng)用包括 在集中應(yīng)用執(zhí)行引擎中執(zhí)行應(yīng)用模板。
12、 如權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,執(zhí)行集中應(yīng)用包括 在解釋引擎中解釋應(yīng)用模板。
全文摘要
開發(fā)工具接收具有SIP/調(diào)用流程交互的擴(kuò)展的網(wǎng)絡(luò)服務(wù)描述語言。該開發(fā)工具允許用戶選擇調(diào)用流程中的瑣碎的消息交換。該開發(fā)工具可自動(dòng)生成用于所選消息交換的小服務(wù)程序,以形成將在集中應(yīng)用引擎中執(zhí)行的應(yīng)用的模板表單??商鎿Q地,開發(fā)工具可生成可在解釋引擎中解釋的應(yīng)用的模板表單。隨后,用戶可訪問較高級(jí)的商業(yè)邏輯。將自動(dòng)生成的小服務(wù)程序、或要解釋的應(yīng)用的模板表單配置為傳遞到包括最后的消息內(nèi)容的網(wǎng)絡(luò)服務(wù)信息。
文檔編號(hào)G06F9/44GK101169717SQ20071018115
公開日2008年4月30日 申請(qǐng)日期2007年10月12日 優(yōu)先權(quán)日2006年10月26日
發(fā)明者邁克爾·A·吉爾菲克斯, 里斯·D·烏爾里克 申請(qǐng)人:國際商業(yè)機(jī)器公司