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

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

申請免費試用、咨詢電話:400-8352-114

AMTeam.org

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

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


James Snell (jasnell@us.ibm.com)

軟件工程師,Emerging Technologies,IBM

2001 年 7 月

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

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

流程概述

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

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


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

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





















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


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

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

成為流程中的一部分

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

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

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

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

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

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

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




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

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



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

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


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

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

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

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

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

總結(jié)

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

參考資料

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



關(guān)于作者

James Snell 是一位撰稿人兼開發(fā)人員,他也是 IBM Web 服務(wù)開發(fā)小組的最新成員之一。他在進入 IBM 之前,已經(jīng)具有關(guān)于定制企業(yè)應(yīng)用開發(fā)和商家對商家集成這些方面的深厚背景,而且他對 Web 前沿技術(shù)有極大的熱情??赏ㄟ^
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    [打印此頁]    [關(guān)閉]
相關(guān)文章:
石家莊OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設(shè)南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢