監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價(jià)咨詢(xún)管理系統(tǒng) | 工程設(shè)計(jì)管理系統(tǒng) | 甲方項(xiàng)目管理系統(tǒng) | 簽約案例 | 客戶(hù)案例 | 在線(xiàn)試用
X 關(guān)閉

Web服務(wù)內(nèi)幕,第6部分:承擔(dān)責(zé)任--實(shí)現(xiàn)WSFL中的角色

申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114

AMTeam.org

Web服務(wù)內(nèi)幕,第6部分:承擔(dān)責(zé)任

--實(shí)現(xiàn)WSFL中的角色


James Snell (jasnell@us.ibm.com)

軟件工程師,Emerging Technologies,IBM

2001 年 7 月

Web 服務(wù)提供了創(chuàng)建高度動(dòng)態(tài)化的、多功能的分布式應(yīng)用程序的可能,這種應(yīng)用程序跨越了技術(shù)和商業(yè)之間的鴻溝,允許服務(wù)提供者和服務(wù)消費(fèi)者共同改進(jìn)商務(wù)方式。Web 服務(wù)流語(yǔ)言(WSFL)通過(guò)建立一個(gè)框架來(lái)擴(kuò)展這種可能,在此框架內(nèi)服務(wù)提供者和消費(fèi)者可以共同合作實(shí)現(xiàn)標(biāo)準(zhǔn)商業(yè)流程;在這個(gè)流程中“所做的事”比“做事的人”更重要。該框架允許所有正確實(shí)現(xiàn)了合適的 Web 服務(wù)接口的人擔(dān)任商業(yè)流程中的各種角色。在 Web 服務(wù)內(nèi)幕的這一部分,我們繼續(xù)討論 WSFL,并把重點(diǎn)放在如何成為一個(gè)服務(wù)提供者。

Web 服務(wù)內(nèi)幕的前一部分(請(qǐng)參閱參考資料)介紹了商業(yè)流程建模和服務(wù)提供者類(lèi)型的概念,它們?cè)趯?shí)現(xiàn)商業(yè)流程中承擔(dān)各種不同的責(zé)任。在這一部分,我準(zhǔn)備更深入地探討如何成為一個(gè) WSFL 服務(wù)提供者。一個(gè)好消息是,只要使用任意啟用 Web 服務(wù)的平臺(tái)(不管這個(gè)平臺(tái)是 WSFL 還是具有 WSDL 功能的),正確實(shí)現(xiàn)一個(gè)或幾個(gè) WSDL 定義的 Web 服務(wù)接口即可成為一個(gè)服務(wù)提供者。換句話(huà)說(shuō),您不需要真正懂得任何關(guān)于 WSFL 的知識(shí)即可擔(dān)任 WSFL 服務(wù)提供者這一角色。您必須要了解的是如何獲取一個(gè) Web 服務(wù)接口定義并真正把它轉(zhuǎn)化為 Web 服務(wù)實(shí)現(xiàn),這才是我要在這里闡述的過(guò)程。

流程概述

WSFL 流模型中的每個(gè)活動(dòng)都以 Web 服務(wù)的形式(由 Web 服務(wù)提供者提供)實(shí)現(xiàn),并履行一個(gè)流程中所定義的角色。每個(gè)服務(wù)提供者自然都期望能適當(dāng)?shù)貪M(mǎn)足實(shí)現(xiàn) Web 服務(wù)或?qū)崿F(xiàn)實(shí)際執(zhí)行該活動(dòng)的一套 Web 服務(wù)的要求。WSFL 流模型中的每個(gè)活動(dòng)都使用 WSFL 全局模型中包含的信息鏈接到一個(gè)實(shí)際的 Web 服務(wù)實(shí)現(xiàn)中(請(qǐng)參閱圖 1)。每個(gè) Web 服務(wù)實(shí)現(xiàn)都指向該實(shí)現(xiàn)的一個(gè)基于 WSDL 的描述,該描述接著又鏈接到基于 WSDL 的接口描述 — 描述了所有可發(fā)送到 Web 服務(wù)或從 Web 服務(wù)接收的實(shí)際消息和操作。

圖 1:旅游預(yù)訂商業(yè)流程的流模型


清單 1 所示是與上圖表現(xiàn)的商業(yè)流程的流模型相對(duì)應(yīng)的全局模型。

清單 1:旅游預(yù)訂商業(yè)流程的全局模型





















operation="sendConfirmation"/>
operation="waitForConfirmation"/>


operation="requestTicketOrder"/>
operation="receiveTicketOrder"/>

為履行在 WSFL 定義的流程中的服務(wù)提供者這一角色,首先必須具有對(duì) WSDL 文檔的訪(fǎng)問(wèn)權(quán),這些文檔定義了實(shí)現(xiàn) Web 服務(wù)必需的基本數(shù)據(jù)類(lèi)型、消息和端口類(lèi)型。然后您必須設(shè)計(jì)并創(chuàng)建應(yīng)用程序代碼(這些代碼實(shí)現(xiàn)了要求的端口類(lèi)型中定義的每個(gè)操作)并將這些代碼部署在 Web 服務(wù)平臺(tái)(如 IBM WebSphere Application Server 4.0、Apache SOAP 等)上。

成為流程中的一部分

一個(gè)好消息是,如果您想成為商業(yè)流程中的一部分,您真正要了解的只是如何創(chuàng)建一個(gè) Web 服務(wù)。一旦這項(xiàng)工作已經(jīng)完成,您只需將其插入到 WSFL 全局模型中,該模型將您的 Web 服務(wù)實(shí)現(xiàn)鏈接到一個(gè)流模型中定義的角色。該鏈接可以是靜態(tài)的(全局模型明確指定您的 Web 服務(wù)作為給定角色的服務(wù)提供者),也可以是動(dòng)態(tài)的(全局模型指定一套用于選擇服務(wù)提供者的發(fā)現(xiàn)規(guī)則,您的有可能被選中)。

有大量的參考資料詳細(xì)介紹了如何創(chuàng)建 Web 服務(wù) — 我偏向于推薦我寫(xiě)的關(guān)于 Web 服務(wù)工具包方面的教程(請(qǐng)參考參考資料)— 所以關(guān)于這方面的細(xì)節(jié)我就不再贅述了。我在下面提供的是幾個(gè)演示如何將 Web 服務(wù)實(shí)現(xiàn)插入到全局模型中的示例。

現(xiàn)在讓我們開(kāi)始吧,開(kāi)發(fā)人員提供您已經(jīng)實(shí)現(xiàn)的 Web 服務(wù)的 WSDL 描述。該描述提供了允許客戶(hù)端應(yīng)用程序調(diào)用您的 Web 服務(wù)所必需的所有信息。在 WSFL 工作流中,“客戶(hù)端”指的是實(shí)現(xiàn)各種活動(dòng)的其它 Web 服務(wù)。您的 Web 服務(wù)如何調(diào)用其它的服務(wù)取決于您的流模型定義數(shù)據(jù)和控制鏈接的方法。一旦創(chuàng)建了 WSDL,就需要將其部署到一些網(wǎng)絡(luò)可訪(fǎng)問(wèn)的位置上,最好是部署到您的 Web 服務(wù)器上。然后即可任選地將 WSDL 定義的 Web 服務(wù)發(fā)布到 UDDI 注冊(cè)方。

現(xiàn)在,假設(shè)這一步已經(jīng)完成。您有了一個(gè)名為 Agent.wsdl 的 WSDL 文檔,它位于 http://acme.com/services/agent.wsdl。此 WSDL 文檔的目標(biāo)命名空間為 urn:Agent_Service_Implementation,Web 服務(wù)的名稱(chēng)為 AgentService。該服務(wù)的目的是履行上面勾勒出的商業(yè)流程中旅游代理這一角色。

如 WSFL 規(guī)范定義的那樣,在執(zhí)行商業(yè)流程時(shí),可用 4 種不同的方法來(lái)定位您的 Web 服務(wù):靜態(tài)方法、本地方法、通過(guò) UDDI 的方法或動(dòng)態(tài)方法。

使用靜態(tài)定位非常簡(jiǎn)單,只需向 WSFL 全局模型添加一個(gè)指向您的 WSDL 服務(wù)定義的直接鏈接即可。這樣就會(huì)告訴 WSFL 工作流引擎您的 Web 服務(wù)的確切位置,而無(wú)需作出任何判定(請(qǐng)參閱清單 2)。

清單 2:服務(wù)的靜態(tài)定位




“本地”服務(wù)是不必通過(guò) Web 服務(wù)接口來(lái)提供的 Web 服務(wù)。更多情況下,它們是采用與處理請(qǐng)求的工作流引擎在同一臺(tái)機(jī)器上的應(yīng)用程序或 Java 類(lèi)的形式。這些應(yīng)用程序仍可使用 WSDL 文檔進(jìn)行描述,但描述的方法稍有不同。WSFL 規(guī)范可提供關(guān)于本地服務(wù)的更多詳細(xì)信息(請(qǐng)參閱清單 3)。

清單 3:服務(wù)的“本地”定位



第 3 種查找 Web 服務(wù)的方法是通過(guò)使用 UDDI 查詢(xún)。本來(lái),全局模型定義 UDDI find_service 操作是為了搜索 UDDI 注冊(cè)方并檢索符合條件的一系列侯選 Web 服務(wù)。全局模型使用選擇策略,判定返回的搜索結(jié)果中哪個(gè) Web 服務(wù)將被用于履行商業(yè)流程中的角色。合法的選擇策略包括選擇列表中的第一個(gè)服務(wù)、從列表中隨機(jī)選擇服務(wù)或使用一些用戶(hù)定義的算法。全局模型還可能指出何時(shí)執(zhí)行 UDDI 查詢(xún)??梢赃x擇在開(kāi)發(fā)時(shí)運(yùn)行查詢(xún),這種情況下當(dāng) WSFL 模型部署到生產(chǎn)環(huán)境中時(shí),UDDI 查詢(xún)將被靜態(tài)定位器取代,也可以選擇在運(yùn)行時(shí)運(yùn)行查詢(xún),這種情況下就將在首次調(diào)用流模型時(shí)執(zhí)行 UDDI 查詢(xún)(請(qǐng)參閱清單 4)。

清單 4:服務(wù)的基于 UDDI 的定位


generic="1.0" xmlns:uddi-api="urn:uddi-org:api">
...

使用 UDDI 使 WSFL 變得更靈活、更強(qiáng)大,允許多個(gè)服務(wù)提供者通過(guò)競(jìng)爭(zhēng)獲取在商業(yè)流程中履行一個(gè)角色的權(quán)利。然而,為 WSFL 添加最高級(jí)靈活性的是移動(dòng)定位器機(jī)制,它允許 WSFL 工作流引擎完全根據(jù)調(diào)用流程時(shí)應(yīng)用的一套規(guī)則來(lái)選擇服務(wù)提供者。例如,如果提交的購(gòu)買(mǎi)訂單總額超過(guò) $10,000,那么工作流引擎所選的 Web 服務(wù)實(shí)現(xiàn)就可能不同于為總額不足 $10,000 的購(gòu)買(mǎi)訂單所選的 Web 服務(wù)實(shí)現(xiàn)。

用于調(diào)用 Web 服務(wù)的消息中包含選擇實(shí)際要調(diào)用的 Web 服務(wù)實(shí)現(xiàn)必須滿(mǎn)足的條件,移動(dòng)定位器指定在該消息的什么地方可找到這些條件(請(qǐng)參閱清單 5)。

清單 5:服務(wù)的移動(dòng)定位器

message="flightInfo" messagePart="airline" dataField="providerInfo">

總結(jié)

WSFL 最強(qiáng)大、最有用的功能之一是其能夠允許任何 Web 服務(wù)提供者實(shí)現(xiàn)商業(yè)流程中定義的任何活動(dòng)。根據(jù)用戶(hù)定義的一套規(guī)則來(lái)動(dòng)態(tài)定位并綁定到提供者的功能,為處理先前不存在的 Web 上的商務(wù)添加了一種新思維 — 動(dòng)態(tài)聯(lián)合并集成松散結(jié)合的應(yīng)用程序組件。在本欄目的下一部分,我將向您介紹 WSFL 另一個(gè)很酷的功能:在現(xiàn)有的商業(yè)流程中遞歸嵌套成新的商業(yè)流程。

參考資料

  • 請(qǐng)點(diǎn)擊文章頂部或底部的討論,加入關(guān)于本文的討論論壇。
  • 請(qǐng)務(wù)必查看過(guò)本欄目的前面三部分:第 3 部分、第 4 部分第 5 部分。
  • 學(xué)習(xí)如何使用 Web 服務(wù)工具包來(lái) 實(shí)現(xiàn) Web 服務(wù)。
  • 請(qǐng)閱讀 WSFL 規(guī)范。
  • Google 處查看已列出的商業(yè)流程建模參考資料。
  • 學(xué)習(xí) SOAP、WSDLUDDI
  • 學(xué)習(xí) IBM MQSeries 和它的工作流組件。



關(guān)于作者

James Snell 是一位撰稿人兼開(kāi)發(fā)人員,他也是 IBM Web 服務(wù)開(kāi)發(fā)小組的最新成員之一。他在進(jìn)入 IBM 之前,已經(jīng)具有關(guān)于定制企業(yè)應(yīng)用開(kāi)發(fā)和商家對(duì)商家集成這些方面的深厚背景,而且他對(duì) Web 前沿技術(shù)有極大的熱情??赏ㄟ^(guò)
jasnell@us.ibm.com 與他聯(lián)系。

瀏覽:Web服務(wù)內(nèi)幕,第1部分

Web服務(wù)內(nèi)幕,第2部分

Web服務(wù)內(nèi)幕,第3部分

Web服務(wù)內(nèi)幕,第4部分

Web服務(wù)內(nèi)幕,第5部分

Web服務(wù)內(nèi)幕,第7部分

Web服務(wù)內(nèi)幕,第8部分

Web服務(wù)內(nèi)幕,第9部分

Web服務(wù)內(nèi)幕,第10部分

發(fā)布:2007-03-25 13:27    編輯:泛普軟件 · xiaona    [打印此頁(yè)]    [關(guān)閉]
相關(guān)文章: