亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于調(diào)度數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)中工作單元執(zhí)行的方法和系統(tǒng)的制作方法

文檔序號(hào):6432836閱讀:139來(lái)源:國(guó)知局
專利名稱:用于調(diào)度數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)中工作單元執(zhí)行的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,更具體地講,涉及一種方法以及一種相應(yīng)的系統(tǒng)。
背景技術(shù)
調(diào)度方法通常用于一個(gè)數(shù)據(jù)處理系統(tǒng),以控制不同的工作單元(例如批處理中的作業(yè))的提交。為此,最近若干年中,已提出了多種類型的調(diào)度器,以自動(dòng)化大量作業(yè)的提交。調(diào)度器的一個(gè)例子是,IBM公司的“Tivoli WorkloadScheduler”。
一個(gè)調(diào)度器,根據(jù)預(yù)先制定的計(jì)劃提交作業(yè),這一計(jì)劃建立了一個(gè)所希望的作業(yè)的執(zhí)行流程。凡當(dāng)必須提交一個(gè)作業(yè)時(shí),調(diào)度器把一個(gè)執(zhí)行請(qǐng)求發(fā)送于一個(gè)相應(yīng)的代理,代理直接控制作業(yè)的執(zhí)行,并把反饋信息返回到調(diào)度器。在這一方式下,為所有作業(yè)提供了一個(gè)單一的中心控制點(diǎn)。
而且,大多數(shù)可用的調(diào)度器都提供了額外的服務(wù)。通常,在處理時(shí)態(tài)和前驅(qū)約束(例如,由其它作業(yè)的完成或系統(tǒng)資源的可用性所定義的)方面,調(diào)度器功能是十分完善的。還可以為調(diào)度器配備圖形用戶接口(GUI),GUI允許創(chuàng)建、修改以及刪除作業(yè)或計(jì)劃的定義,這允許控制和監(jiān)視調(diào)度器所執(zhí)行的操作。而且,某些調(diào)度器還集成了性能監(jiān)視、負(fù)載平衡與/或報(bào)告功能。
在這一技術(shù)領(lǐng)域中,人們所熟知的調(diào)度器的一個(gè)缺點(diǎn)是,它們是專門(mén)針對(duì)某一個(gè)公司內(nèi)的一個(gè)封閉的環(huán)境中的工作而設(shè)計(jì)的。事實(shí)上,調(diào)度器通常提交僅在在單個(gè)臺(tái)計(jì)算機(jī)上執(zhí)行的工作單元(其中,調(diào)度器本身正在運(yùn)行),或至多支持對(duì)通過(guò)公司專用網(wǎng)絡(luò)連接在一起的一系列計(jì)算機(jī)的管理。
總之,在這一技術(shù)領(lǐng)域中,尚無(wú)已知的調(diào)度器可用于在一個(gè)開(kāi)放環(huán)境中控制外部服務(wù)(通常由第三方所提供)的調(diào)用。實(shí)際上,能夠以多種方式訪問(wèn)外部服務(wù),通常這些方式與調(diào)度器的要求不兼容。
Internet,特別是Web服務(wù)的廣泛流行,加劇了這一問(wèn)題。一個(gè)Web服務(wù)(也稱為應(yīng)用服務(wù))由一系列功能組成,其它應(yīng)用可通過(guò)一個(gè)以標(biāo)準(zhǔn)化方式定義的(不管所提供的功能的實(shí)際的實(shí)現(xiàn))接口利用這些功能??山?jīng)由普通存在的協(xié)議和數(shù)據(jù)格式(例如HTTP、SOAP以及XML)對(duì)Web服務(wù)加以訪問(wèn)。在這一方式下,Web服務(wù)已成為應(yīng)用集成的標(biāo)準(zhǔn)平臺(tái),并已成為轉(zhuǎn)向Internet上分布式計(jì)算的基本構(gòu)筑模塊。
因此,可用的調(diào)度器的局限性,嚴(yán)重妨礙了對(duì)Internet的利用。特別是,這一局限性妨礙了傳統(tǒng)的應(yīng)用與第三方所提供的Web服務(wù)(例如,在電子商務(wù)應(yīng)用中實(shí)現(xiàn)在線事務(wù)處理時(shí))的互操作性。

發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是,使調(diào)度器能夠管理外部服務(wù)。
具體地講,本發(fā)明的一個(gè)目的是允許調(diào)度器調(diào)用外部服務(wù)。
本發(fā)明的另一個(gè)目的是,提供一種能夠在異構(gòu)環(huán)境中使用的調(diào)度方法。
本發(fā)明的又一個(gè)目的是,支持調(diào)度器與外部服務(wù)的集成。
具體地講,本發(fā)明的一個(gè)目的是,把調(diào)度器中已經(jīng)可用的額外的功能用于管理外部服務(wù)。
通過(guò)一種在一個(gè)具有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)中調(diào)度工作單元的執(zhí)行的方法,實(shí)現(xiàn)這些以及其它相關(guān)的目的,在一個(gè)中心調(diào)度應(yīng)用的控制下,該方法包括下列步驟把至少一個(gè)工作單元與一個(gè)描述符相關(guān)聯(lián),其中描述符包括一個(gè)對(duì)可根據(jù)一個(gè)預(yù)先定義的接口文檔來(lái)訪問(wèn)的一個(gè)外部服務(wù)進(jìn)行指示的指示信息;根據(jù)一個(gè)預(yù)先定義的計(jì)劃,提交用于執(zhí)行的工作單元;檢索與所提交的工作單元相關(guān)的每一外部服務(wù)的接口文檔;根據(jù)相應(yīng)的接口文檔,為每一與所提交的工作單元相關(guān)的外部服務(wù)建立一條請(qǐng)求消息;以及把每一條請(qǐng)求消息發(fā)送到相應(yīng)的外部服務(wù),以導(dǎo)致對(duì)外部服務(wù)的調(diào)用。
本發(fā)明還提供了一種用于執(zhí)行該方法的計(jì)算機(jī)程序,以及一種體現(xiàn)該程序的產(chǎn)品。而且,還包括一種用于調(diào)度工作單元的執(zhí)行的相應(yīng)系統(tǒng)以及一種包含該系統(tǒng)的數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)。
在所附權(quán)利要求中闡述了被視為本發(fā)明的特性的新型特性。然而,通過(guò)參照以下的詳細(xì)描述,并結(jié)合附圖加以閱讀,將可對(duì)本發(fā)明本身以及本發(fā)明的這些以及其它相關(guān)的目的和優(yōu)點(diǎn)最好地加以理解。


圖1a是一個(gè)示意性方框圖,描述了其中可以使用本發(fā)明的方法的一個(gè)數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu);圖1b描述了該基礎(chǔ)結(jié)構(gòu)的一個(gè)通用計(jì)算機(jī)的功能塊;圖2描述了可以用于實(shí)踐該方法的軟件部件;圖3a~3c描述了與該方法的圖示性實(shí)現(xiàn)相關(guān)的圖表。
具體實(shí)施例方式
具體參照?qǐng)D1a,圖1a圖示了具有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)100的一個(gè)示意性方框圖。數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)100包括一個(gè)中心調(diào)度服務(wù)器105,用于提交非交互作業(yè)。調(diào)度服務(wù)器105與控制作業(yè)的實(shí)際執(zhí)行的多個(gè)服務(wù)器110進(jìn)行通信。一或多個(gè)執(zhí)行服務(wù)器110訪問(wèn)一個(gè)全局網(wǎng)絡(luò)115,全局網(wǎng)絡(luò)115通常由Internet構(gòu)成。因此,這些執(zhí)行服務(wù)器110能夠與提供相應(yīng)服務(wù)(例如實(shí)現(xiàn)存儲(chǔ)器或客戶關(guān)系管理)的多個(gè)Web服務(wù)器120進(jìn)行交互。把Internet 115中可用的Web服務(wù)以列表形式登記在一個(gè)分布式注冊(cè)表中,通過(guò)一組相應(yīng)的服務(wù)器125實(shí)現(xiàn)這一功能。
更詳細(xì)地講,分布式注冊(cè)表由一個(gè)符合UDDI(通用描述、發(fā)現(xiàn)以及集成)規(guī)范的基于XML的文檔組成。在一個(gè)WSDL(Web服務(wù)描述語(yǔ)言)文檔中指定由每一商業(yè)組織所提供的Web服務(wù)。WSDL文檔由一組基于XML的定義組成,把這些定義劃分成抽象定義和具體定義(以允許針對(duì)不同的技術(shù)重新使用抽象定義)。具體地講,抽象定義包括類型(指定與Web服務(wù)相關(guān)的數(shù)據(jù)類型)、消息(指定加以交換的數(shù)據(jù)的類型)、操作(根據(jù)所涉及的消息,指定所支持的動(dòng)作)、以及端口類型(對(duì)相關(guān)的操作進(jìn)行分組)。另一方面,具體的定義包括綁定(針對(duì)端口類型,把具體的協(xié)議說(shuō)明與操作和消息相關(guān)聯(lián))、端口(指定實(shí)現(xiàn)端口類型的Web服務(wù)器的網(wǎng)絡(luò)地址)、以及服務(wù)(對(duì)相關(guān)的端口進(jìn)行分組)。另外,WSDL規(guī)范還支持可擴(kuò)展性元素,可用于提供專門(mén)針對(duì)具體技術(shù)的信息(以抽象定義或具體定義的形式)。
把WEDL文檔的定義包含在以下的元素中<definitions name=myName targetNamespace=myNamespace>
....
<\definitions>
可以作為選項(xiàng)把屬性“name”和“targeNamespace”用于以簡(jiǎn)化的形式識(shí)別WSDL文檔。具體地講,屬性“name”提供了賦予WSDL文檔的名字(“myName”),而屬性“targetNamespace”指定了一個(gè)相應(yīng)的名字空間(“myNamespace”)。名字空間由用于限定名字的唯一標(biāo)識(shí)符組成。通常,作為名字空間給出一個(gè)所希望的Web內(nèi)容點(diǎn)(例如一個(gè)Web網(wǎng)點(diǎn)地址)的URI(統(tǒng)一資源標(biāo)識(shí)符)。
以下語(yǔ)句定義了類型<types>
<schema target Namespace=my Schema>
....
</schema>
</types>
標(biāo)記“schema”可用于指定一個(gè)所希望的模式(“mySchema”)的URI。模式提供了根據(jù)XSD(XML模式定義)規(guī)范的數(shù)據(jù)類型的一個(gè)抽象表示。作為選擇,也可以經(jīng)由可擴(kuò)展性元素(為類型定義提供了一個(gè)XML包容文件)添加特定的數(shù)據(jù)類型。優(yōu)選的做法是,使用下列形式定義基本數(shù)據(jù)類型<element name=myElement type=myType/>
其中,屬性“name”提供在WSDL文檔中的數(shù)據(jù)類型的唯一名字(“myElement”),而屬性“type”涉及所希望的數(shù)據(jù)類型。相反,復(fù)雜的數(shù)據(jù)類型通過(guò)組合多種數(shù)據(jù)類型和下面的形式來(lái)定義<element name=myElement>
<complex Type>
<all>
....
</all>
</complex Type>
</element>
每一條消息由一或多個(gè)部分組成,這些部分代表了其邏輯成份<message name=myMessage>
<part name=myPart element=myElement type=myType/>
....
</message>
消息的屬性“name”提供了WSDL文檔中一個(gè)唯一的名字(“myMessage”)。對(duì)于每一條消息部分,屬性“name”定義了消息中的一個(gè)唯一的名字(“myPart”)。消息部分包括一或多個(gè)參數(shù),每一個(gè)參數(shù)包括一個(gè)屬性“element”,指定參數(shù)的名字(“myElement”);以及一個(gè)屬性“type”,涉及其類型(“myType”)。
每一個(gè)端口類型的定義(具有相應(yīng)的操作)擁有以下語(yǔ)法<port Type name=myPortType>
<operation name=myOperation>
<....name=myMessage message=myDefinition/>
</operation>
....
</portType>
端口類型的屬性“name”提供了WSDL文檔中的一個(gè)唯一的名字(“myPortType”)。針對(duì)每一個(gè)操作,屬性“name”定義了端口類型中的一個(gè)唯一的名字(“myOperation”)。操作包括一或多條消息(由一個(gè)相應(yīng)的元素限定,如以下所描述的),每一條消息由一個(gè)指定消息的名字(“myMessage”)的屬性“name”以及一個(gè)涉及其抽象定義(“myDefinition”)的屬性“message”加以定義。另外,可以使用另一個(gè)屬性“parameterOrder”,指定(經(jīng)由其參數(shù)的一個(gè)有序的列表)操作的一個(gè)實(shí)際簽名(signature)。
WSDL文檔支持4種操作類型單向(其中,僅接收一條消息)、請(qǐng)求-回答(其中,發(fā)送一條消息,并接收一條相關(guān)的消息)、征求-回答(其中,接收一條消息,并發(fā)送一條相關(guān)的消息)、以及通告(其中,僅發(fā)送一條消息)。
單向操作<operation name=myOperation>
<input name=myInput message=myInputDefinition/>
</operation>
包括針對(duì)請(qǐng)求的一個(gè)元素“input”。
請(qǐng)求回答操作<operation name=myOperation>
<input name=myInput message=myInputDefinition/>
<output name=myOutput message=myOutputDefinition>
<fault name=myFault message=myFaultDefinition/>
</operation>
包括一個(gè)針對(duì)請(qǐng)求的元素“input”、一個(gè)針對(duì)回答的元素“Output”、以及一個(gè)針對(duì)任何錯(cuò)誤的可以作為一個(gè)操作結(jié)果返回的元素“fault”。
把類似的消息包含于征求-回答操作中<operation name=myOperation>
<output name=myOutput message=myOutputDefinition/>
<input name=myInput message=myInputDefinition/>
<fault name=myFault message=myFaultDefinition/>
以及通告操作中<operation name=myOperation>
<output name=myOutput message=myOutputDefinition/>
</operation>
為了避免必須為操作中的每一條消息命名,WSDL文檔提供了某些默認(rèn)值。具體地講,如果沒(méi)有為單向或通告操作的單個(gè)消息指定屬性“name”,則把該消息的名字默認(rèn)為該操作的名字。同樣,如果沒(méi)有為請(qǐng)求-回答或征求-回答操作的輸入/輸出消息指定元素“name”,則把這些消息的名字分別默認(rèn)為具有所附“request”/“solicit”或“response”的操作的名字。
由下列元素提供對(duì)每一端口類型的綁定<binding name=myBinding type=myPortType>
....
<operation name=myOperation>
....
<input name=myInput>
....
</input>
</output name=myOutput>
....
</output>
<fault name=myFault>
....
</fault>
</operation>
</binding>
屬性“name”為WSDL文檔中的綁定提供了一個(gè)唯一的名字(“myBinging”),屬性“type”涉及被綁定的端口類型(“myPortType”)。把可擴(kuò)展性元素用于添加關(guān)于綁定的進(jìn)一步的信息,并用于為每一操作以及任何相應(yīng)的輸入、輸出以及故障消息指定具體的文法每一服務(wù)(具有相應(yīng)的端口)的定義具有下列的語(yǔ)法<service name=myService>
<port name=myPort binding=myBinding>
....
</port>
</service>
服務(wù)的屬性“name”提供了WSDL文檔中的一個(gè)唯一的名字。(“myService”)。針對(duì)每一個(gè)端口,屬性“name”提供了WSDL文檔中的一個(gè)唯一的名字(“myPort”),屬性“binding”指的是相應(yīng)的綁定(“myBinging”)??蓴U(kuò)展性元素用于指定一或多個(gè)Web服務(wù)器的具體網(wǎng)絡(luò)地址(也叫做端點(diǎn)),這實(shí)際上實(shí)現(xiàn)了相應(yīng)的端口類型的操作。如果服務(wù)具有共享一個(gè)端口類型的多個(gè)端口,則這些端口提供了一個(gè)語(yǔ)義上等價(jià)的行為(但采用了不同的綁定或端點(diǎn))。
優(yōu)選做法是,把各Web服務(wù)的定義分離成獨(dú)立的文檔,其中使用相應(yīng)的元素(“import”)把它們包括進(jìn)來(lái),而且,可以把一個(gè)元素“documentation”用于任何定義,以提供人可讀的信息。
使用針對(duì)大多數(shù)標(biāo)準(zhǔn)協(xié)議,例如針對(duì)SOAP(簡(jiǎn)單對(duì)象存取協(xié)議)的特定綁定元素,擴(kuò)展WSDL。SOAP是一種專門(mén)設(shè)計(jì)的、旨在允許運(yùn)行在任何一種操作系統(tǒng)上的程序進(jìn)行通信的程序。特別是,SOAP的設(shè)計(jì)目標(biāo)之一是,封裝遠(yuǎn)程程序調(diào)用(即RPC)。
SOAP涉及結(jié)點(diǎn)之間的消息交換,具體地講,SOAP消息從一個(gè)最初的發(fā)送方結(jié)點(diǎn)傳送到一個(gè)最終接收方結(jié)點(diǎn),可能沿相應(yīng)的路徑經(jīng)過(guò)一系列中間結(jié)點(diǎn)。每一條SOAP消息由具有下列結(jié)構(gòu)的一個(gè)基于XML的文檔組成<envEnvelopexmlsenv=myNamespace envencodingStyle=myEncodingStyle>
<envHeader>
....
</envHeader>
<envBody>
....
</envBody>
</envEnvelope>
把SOAP消息封入一個(gè)封裝中,這一封裝由元素“envEnvelope”加以定義。屬性“xmlsenv”允許指定一個(gè)相應(yīng)的名字空間(“myNamespace”)。而且,屬性“envEnvelopeStyle”還用于提供限定SOAP消息(根據(jù)用于順序化其內(nèi)容的相應(yīng)的規(guī)則)的內(nèi)容的URI(“myEncodingStyle”)。
封裝包括一個(gè)首標(biāo)(由元素“envHeader”來(lái)定義)以及一個(gè)主體(由元素“envBody”)加以定義。通常把它們由子元素(叫做“塊”)構(gòu)成。SOAP規(guī)范僅規(guī)定了如何處理這些元素,而沒(méi)有規(guī)定如何處理它們的內(nèi)容(內(nèi)容是獨(dú)立于具體應(yīng)用的)。
具體地講,首標(biāo)是一個(gè)可選的元素,可用于提供附加的服務(wù),其中的許多服務(wù)涉及中間結(jié)點(diǎn)的加入。把首標(biāo)的塊指向沿消息路徑可能遇到的各個(gè)結(jié)點(diǎn)。根據(jù)這些結(jié)點(diǎn)的作用來(lái)標(biāo)識(shí)它們,可以由一個(gè)屬性“envrole”指定這些結(jié)點(diǎn)的作用。SOAP規(guī)范中定義了某些標(biāo)準(zhǔn)化的作用,例如“none”(意味著沒(méi)有結(jié)點(diǎn)應(yīng)處理該首標(biāo)塊)、“next”(與消息路徑中所遇到的下一個(gè)結(jié)點(diǎn)相關(guān))、或者“ultmateReceiver”(針對(duì)接收方結(jié)點(diǎn))。如果屬性“envrole”丟失,則把首標(biāo)塊指向接收方結(jié)點(diǎn)。為每一個(gè)結(jié)點(diǎn)假設(shè)一個(gè)特定作用的方法不是SOAP規(guī)范的一部分(而是在應(yīng)用級(jí)上確定的)。
接收SOAP消息的每一個(gè)中間結(jié)點(diǎn)處理與其作用相關(guān)的首標(biāo)塊(如果可能的話),然后,沿所希望的路徑傳遞SOAP消息。作為默認(rèn),把指向中間結(jié)點(diǎn)的首標(biāo)塊從輸出的SOAP消息中刪除(然而,作為處理的結(jié)果,可能會(huì)重新插入它們,不改變或改變它們的內(nèi)容)。當(dāng)必須把一個(gè)首標(biāo)塊指向任何有能力的中間結(jié)點(diǎn)時(shí),添加一個(gè)具有值“true”的屬性“envrelay”。在這一情況下,當(dāng)不能對(duì)指向中間結(jié)點(diǎn)的首標(biāo)塊進(jìn)行處理時(shí),把每一個(gè)這樣的首標(biāo)塊向前發(fā)送??梢圆迦胍粋€(gè)具有值“true”的可選的屬性“envmustUnderstand”,以指示該中間結(jié)點(diǎn)絕對(duì)必須以與它們的規(guī)范相一致的方式處理針對(duì)其作用的首標(biāo)塊。否則,將不傳遞SOAP消息,并產(chǎn)生一個(gè)故障異常(如以下所描述的)。這一特性可以確保將不忽視那些對(duì)于應(yīng)用的總體目的來(lái)說(shuō)至關(guān)重要的首標(biāo)塊。
另一方面,主體是一個(gè)必須由接收方結(jié)點(diǎn)加以處理的強(qiáng)制性元素。通常,在一個(gè)RPC應(yīng)用中,主體用于調(diào)用接收方結(jié)點(diǎn)上的一個(gè)過(guò)程。為此,主體提供了將傳送給過(guò)程的任何輸入?yún)?shù)的標(biāo)識(shí)和值。作為對(duì)此響應(yīng),接收方結(jié)點(diǎn)隨返回一個(gè)SOAP消息,該SOAP消息具有提供了任何輸出參數(shù)的標(biāo)識(shí)和值的主體。針對(duì)RPC,SOAP提供了一種把過(guò)程的一個(gè)返回代碼與其它輸出參數(shù)相區(qū)別的方法。返回代碼由一個(gè)元素“rpcresult”加以標(biāo)識(shí),這一元素直接包含返回代碼或包含一個(gè)子元素“mstatus”(它反過(guò)來(lái)包含實(shí)際的返回代碼)。
對(duì)于在SOAP消息處理過(guò)程中出現(xiàn)故障的情況,SOAP規(guī)范提供了一種處理這些情況模式。為此,使用一條SOAP消息的主體中的單個(gè)元素“envFault”報(bào)告所有的故障,元素“envFault”包括兩個(gè)強(qiáng)制性子元素“envCode”和“envReason”。元素“envCode”包括一個(gè)強(qiáng)制性子元素“envValue”(它提供故障的一個(gè)標(biāo)準(zhǔn)化的標(biāo)識(shí)符)以及一個(gè)可選的子元素“envSubcode”(進(jìn)一步限定故障)。元素“envReason”提供了一種對(duì)故障的人可讀的解釋。元素“envFault”還可以包括一個(gè)子元素“envNode”,用于識(shí)別產(chǎn)生故障的結(jié)點(diǎn)(這一子元素的缺少,意味著故障由接收結(jié)點(diǎn)生成)。另一個(gè)可選的子元素“envRole”指定了產(chǎn)生故障的結(jié)點(diǎn)所發(fā)揮的作用。
必須把SOAP消息綁定于一個(gè)下層的具體傳輸協(xié)議。對(duì)于沿消息路徑的每一個(gè)結(jié)點(diǎn),傳輸協(xié)議提供了可以傳遞到下一個(gè)結(jié)點(diǎn)(每一個(gè)結(jié)點(diǎn)可以支持一個(gè)不同的傳輸協(xié)議)的SOAP消息的一個(gè)順序化的表示。另外,傳輸協(xié)議還實(shí)現(xiàn)了應(yīng)用所需的不同的特征。一個(gè)特定的特征定義了一種由傳輸協(xié)議加以支持的消息的交換模式。例如,一個(gè)請(qǐng)求-回答模式提供了把作為一個(gè)請(qǐng)求的SOAP消息與作為回答的SOAP消息關(guān)聯(lián)起來(lái)的能力(從而可在兩個(gè)相鄰的結(jié)點(diǎn)之間交換SOAP消息)。反過(guò)來(lái),一個(gè)回答模式由一個(gè)非SOAP請(qǐng)求及跟隨其的一個(gè)相應(yīng)的SOAP回答組成。傳輸協(xié)議還提供了一個(gè)通用特征,這一特征允許對(duì)在接收方結(jié)點(diǎn)上所調(diào)用實(shí)際方法的選擇應(yīng)用全面控制。
SOAP規(guī)范支持大多數(shù)通用傳輸協(xié)議,例如HTTP。HTTP提供了一種通信模式,其中客戶機(jī)使用一個(gè)URI識(shí)別一個(gè)服務(wù)器、使用下層TCP/IP協(xié)議連接到該服務(wù)器、發(fā)布一個(gè)HTTP請(qǐng)求,并且在同一連接上接收一個(gè)HTTP回答。HTTP綁定支持請(qǐng)求-回答模式(使用POST Web方法)或回答模式(使用GETWeb方法)。在這一情況下,以自然的方式提供請(qǐng)求-回答功能(因此,在應(yīng)用或SOAP一級(jí)不需要進(jìn)一步的支持)。
回過(guò)頭來(lái)參考WSDL文檔,由以下的相應(yīng)元素中的語(yǔ)句表示針對(duì)SOAP協(xié)議的綁定<soapbinding transport=myTransport style=myDefaultStyle>
屬性“transport”指示相應(yīng)的傳輸協(xié)議(“myTransport”,例如HTTP)。如以下所描述的,屬性“style”為每一所包含的操作指定了默認(rèn)類型(“myDefaultStyle”)。
于是,綁定元素包括由相應(yīng)的端口類型所支持的每一操作的具體定義。作為一個(gè)整體,由下列語(yǔ)句提供用于操作的信息<operation soapAction=myAction style=myStyle>
屬性“soapAction”指定針對(duì)這一操作將加以執(zhí)行的實(shí)際動(dòng)作(“myAction”)。例如,在HTTP綁定中,該動(dòng)作定義了相應(yīng)HTTP請(qǐng)求的首標(biāo)。屬性“style”指示操作是面向RPC的(即包含輸入/輸出參數(shù))還是面向文檔的(即包含一或多個(gè)文本文檔)。如果沒(méi)有指定屬性“style”,則其默認(rèn)為元素“soapBinding”中所指示的值。如果這一元素沒(méi)有指定任何類型,則假設(shè)其為“document”。屬性“style”的值影響到如何把信息組裝于SOAP消息的主體中。具體地講,在面向文檔的操作中,把文檔直接嵌入到主體中,而在面向RPC的操作中,每一個(gè)參數(shù)出現(xiàn)在一個(gè)包裝中,給予包裝與該參數(shù)相同的名字。
由下列語(yǔ)句定義每一條消息<soapbody parts=myParts use=myUseencodingStyle=myEncodingStyle namespace=myNamespace/>
可選屬性“parts”指示出現(xiàn)在主體中的消息部分,(“myParts”),如果省略了這一屬性,則假設(shè)將把所有的消息部分包括在主體中。強(qiáng)制性屬性“use”指示消息的定義的類型(“myUse”)。當(dāng)該消息定義了消息的一個(gè)具體模式時(shí),屬性“use”具有值“l(fā)iteral”,或當(dāng)該消息定義了一個(gè)使用某些編碼規(guī)則順序化了的抽象說(shuō)明時(shí),屬性“use”具有值“encoded”。屬性“encodingStyle”指定從限制性最強(qiáng)的編碼規(guī)則到限制最弱的編碼規(guī)則識(shí)別編碼規(guī)則的URI的列表(“myEncodingStyle”)。屬性“namespace”提供了為進(jìn)行編碼必須輸入的名字空間(“myNamespace”)。
綁定還包括可以被插入到封裝中的首標(biāo)的定義<soapheader=myMessage part=myPart use=myUseencodingStyle=myEncodingStyle namespace=myNamespace/>
屬性“message”和“part”一起涉及出現(xiàn)在首標(biāo)中的消息部分。以與元素“主體”相同的方式使用屬性“use”、“encodingStyle”以及“namespace”。一個(gè)可選的元素“headerfault”(擁有與元素“header”相同的語(yǔ)法)允許指定用于傳輸相應(yīng)錯(cuò)誤信息的首標(biāo)。
綁定隨著對(duì)于相關(guān)端點(diǎn)地址的指定而結(jié)束<soapAdress Location=myLocation/>
屬性“l(fā)ocation”提供了實(shí)現(xiàn)端點(diǎn)的Web服務(wù)器的URI(“myLocation”)。
在文檔“Web Services Description Language(WSDL)1.1”中可以發(fā)現(xiàn)關(guān)于WSDL規(guī)范的更詳細(xì)的描述,而在文檔“SOAP Version 1.2 Part 0Primer”中可以發(fā)現(xiàn)關(guān)于SOAP規(guī)范的更詳細(xì)的描述。這兩個(gè)文檔均可以從“http://www.w3.org/”獲得。
如圖1b中所示,以上所描述的基礎(chǔ)結(jié)構(gòu)(調(diào)度服務(wù)器、執(zhí)行服務(wù)器、Web服務(wù)器以及登記服務(wù)器)的一個(gè)通用計(jì)算機(jī)由幾個(gè)與系統(tǒng)總線145并行連接的單元形成。更詳細(xì)地講,一或多個(gè)微處理器(μP)150控制計(jì)算機(jī)的操作,微處理器150把一個(gè)RAM 155(通常由交織模塊組成)直接用作一個(gè)共享的工作存儲(chǔ)器,一個(gè)ROM 160存儲(chǔ)計(jì)算機(jī)的引導(dǎo)程序的基本代碼。把外設(shè)單元群集在一條局部總線165的周圍(通過(guò)相應(yīng)的接口)。具體地講,一個(gè)海量存儲(chǔ)器由一或多個(gè)硬盤(pán)170和用于讀取CD-ROM 180的驅(qū)動(dòng)器175組成。而且,計(jì)算機(jī)還包括輸入設(shè)備185(例如鍵盤(pán)和鼠標(biāo)器),以及輸出設(shè)備190(例如監(jiān)視器和打印機(jī))。一個(gè)網(wǎng)絡(luò)接口卡(NIC)195用于把計(jì)算機(jī)連接于Internet。一個(gè)橋單元196把系統(tǒng)總線145與局部總線165相接。每一個(gè)微處理器150和橋單元196可以作為主代理加以操作,主代理請(qǐng)求對(duì)系統(tǒng)總線145的訪問(wèn),以傳輸信息。一個(gè)仲裁器197管理對(duì)系統(tǒng)總線145的互斥訪問(wèn)的授權(quán)。
如果數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)擁有另一種體系結(jié)構(gòu),或者如果每一臺(tái)計(jì)算機(jī)擁有等價(jià)的結(jié)構(gòu)(例如擁有不同的單元),則給予類似的考慮。而且,也可以把Web服務(wù)綁定于其它的協(xié)議(例如HTTP GET&POST或MIME),或者可以按不同的方式傳送SOAP消息(例如在電子郵件中)。更一般地講,當(dāng)Web服務(wù)實(shí)現(xiàn)不同的功能或可根據(jù)等價(jià)的接口(甚至是使用不同的語(yǔ)言加以定義)對(duì)它們進(jìn)行訪問(wèn)時(shí),本發(fā)明的概念同樣適用。
轉(zhuǎn)到圖2,圖2描述了可用于實(shí)踐本發(fā)明的方法的主要的軟件部件。通常,把信息(程序和數(shù)據(jù))存儲(chǔ)器在不同的硬盤(pán)中,并且在運(yùn)行程序時(shí),隨操作系統(tǒng)和其它應(yīng)用程序(未在圖中加以顯示)一起(至少部分地)被加載到相應(yīng)的工作存儲(chǔ)器中。最初,把程序從CD-ROM安裝到硬盤(pán)中。
具體地講,一個(gè)中心調(diào)度應(yīng)用控制不同作業(yè)的執(zhí)行(通常在晚間)。例如,作業(yè)由工資計(jì)算程序、成本分析應(yīng)用等組成。中心調(diào)度應(yīng)用包括一個(gè)作業(yè)調(diào)度器205和一或多個(gè)代理210,它們均安裝在相應(yīng)的服務(wù)器上。
調(diào)度器205包括一個(gè)用于管理作業(yè)的提交的控制器215。控制器215訪問(wèn)一個(gè)工作負(fù)載數(shù)據(jù)庫(kù)220,工作負(fù)載數(shù)據(jù)庫(kù)220中存儲(chǔ)著關(guān)于不同作業(yè)的信息。工作負(fù)載數(shù)據(jù)庫(kù)220中包括針對(duì)每一個(gè)作業(yè)的一個(gè)描述符、計(jì)劃的執(zhí)行時(shí)間、估計(jì)的持續(xù)時(shí)間、以及對(duì)其它作業(yè)或系統(tǒng)資源的依賴性。
描述符標(biāo)識(shí)被分派控制作業(yè)的執(zhí)行的代理210。在標(biāo)準(zhǔn)的情況下,每一代理210直接執(zhí)行一或多個(gè)(局部的)作業(yè)。在這種情況下,每一局部作業(yè)的描述符指定相應(yīng)的步驟(使用一種合適的控制語(yǔ)言,例如JCL)。另外,或作為選擇,所建議的方案還支持(遠(yuǎn)程)作業(yè)的提交,這些作業(yè)涉及對(duì)Web服務(wù)的調(diào)用。在這一情況下,每一遠(yuǎn)程作業(yè)的描述符標(biāo)識(shí)與相應(yīng)Web服務(wù)相關(guān)的WSDL文檔。描述符還指定所涉及的服務(wù)的名字(如WSDL文檔中所定義的)。另外,描述符還標(biāo)識(shí)端口(在服務(wù)中)以及操作(在端口中)。于是,描述符包括定義將傳送給Web服務(wù)的消息內(nèi)容的有效載荷信息。通常,有效載荷信息由一個(gè)輸入?yún)?shù)列表組成,某些輸入?yún)?shù)可以為將在調(diào)用Web服務(wù)之前于運(yùn)行時(shí)間對(duì)其進(jìn)行解算的符號(hào)變量。作為選擇,有效載荷信息也可以由簡(jiǎn)單文檔組成。另外,描述符還可以包括認(rèn)證信息(例如用戶ID和口令),Web服務(wù)需要認(rèn)證信息來(lái)批準(zhǔn)其調(diào)用。
例如,通用遠(yuǎn)程作業(yè)的描述符擁有下列格式agent=myAgentWSDLDocument=myWSDLuserid=myUseridpasswork=myPasswordserviceNameSpace=myNameSpaceserviceName=myServicePortName=myPortoperationName=myOperationmessageContent=<myParameter>myVAlue</myParameter>
....
字段“agent”提供了相關(guān)代理的一個(gè)網(wǎng)絡(luò)地址(“myAgent”),字段“WSDLDocument”指定了指向WSDL文檔的URI(“myWSDL”)。字段“userid”和“password”通過(guò)其口令“myPassword”標(biāo)識(shí)用戶ID(“myUserid”)。字段“serviceNameSpace”和“serviceName”分別提供了所涉及服務(wù)的名字空間(“myNameSpace”)和名字(“myService”)。字段“portName”和“operationName”指定了端口(“myPort”)和操作(“myOperation”)。字段“messageContent”提供了有效載荷信息。把每一輸入?yún)?shù)裝入一個(gè)擁有相同名字(“myparameter”)的包裝中。輸入?yún)?shù)由一個(gè)值或一個(gè)符號(hào)變量(例如由冠以符號(hào)“$”的一個(gè)名字加以標(biāo)識(shí)的)組成。
控制器215把關(guān)于每一個(gè)將要執(zhí)行的作業(yè)的信息(存儲(chǔ)在工作負(fù)載數(shù)據(jù)庫(kù)220中)傳輸?shù)揭粋€(gè)創(chuàng)建器225。創(chuàng)建器225按所希望的順序(例如在24小時(shí)期間)創(chuàng)建一或多個(gè)用于控制各批作業(yè)的執(zhí)行流程的計(jì)劃。根據(jù)幾個(gè)因素建立每一計(jì)劃,通常,影響執(zhí)行流程的計(jì)劃包括時(shí)態(tài)值(例如,日期、時(shí)間、星期)以及依賴性(例如前驅(qū)作業(yè)的完成或系統(tǒng)資源的可用性)。把計(jì)劃存儲(chǔ)在一個(gè)相應(yīng)的信息中心庫(kù)230中。通過(guò)控制器215把從信息中心庫(kù)230所選擇的一個(gè)計(jì)劃提供給一個(gè)執(zhí)行器235。執(zhí)行器235提交該計(jì)劃的作業(yè),為此,執(zhí)行器235檢索(從工作負(fù)載數(shù)據(jù)庫(kù)220)每一所提交作業(yè)(由240來(lái)表示)的描述符,并把其傳輸?shù)剿峙傻拇?10。
每一個(gè)代理210控制相應(yīng)作業(yè)的執(zhí)行。具體地講,代理210直接執(zhí)行每一局部作業(yè)的步驟。相反,對(duì)于每一遠(yuǎn)程作業(yè),代理210從描述符240中所指定的URI檢索相應(yīng)Web服務(wù)(由245來(lái)表示)的WSDL文檔。如以下所解釋的,代理210建立一個(gè)SOAP請(qǐng)求250,并將SOAP請(qǐng)求250傳輸?shù)綄⒄{(diào)用的Web服務(wù)(由255來(lái)表示)。Web服務(wù)255把一個(gè)SOAP請(qǐng)求260返回到代理210(如果需要的話)。一旦一個(gè)通用局部或遠(yuǎn)程作業(yè)的執(zhí)行終止(由于已完成了所有的操作或出現(xiàn)了一個(gè)錯(cuò)誤),則相應(yīng)的代理210把反饋信息傳送到控制器215(經(jīng)由執(zhí)行器235)。反饋信息包括作業(yè)的實(shí)際的開(kāi)始時(shí)間和實(shí)際的結(jié)束時(shí)間、一個(gè)指定操作結(jié)果的返回代碼、以及作業(yè)所產(chǎn)生的任何輸出數(shù)據(jù)。因此,控制器215可以使用這一信息更新工作負(fù)載數(shù)據(jù)庫(kù)220。
如果按另一種方式構(gòu)造程序和相應(yīng)的數(shù)據(jù),如果支持不同的模塊或功能,或者如果把程序提供在等價(jià)的計(jì)算機(jī)可讀媒體(例如DVD)上,則可以給予類似的考慮。作為替代,可以按一種不同的方式(例如,使用查找表),把作業(yè)與相應(yīng)的描述符相關(guān)聯(lián),工作負(fù)載數(shù)據(jù)庫(kù)存儲(chǔ)等價(jià)的信息,或者調(diào)度器僅把一個(gè)指向每一所提交的作業(yè)的指針傳送給相應(yīng)的代理。而且,指針還可以擁有一個(gè)不同的結(jié)構(gòu)(例如,由一或多個(gè)獨(dú)立的文件組成),或可以以其它格式(例如,使用一個(gè)類型/值對(duì)的列表,其中每一個(gè)類型/值對(duì)針對(duì)一個(gè)相應(yīng)的輸入?yún)?shù)),提供載荷信息。總之,本發(fā)明還適用于調(diào)度不同作業(yè)、交互任務(wù)的提交,更一般地將,本發(fā)明還適用于調(diào)度任何其它工作單元的提交。
現(xiàn)在參照?qǐng)D3a~3c,一種在以上所描述的基礎(chǔ)結(jié)構(gòu)中所執(zhí)行的方法300,開(kāi)始于調(diào)度器通路中的黑色開(kāi)始圓圈302。繼續(xù)前進(jìn)到框304,在工作負(fù)載數(shù)據(jù)庫(kù)中定義所希望的(局部的和遠(yuǎn)程的)作業(yè)(裝入相應(yīng)的描述符、所計(jì)劃的執(zhí)行時(shí)間、以及任何對(duì)其它作業(yè)或資源的依賴關(guān)系)。過(guò)程前進(jìn)到框306,其中,創(chuàng)建一個(gè)新的計(jì)劃(或者更新一個(gè)現(xiàn)存的計(jì)劃),指定所希望的作業(yè)的執(zhí)行流程。此時(shí),可以提交這一計(jì)劃,以由框308處的控制器加以執(zhí)行。
接下來(lái),活動(dòng)的流程包括同時(shí)執(zhí)行的兩個(gè)分支。第一個(gè)分支由框310~318組成,第二個(gè)分支由框320~326組成,這兩個(gè)分支在同中心的白/黑停止圓圈328處匯合。
特別考慮分支310~318。在框310處,執(zhí)行器識(shí)別可用于運(yùn)行的(根據(jù)它們所計(jì)劃的執(zhí)行時(shí)間和它們的依賴性)作業(yè)。在框312處,針對(duì)每一可用于運(yùn)行的作業(yè),從工作負(fù)載數(shù)據(jù)庫(kù)中檢索相關(guān)的描述符。前進(jìn)到框314,從描述符中提取被派遣執(zhí)行作業(yè)的代理。然后,該方法前進(jìn)到框316,在框316中執(zhí)行器把執(zhí)行作業(yè)的一個(gè)請(qǐng)求發(fā)送到相關(guān)的代理(其中,執(zhí)行的請(qǐng)求包括相應(yīng)的描述符)。接下來(lái),在框318處,執(zhí)行器驗(yàn)證是否已經(jīng)提交了該計(jì)劃的所有作業(yè)。如果尚未提交的該計(jì)劃的所有作業(yè),則活動(dòng)的流程返回到框310處,針對(duì)該計(jì)劃的還準(zhǔn)備加以提交的作業(yè),重復(fù)以上所描述的操作。否則,在停止圓圈328處,該分支的執(zhí)行結(jié)束。
與此同時(shí),在另一個(gè)分支320~326中,在框320處,執(zhí)行器處于等待狀態(tài)。只要一個(gè)通用作業(yè)終止了其執(zhí)行,則在框322處從相應(yīng)的代理接收相應(yīng)的反饋信息。繼續(xù)前進(jìn)到框323,執(zhí)行器把反饋信息傳送到控制器,然后將其登錄到工作負(fù)載數(shù)據(jù)庫(kù)中,而且,在框324處,控制器相應(yīng)地更新工作負(fù)載數(shù)據(jù)庫(kù)中所估計(jì)的作業(yè)持續(xù)時(shí)間。例如,作為針對(duì)已完成作業(yè)的舉例所測(cè)值的一個(gè)運(yùn)行平均值,計(jì)算所估計(jì)的持續(xù)時(shí)間(優(yōu)選做法是過(guò)濾掉的區(qū)別極大的異常值)。接下來(lái),在框326處進(jìn)行測(cè)試,以判斷是否已終止了該計(jì)劃的所有作業(yè)。如果尚未終止該計(jì)劃的所有作業(yè),則活動(dòng)的流程返回到框320,等待行其它作業(yè)的完成。否則,在停止圓圈328處,該分支的執(zhí)行結(jié)束。
現(xiàn)在,轉(zhuǎn)到通用代理的通路。響應(yīng)對(duì)作業(yè)的執(zhí)行的請(qǐng)求,進(jìn)入決策框330。然后,根據(jù)作業(yè)的類型,活動(dòng)的流程轉(zhuǎn)向相應(yīng)的分支。具體地講,如果作業(yè)為局部的,則執(zhí)行框332~334,而如果作業(yè)是遠(yuǎn)程的,則執(zhí)行框336~375。在這兩種情況中,接下來(lái),該方法都在框376處匯合。
現(xiàn)在,考慮框332(局部作業(yè)),在代理的直接控制下,執(zhí)行描述符中所指定的作業(yè)的步驟。只要作業(yè)完成,則在框334處,由代理收集作業(yè)的返回代碼和結(jié)果輸出數(shù)據(jù)。然后,活動(dòng)的流程進(jìn)入框376。
另一方面,當(dāng)作業(yè)為遠(yuǎn)程作業(yè)時(shí),在框336處,從描述符中所指定的URI下載相關(guān)Web服務(wù)的WSDL文檔。前進(jìn)到框338,把描述符的有效載荷信息中的任何符號(hào)變量解算成一個(gè)實(shí)際的值。然后,在框340處,確認(rèn)這樣獲得的有效載荷信息。換句話說(shuō),代理驗(yàn)證有效載荷信息是否與WSDL文檔中所提供的相應(yīng)的定義相一致。假設(shè)形式上有效載荷信息是正確的,則在框341處建立一個(gè)相應(yīng)的SOAP請(qǐng)求(根據(jù)WSDL文檔中所指定的綁定)。然后在,框342處,處把SOAP請(qǐng)求嵌入一條HTTP消息中。
在框344處,識(shí)別實(shí)現(xiàn)所希望的操作的端點(diǎn)的地址(如WSDL文檔中所定義的)。繼續(xù)前進(jìn)到框346處,代理打開(kāi)一個(gè)到該端點(diǎn)的連接。作為對(duì)這一打開(kāi)的響應(yīng),如果端點(diǎn)要求一個(gè)認(rèn)證過(guò)程(決策框350),則把一個(gè)相應(yīng)的請(qǐng)求返回至代理。在這種情況下,在框352處,代理把描述符中所提供的用戶ID和口令傳輸?shù)皆摱它c(diǎn)。返回到端點(diǎn)的通路,在框354處進(jìn)行測(cè)試,以確定是否批準(zhǔn)從該代理那里所接收的信息所標(biāo)識(shí)的用戶訪問(wèn)該端點(diǎn),如果批準(zhǔn),則在框356處授權(quán)這一訪問(wèn)。否則,則在框358處拒絕這一存取。在這兩種情況下,在框359處把認(rèn)證過(guò)程的結(jié)果返回到該代理。作為對(duì)這一返回的響應(yīng),進(jìn)入代理的通路中的判定框360。如果已拒絕對(duì)該端點(diǎn)的訪問(wèn),則在框362處,代理把作業(yè)的返回代碼設(shè)置成一個(gè)錯(cuò)誤值,然后過(guò)程直接進(jìn)入框376。否則,如果已授權(quán)對(duì)該端點(diǎn)的訪問(wèn),則活動(dòng)的流程繼續(xù)前進(jìn)到框364,當(dāng)端點(diǎn)不要求任何認(rèn)證過(guò)程時(shí),也從判斷框350到達(dá)同樣的點(diǎn)。
考慮框364。把SOAP請(qǐng)求傳輸?shù)蕉它c(diǎn),作為對(duì)這一傳輸?shù)捻憫?yīng),在框368處端點(diǎn)解釋這一SOAP請(qǐng)求,并且調(diào)用所希望的Web服務(wù)?;剡^(guò)頭來(lái)參照代理的通路,該方法根據(jù)操作的類型,在框370處轉(zhuǎn)向相應(yīng)的分支。如果WSDL文檔指定操作不返回任何回答,則在框371處把作業(yè)的返回代碼設(shè)置成一個(gè)指示其完成的值。否則,在框372處,代理進(jìn)入等待狀態(tài)。只要端點(diǎn)返回了SOAP回答(框374),則在框375處,代理根據(jù)所接收的消息在WSDL文檔中的定義,解釋所接收的消息。具體地講,如果Web服務(wù)提供了所期望的輸出消息,則把作業(yè)的返回代碼設(shè)置成完成值。相反,如果Web服務(wù)器提供了一條故障消息,則把作業(yè)的返回代碼設(shè)置成錯(cuò)誤值。在兩種情況中,把從所接收的消息中提取的信息轉(zhuǎn)儲(chǔ)到作業(yè)的一個(gè)標(biāo)準(zhǔn)輸出中。然后,活動(dòng)的流程在框376匯合。
現(xiàn)在參照框376。把與作業(yè)的執(zhí)行(即局部作業(yè)的步驟或?qū)eb服務(wù)的調(diào)用)相關(guān)的反饋信息返回到調(diào)度器(參見(jiàn)相應(yīng)通路中的框322)。
例如,讓我們考慮以下的WSDL文檔(存儲(chǔ)在URI“rateWSDL”中)<definitions name=rateName targetNamespace=rateNamespace<types>
<schema targetNamespace=rateSchema<element name=“rateInput”>
<complexType>
<all>
<element name=“currency”>
type=“string”/>
</all>
</complexType>
</element>
<element name=“rateOutput”>
<complexType>
<all>
<element name=“rate”type=“float”/>
<all>
</complexType>
</element></schema></types><message name=“getRateInput”><part name=“body”element=“rateInput”/></message><message name=“getRateOutput”><part name=“body”element=“rateOutput”/></message><portType name=“ratePortType”><operation name=“getRate”>
<input message=“getRateInput”/>
<output message=“getRateOutput”/><operation></portType><binding name=“rateBinding”type=“ratePortType”>
<soapbinding style=“document”transport=“http//schemas.xmlsoap.org.soap/http”/>
<operation name=“getRate”>
<soapoperation soapAction=myAction/>
<input>
<soapBody use=“l(fā)iteral”/>
</input>
<output>
<soapBody use=“l(fā)iteral”/>
</output>
</operation>
</binding>
<service name=“rateService“>
<documentation.
返回一個(gè)所希望的操作流的交換率</documentation>
<port name=“ratePort”binding=“rateBinding”>
<soapaddress location=“rateLocation”/>
</port>
</service>
</definitions>
WSDL文檔(“rateNamespace”處的“rateName”)定義了一個(gè)十分簡(jiǎn)單的服務(wù)(“rateService”),由地址“rateLocation”處的端點(diǎn)使用HTTP上的SOAP提供這一服務(wù)。服務(wù)“rateService”包括具有綁定“rateBinding”的端口“ratePort”,端口“ratePort”支持操作“getRate”。操作“getRate”接收包括一個(gè)串類型的輸入?yún)?shù)“rateInput”的SOAP請(qǐng)求(“getRateInput”),代表一個(gè)所選擇的貨幣,并返回一個(gè)浮點(diǎn)類型的輸出參數(shù)“rateOutput”,代表其匯率(兩個(gè)參數(shù)均符合模式“rate Schema”)。
假設(shè)必須調(diào)度以上所描述的Web服務(wù)用于執(zhí)行(例如每一天都執(zhí)行),則在工作負(fù)載數(shù)據(jù)庫(kù)中定義一個(gè)相應(yīng)的作業(yè),例如,該作業(yè)的描述符包括下列信息agent=rateAgent
WSDDocument=rate WSDLuserid=rateUseridpassword=ratePasswordserviceNameSpace=rateNamespaceserviceName=rateServicePortName=ratePortoperationName=getRatemessageContent=<rateInput>$VAR<rateInput>
在所給出的這一例子中,由一個(gè)符號(hào)變量(“$VAR”)定義輸入?yún)?shù)(“rateInput”),每次調(diào)用Web服務(wù)時(shí),把該變量設(shè)置成所希望的貨幣的一個(gè)標(biāo)識(shí)符。
每次針對(duì)一個(gè)不同的貨幣時(shí),調(diào)度作業(yè),以反復(fù)執(zhí)行。凡當(dāng)提交遠(yuǎn)程作業(yè)時(shí),調(diào)度器向相關(guān)的代理“rateAgent”發(fā)送描述符。該代理把符號(hào)變量“$VAR”解算成一個(gè)實(shí)際的值(例如“USD”)。然后,創(chuàng)建相應(yīng)的SOAP請(qǐng)求,并將其嵌入到以下的HTTP消息中POSTHostrateLocationcontent-Typetext/xml;charset=”utf-8”content-Length....
SoapActionmyAction<CRLF>
<envEnvelopexmlsenv=“http//schemas.xmlsoap.Org/soar/envelope/”>
<envBody>
<mgetRateInput xmlnsm=rateNamespace>
<mcurrency>USD</mcurrency>
</mgetRateInput>
</envBody>
</envEnvelope>
<CRLF>
然后,代理打開(kāi)和端點(diǎn)“rateLocation”的HTTP連接。響應(yīng)來(lái)自該端點(diǎn)的一個(gè)相應(yīng)的請(qǐng)求,該代理提供用戶ID“rateUserid”和相應(yīng)的口令“ratePassword”。然后,傳輸以上所描述的HTTP消息。WSDL文檔指定Web服務(wù)必須返回一個(gè)回答。因此,該代理等待擁有下列格式的HTTP消息content-Typetext/xml;charset=”utf-8”content=Length....
<CRLF>
<envEnvelopexmlsenv=“http//schemas.xmlsoap.org/soap/envelop/”>
<envBody>
<mgetRateOutput xmlnsm=rateNamespace>
<mrate>1.1875</mrate>
</mgetRateOutput>
</envBody>
</envEnvelope>
<CRLF>
HTTP消息中的SOAP回答指示沒(méi)有出現(xiàn)錯(cuò)誤,并在輸出參數(shù)“rate”中返回一個(gè)針對(duì)所希望的操作流的匯率值(1.1875)。
如果執(zhí)行了一個(gè)等價(jià)的方法,或者如果由不同的模塊執(zhí)行了某些功能,則可以給予類似的考慮。然而,當(dāng)Web服務(wù)實(shí)現(xiàn)其它類型的操作時(shí)、當(dāng)使用一個(gè)不同的過(guò)程對(duì)代理進(jìn)行確認(rèn)(例如,涉及對(duì)數(shù)字證書(shū)的使用)時(shí)等,本發(fā)明的概念也是適用的。
更一般地講,本發(fā)明提出了一種在一個(gè)擁有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)中調(diào)度工作單元的執(zhí)行的方法。該方法包括一系列步驟,并且在一個(gè)中心調(diào)度應(yīng)用的控制下執(zhí)行這些步驟。該方法通過(guò)一個(gè)描述符啟動(dòng)相關(guān)的一或多個(gè)工作單元。描述符包括對(duì)一個(gè)可根據(jù)一個(gè)預(yù)先定義的接口文檔來(lái)訪問(wèn)的外部服務(wù)進(jìn)行指示的指示信息。然后,提交這些工作單元,以根據(jù)一個(gè)預(yù)先定義的計(jì)劃加以執(zhí)行。該方法包括連續(xù)檢索與所提交的工作單元相關(guān)的每一個(gè)外部服務(wù)的接口文檔。接下來(lái),根據(jù)相應(yīng)的接口文檔,針對(duì)與所提交的工作單元相關(guān)的每一個(gè)外部服務(wù)建立一條請(qǐng)求消息。該方法結(jié)束向相應(yīng)外部服務(wù)發(fā)送每一條請(qǐng)求消息,以導(dǎo)致對(duì)外部服務(wù)的調(diào)用。
所建議的方案可以使調(diào)度器管理外部服務(wù)。
具體地講,這一方案允許調(diào)度器以十分簡(jiǎn)單的方式調(diào)用外部服務(wù)。
因此,本發(fā)明的方法非常適合于在異構(gòu)環(huán)境中使用。
所設(shè)計(jì)的技術(shù)支持調(diào)度器與外部服務(wù)的集成。
這樣,可以很容易地把已經(jīng)可用于調(diào)度器的額外的功能用于管理外部服務(wù)。例如,可以處理時(shí)態(tài)和前驅(qū)約束、通過(guò)其GUI控制和監(jiān)視調(diào)度器所執(zhí)行的操作、或利用性能監(jiān)視、負(fù)載平衡和報(bào)告功能(甚至不排除使用調(diào)度器提供其它功能)。
以上所描述的本發(fā)明的優(yōu)選實(shí)施例還擁有更多的優(yōu)點(diǎn)。
具體地講,Web服務(wù)器向代理返回一條回答消息(根據(jù)回答消息在相應(yīng)的WSDL文檔中的定義,對(duì)回答消息加以解釋)。
這樣,把一個(gè)完整的通信回路閉合在調(diào)度器和Web服務(wù)器之間。有利的是,把請(qǐng)求消息的內(nèi)容包含于描述符中,然后將其嵌入到相關(guān)WSDL文檔中所指定的相應(yīng)的結(jié)構(gòu)中。
所建議的技術(shù)是非常簡(jiǎn)單的,但同時(shí)也是十分有效的。
作為一個(gè)進(jìn)一步的改進(jìn),請(qǐng)求消息的內(nèi)容包括一或多個(gè)符號(hào)變量,在運(yùn)行時(shí)間把符號(hào)變量解算成實(shí)際的值。
這一特征,增加了該方法的靈活性(例如,允許使用不同的輸入?yún)?shù)反復(fù)調(diào)用相同的Web服務(wù))。
然而,根據(jù)本發(fā)明的方案,也可以使其甚至能夠使用不返回任何回答消息的Web服務(wù)得以實(shí)現(xiàn)。作為替代,可以按不同的方式建立請(qǐng)求消息,例如,在本發(fā)明另一個(gè)實(shí)施例中,描述符直接存儲(chǔ)實(shí)際的請(qǐng)求消息(代理對(duì)請(qǐng)求消息簡(jiǎn)單地加以檢索,并將其發(fā)送給相應(yīng)的Web服務(wù))。而且,調(diào)度器還可以解算符號(hào)變量,或存儲(chǔ)在描述符中的請(qǐng)求消息的內(nèi)容可以僅由靜態(tài)輸入?yún)?shù)組成。
在本發(fā)明的一個(gè)優(yōu)選實(shí)踐中,調(diào)度器控制作業(yè)的提交,一或多個(gè)代理控制它們的實(shí)際執(zhí)行。
所建議的體系結(jié)構(gòu)能夠利用預(yù)先存在的調(diào)度器(在工作負(fù)載數(shù)據(jù)庫(kù)中簡(jiǎn)單地定義特定的作業(yè),以調(diào)用Web服務(wù))。作為替代把控制與Web服務(wù)進(jìn)行交互的任務(wù)委托給代理,可以簡(jiǎn)單地把它們插入一個(gè)標(biāo)準(zhǔn)的基礎(chǔ)結(jié)構(gòu)中。
對(duì)把每一遠(yuǎn)程作業(yè)與相應(yīng)Web服務(wù)器的WSDL文檔相關(guān)聯(lián)的一個(gè)所建議的選擇是包括把遠(yuǎn)程作業(yè)的地址存儲(chǔ)在一個(gè)相應(yīng)的描述符中。
這一定特征可以確保代理總能訪問(wèn)所希望的WSDL文檔的最新版本。
進(jìn)一步改進(jìn)這一方案的一種方法是,把認(rèn)證信息包括在描述符中,然后Web服務(wù)器將認(rèn)證信息用于批準(zhǔn)代理對(duì)其的調(diào)用。
這樣,可以完全自動(dòng)化對(duì)Web服務(wù)的調(diào)度,而無(wú)需任何安全上的顧慮。
盡管本發(fā)明的方法是專門(mén)為調(diào)用Web服務(wù)而設(shè)計(jì)的,但無(wú)損于其一般的可應(yīng)用性。
實(shí)際上,所設(shè)計(jì)的這一方案是轉(zhuǎn)向Internet上的分布式計(jì)算的一個(gè)重要步驟。特別是,本發(fā)明的方法有助于全面地利用Internet(例如,允許傳統(tǒng)應(yīng)用與第三方所提供的Web服務(wù)之間的互操作性)。
然而,根據(jù)本發(fā)明的這一方案也適合于使用擁有不同體系結(jié)構(gòu)的調(diào)度應(yīng)用(例如,其中把整個(gè)處理邏輯嵌入調(diào)度器中)加以實(shí)現(xiàn)。作為替代,也可以局部地存儲(chǔ)器WSDL文檔的一個(gè)拷貝(以及在描述符中指定相應(yīng)的地址),或者直接把WSDL文檔嵌入描述符中。例如,當(dāng)某些Web服務(wù)的WSDL文檔沒(méi)有在Internet上發(fā)表時(shí),這一方法是有用的。無(wú)論如何,所建議的方法可應(yīng)用于不同的標(biāo)準(zhǔn)化的服務(wù)(例如,那些符合EDI規(guī)范的服務(wù)),或者更一般地講,適用于調(diào)度任何外部服務(wù)。
有利的是,根據(jù)本發(fā)明的方案可通過(guò)一臺(tái)計(jì)算機(jī)程序?qū)崿F(xiàn),即把這一方案作為嵌入一種合適的媒體中的一個(gè)相應(yīng)的產(chǎn)品加以提供。
作為替代,把該程序預(yù)加載到硬盤(pán)中,通過(guò)Internet將其發(fā)送給各計(jì)算機(jī),以廣播形式,或更一般地講,以任何其它直接可加載到計(jì)算機(jī)的工作存儲(chǔ)器中的形式提供。然而,根據(jù)本發(fā)明的方法,使其可以使用硬件結(jié)構(gòu)(例如集成在半導(dǎo)體材料的芯片中),或者使用軟件和硬件的一個(gè)組合,加以實(shí)現(xiàn)。
自然,為了滿足局部和特定的要求,本技術(shù)領(lǐng)域中的技術(shù)人員可以對(duì)以上所描述的方案進(jìn)行多方面的修改和變更,但所有這些修改和變更均包含在由權(quán)利要求所定義的本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種在一個(gè)具有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)中調(diào)度工作單元的執(zhí)行的方法(300),在一個(gè)中心調(diào)度應(yīng)用的控制下,該方法包括下列步驟把至少一個(gè)工作單元與一個(gè)描述符相關(guān)聯(lián)(304),其中描述符包括一個(gè)對(duì)可根據(jù)一個(gè)預(yù)先定義的接口文檔進(jìn)行訪問(wèn)的一個(gè)外部服務(wù)進(jìn)行指示的指示信息,根據(jù)一個(gè)預(yù)先定義的計(jì)劃,提交(308)用于執(zhí)行的工作單元,檢索(336)與所提交的工作單元相關(guān)的每一外部服務(wù)的接口文檔,根據(jù)相應(yīng)的接口文檔,為每一與所提交的工作單元相關(guān)的外部服務(wù)建立(338~342)一條請(qǐng)求消息,以及把每一條請(qǐng)求消息發(fā)送(364)到相應(yīng)的外部服務(wù),以導(dǎo)致對(duì)外部服務(wù)的調(diào)用。
2.根據(jù)權(quán)利要求1所述的方法(300),還包括下列步驟從每一被調(diào)用的外部服務(wù)接收(370)一條回答消息,以及根據(jù)相應(yīng)的接口文檔,解釋(375)每一回答消息。
3.如權(quán)利要求1或2所述的方法(300),其中,接口文檔指定了每條消息的結(jié)構(gòu),而且其中,描述符還包括一個(gè)對(duì)請(qǐng)求消息的內(nèi)容進(jìn)行指示的指示信息,建立(338~342)請(qǐng)求消息的步驟包括把請(qǐng)求消息的內(nèi)容嵌入(341~342)相應(yīng)的結(jié)構(gòu)。
4.如權(quán)利要求3所述的方法(300),其中,對(duì)請(qǐng)求消息的內(nèi)容進(jìn)行指示的指示信息包括一組將傳送給外部服務(wù)的輸入?yún)?shù),該組的至少一個(gè)輸入?yún)?shù)為一個(gè)符號(hào)變量,建立(338~342)請(qǐng)求消息的步驟還包括把每一符號(hào)變量解算(338)成一個(gè)實(shí)際的值。
5.如權(quán)利要求1至4中任何一個(gè)權(quán)利要求所述的方法(300),其中,中心調(diào)度應(yīng)用包括一個(gè)調(diào)度器和至少一個(gè)代理,調(diào)度器執(zhí)行關(guān)聯(lián)(304)和提交(308)的步驟,而且其中,每一個(gè)描述符還包括一個(gè)對(duì)與相應(yīng)工作單元相關(guān)的代理進(jìn)行指示的指示信息,該方法還包括下列步驟調(diào)度器把一個(gè)執(zhí)行每一所提交的工作單元的請(qǐng)求發(fā)送(316)到相關(guān)的代理,執(zhí)行的請(qǐng)求包括對(duì)相應(yīng)的描述符進(jìn)行指示的指示信息,以及代理檢索(336)相應(yīng)外部服務(wù)的接口文檔,建立(338~342)針對(duì)外部服務(wù)的請(qǐng)求消息,以及響應(yīng)對(duì)執(zhí)行的請(qǐng)求,把請(qǐng)求消息發(fā)送(364)到外部服務(wù)。
6.如權(quán)利要求1至5中任何一個(gè)權(quán)利要求所述的方法(300),其中,對(duì)接口文檔進(jìn)行指示的指示信息由存儲(chǔ)接口文檔的基礎(chǔ)結(jié)構(gòu)中的一個(gè)外部位置的一個(gè)地址組成,檢索接口文檔的步驟包括從相應(yīng)的外部位置下載(336)接口文檔。
7.如權(quán)利要求1至6中任何一個(gè)權(quán)利要求所述的方法(300),其中,描述符包括針對(duì)外部服務(wù)的認(rèn)證信息,該方法還包括下列步驟把認(rèn)證信息發(fā)送(352)到外部服務(wù),根據(jù)認(rèn)證信息批準(zhǔn)對(duì)外部服務(wù)的調(diào)用。
8.如權(quán)利要求1至7中任何一個(gè)權(quán)利要求所述的方法(300),其中,外部服務(wù)由一個(gè)Web服務(wù)組成。
9.一臺(tái)計(jì)算機(jī)程序(205,210),可直接加載到數(shù)據(jù)處理系統(tǒng)(105,110)的一個(gè)工作存儲(chǔ)器中,當(dāng)在系統(tǒng)中執(zhí)行該程序時(shí)用于執(zhí)行根據(jù)權(quán)利要1~8中任何一個(gè)權(quán)利要求所述的方法。
10.一臺(tái)計(jì)算機(jī)程序(180),包括體現(xiàn)如權(quán)利要求9所述的程序(205,210)的計(jì)算機(jī)可讀媒體。
11.一種用于在一個(gè)具有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)(100)中調(diào)度工作單元的執(zhí)行的系統(tǒng)(105,110),該系統(tǒng)包括一個(gè)中心調(diào)度應(yīng)用(205,210),擁有用于把至少一個(gè)工作單元與一個(gè)描述符相關(guān)聯(lián)的機(jī)制(220),其中描述符包括一個(gè)對(duì)可根據(jù)一個(gè)預(yù)先定義的接口文檔進(jìn)行訪問(wèn)的一個(gè)外部服務(wù)進(jìn)行指示的指示信息;用于根據(jù)一個(gè)預(yù)先定義的計(jì)劃,提交用于執(zhí)行的工作單元的機(jī)制(205);用于檢索與所提交的工作單元相關(guān)的每一外部服務(wù)的接口文檔的機(jī)制(210);用于根據(jù)相應(yīng)的接口文檔,為每一與所提交的工作單元相關(guān)的外部服務(wù)建立一條請(qǐng)求消息的機(jī)制(210);以及用于把每一條請(qǐng)求消息發(fā)送到相應(yīng)的外部服務(wù),以導(dǎo)致對(duì)外部服務(wù)的調(diào)用的機(jī)制(210)。
12.一種具有分布式體系結(jié)構(gòu)的數(shù)據(jù)處理基礎(chǔ)結(jié)構(gòu)(100),包括如權(quán)利要求11所述的系統(tǒng)(105,110)以及至少一個(gè)用于實(shí)現(xiàn)每一外部服務(wù)的外部服務(wù)器(120)。
全文摘要
本發(fā)明提出了用于從一個(gè)中心控制點(diǎn)調(diào)度對(duì)Web服務(wù)的調(diào)用的方法和相應(yīng)系統(tǒng)。為此,調(diào)度器(205)訪問(wèn)工作負(fù)載數(shù)據(jù)庫(kù)(220),工作負(fù)載數(shù)據(jù)庫(kù)(220)把一個(gè)執(zhí)行代理(210)和一個(gè)描述符(240)與每個(gè)將提交的作業(yè)相關(guān)聯(lián)。在此方案中,描述符識(shí)別所希望的Web服務(wù)(225)和相應(yīng)的WSDL文檔(245)的地址,其指定由Web服務(wù)所支持的消息的結(jié)構(gòu)。描述符還包括將傳送給Web服務(wù)的請(qǐng)求消息的實(shí)際內(nèi)容。每當(dāng)提交作業(yè)用以執(zhí)行時(shí),調(diào)度器把其描述符發(fā)送給相關(guān)代理。作為響應(yīng),代理下載相應(yīng)Web服務(wù)的WSDL文檔,然后建立針對(duì)Web服務(wù)的請(qǐng)求消息(250),把所希望的內(nèi)容嵌入在WSDL文檔中所指定結(jié)構(gòu)中。代理把請(qǐng)求消息發(fā)送到實(shí)現(xiàn)Web服務(wù)的一個(gè)端點(diǎn),以導(dǎo)致對(duì)Web服務(wù)的調(diào)用。
文檔編號(hào)G06F9/50GK1637710SQ20041008491
公開(kāi)日2005年7月13日 申請(qǐng)日期2004年10月10日 優(yōu)先權(quán)日2003年12月30日
發(fā)明者法比奧·貝尼德蒂 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1