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

Web服務(wù)內(nèi)幕,第7部分:WSFL和遞歸組合

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

AMTeam.org

Web服務(wù)內(nèi)幕,第7部分:WSFL和遞歸組合


James Snell (jasnell@us.ibm.com)

軟件工程師,Emerging Technologies,IBM

2001 年 7 月

Web 服務(wù)體系結(jié)構(gòu)最引人注目的承諾之一是它允許新的交互類型以及新的流程類型出現(xiàn)。兌現(xiàn)這個(gè)承諾的一部分工作是提供一個(gè)允許通過(guò)組合現(xiàn)有流程和服務(wù)來(lái)建立那些新流程的框架。Web 服務(wù)流語(yǔ)言(Web Services Flow Language,WSFL)對(duì)其“遞歸組合”原理做了完整的介紹,這個(gè)原理允許完整的商業(yè)流程作為活動(dòng)被嵌入到其它的流模型中。Web 服務(wù)內(nèi)幕的這一部分通過(guò)說(shuō)明“遞歸組合”背后的思想為這個(gè)介紹 WSFL 的系列畫(huà)上了句號(hào)。

當(dāng)我開(kāi)始這個(gè)分四部分的介紹 WSFL 的系列時(shí),我的目的很簡(jiǎn)單:使您對(duì) WSFL 有一個(gè)基本了解,知道它能做什么,如何使用它,以及它有什么優(yōu)勢(shì)。但是,如果不接觸它其中的一個(gè)核心功能:商業(yè)流程的遞歸組合,任何關(guān)于 WSFL 的討論都不能算完整。

遞歸組合介紹

遞歸組合的思想很簡(jiǎn)單:可以通過(guò)組合現(xiàn)有的商業(yè)流程來(lái)定義新的商業(yè)流程(請(qǐng)參見(jiàn)圖 1)。由于我在這里討論的是 Web 服務(wù),所以從本質(zhì)上來(lái)說(shuō)它意味著,使用 WSFL 您可以用一個(gè) Web 服務(wù)接口(WSDL 文檔)將商業(yè)流程包裝起來(lái),并將其當(dāng)作您希望與之交互的任何其它 Web 服務(wù)一樣對(duì)待。

圖 1:Web 服務(wù)的遞歸組合


您可能馬上會(huì)問(wèn),“它是什么?為什么它很重要?”我將用一個(gè)現(xiàn)實(shí)生活中的案例回答這些問(wèn)題。例如,您在 ReaderCo 公司工作,您希望買(mǎi)一本書(shū)。您的公司已經(jīng)有了一個(gè)使用 WSFL 建模的采購(gòu)商業(yè)流程?,F(xiàn)在,我的公司 SnellCo 是銷售書(shū)籍的。我有一個(gè)為處理書(shū)籍訂單而建立的商業(yè)流程。您的 WSFL 流模型包含一個(gè)向能夠處理此訂單的公司提交此訂單的活動(dòng)。我的 WSFL 流模型只可在已經(jīng)接收到購(gòu)買(mǎi)訂單時(shí)才能夠開(kāi)始。因此,通過(guò)用 WSDL 接口將我的商業(yè)流程包裝起來(lái)并將其作為“書(shū)籍訂購(gòu) Web 服務(wù)”在 Web 上發(fā)布,您的 WSFL 流模型就可以發(fā)現(xiàn)我的服務(wù)并提交其購(gòu)買(mǎi)訂單。

在這個(gè)案例中,您不用在意我的 WSFL 流模型是什么樣子,只是希望能夠?qū)①?gòu)買(mǎi)訂單推進(jìn)這個(gè)模型來(lái)使整個(gè)流程運(yùn)轉(zhuǎn)。而我也真的不在意您的 WSFL 流模型是什么樣子,我只希望接收到您的購(gòu)買(mǎi)訂單,這樣就可以讓這個(gè)流程繼續(xù)進(jìn)行。WSFL 支持遞歸組合,允許您和我用某種方法將我們的兩個(gè)商業(yè)流程鏈接起來(lái),這種方法要求我們只要在提交的購(gòu)買(mǎi)訂單的格式上達(dá)成一致即可。在保持分布式工作流體系結(jié)構(gòu)時(shí),這可以簡(jiǎn)化進(jìn)行商業(yè)活動(dòng)的方法。

商業(yè)流程的私有生命周期

在 WSFL 中,每個(gè)商業(yè)流程都有私有生命周期和共有生命周期。有一些內(nèi)容內(nèi)部成員能夠看到而外部成員則看不到。商業(yè)流程的私有生命周期稱為 商業(yè)流程的私有接口,同樣,公共生命周期是其公共接口。在私有接口中,您會(huì)發(fā)現(xiàn)流模型和全局模型,它們定義商業(yè)流程實(shí)際要做的工作。WSFL 允許您操作流程的單個(gè)部分,比如接收購(gòu)買(mǎi)訂單的地方,或打出收據(jù)的地方,并將它們作為商業(yè)流程公共接口的一部分導(dǎo)出。圖 2 顯示了在 WSFL 中的單個(gè)活動(dòng)的導(dǎo)出如何允許您為商業(yè)流程建立一個(gè) WSDL 接口,其它應(yīng)用程序可通過(guò)這個(gè)接口進(jìn)行交互。

圖 2:導(dǎo)出 WSFL 中的單個(gè)活動(dòng)


導(dǎo)出一個(gè) WSFL 活動(dòng)與將 Java 類上的操作標(biāo)記為 public 大致相同。也就是說(shuō),當(dāng)一個(gè)方法被標(biāo)記為 public 時(shí),對(duì)于其它使用該 Java 類的應(yīng)用程序它就是可見(jiàn)的和可訪問(wèn)的。它與下面這種情況完全相同,即當(dāng)您導(dǎo)出一個(gè)活動(dòng)時(shí),它變?yōu)榭梢?jiàn)的,同時(shí)也是使用 WSDL 進(jìn)行描述的 Web 服務(wù)接口描述的一部分。為搞清楚這一點(diǎn),我將向您展示一個(gè)簡(jiǎn)單的示例。

首先,設(shè)想一個(gè)非常簡(jiǎn)單的工作流流程,如圖 3 所示。

圖 3:一個(gè)非常簡(jiǎn)單的工作流流程


在這個(gè)流程中,只有三個(gè)活動(dòng):查看股票、確定最好的賣(mài)出價(jià)格以及賣(mài)出股票(不賣(mài)出泡泡框?qū)嵸|(zhì)上會(huì)結(jié)束工作流而無(wú)需任何附加活動(dòng))。這個(gè)流程的流模型如清單 1 所示。

清單 1:股票訂購(gòu)流模型



牋_
_

_

_

_
牋_

牋牋_targetMessage="processInstanceData" targetPart="request"/>
牋_

_

_
牋_
牋_
牋_
牋_

牋_

_

_
牋_
牋_
牋_
牋_

牋_

_

_
牋_
牋_
牋_
牋_

牋_

_

_target="determineSellPrice"/>

_target="sellStocks"/>

_target="determineSellPrice"/>_

_source= "determineSellPrice" target="sellStocks"/>

其中的兩個(gè)操作,查看股票和賣(mài)出股票,要求商業(yè)流程與商業(yè)流程自身外部的 Web 服務(wù)進(jìn)行交互,所以我們需要將那些活動(dòng)作為流程公共接口的一部分導(dǎo)出。我們使用流模型中的導(dǎo)出機(jī)制進(jìn)行此導(dǎo)出操作,如清單 2 所示。

清單 2:添加到流模型中的查看股票和賣(mài)出股票活動(dòng)

_
牋_
牋_
牋_
牋_
牋牋_
牋牋_targetMessage="checkStocksOutput" targetPart="stockQuote"/>
牋牋_

牋_

_

WSFL 實(shí)現(xiàn)引擎現(xiàn)在可獲取全局模型,在整個(gè) WSDL 生成過(guò)程中運(yùn)行此全局模型并創(chuàng)建公共 Web 服務(wù)接口(WSDL portType)定義,如清單 3 所示。

清單 3:流模型的一個(gè)公共 Web 服務(wù)接口


牋牋
牋牋牋__
牋__lt;/message>
牋牋牋牋
牋牋
牋牋牋__
牋牋

牋牋牋牋
牋__
牋牋牋_
牋牋牋牋
牋牋牋牋牋
牋牋牋牋牋
牋牋牋牋

牋牋牋_
牋牋牋牋
牋牋牋牋牋
牋牋牋牋牋
牋牋牋牋
_
牋_

現(xiàn)在,為了解釋一下剛才發(fā)生的事情,我將要后退一步??紤]一下查看股票操作。實(shí)質(zhì)上,為了執(zhí)行這個(gè)活動(dòng),WSFL 引擎必須向一些位于網(wǎng)絡(luò)外部的股票行情服務(wù)發(fā)出一個(gè) Web 服務(wù)請(qǐng)求。但是,該引擎需要確切知道要進(jìn)行這次調(diào)用,應(yīng)怎樣做以及做些什么。在 WSDL 術(shù)語(yǔ)中,查看股票操作是一個(gè)請(qǐng)求—響應(yīng)操作。使用 WSFL 全局模型中的 plug-link 機(jī)制,您向引擎提供執(zhí)行該操作的必要信息并將其綁回到正在執(zhí)行的商業(yè)流程中。

那么如何將其綁回到遞歸組合中呢?WSFL 工作流中的每個(gè)活動(dòng)都是由 Web 服務(wù)公開(kāi)的操作執(zhí)行。那些操作通過(guò)使用 WSDL 端口類型定義而被公開(kāi)。WSFL 全局模型和 pluglink 允許您為商業(yè)流程的各部分建立 WSDL 端口類型定義。您可以將這兩者鏈接在一起,這樣一個(gè)流程中的活動(dòng)就可以通過(guò)另一個(gè)流程的公共接口實(shí)現(xiàn)。圖 4 顯示一個(gè)遞歸組合流程,其中一個(gè)流程中的活動(dòng)被綁定到另一個(gè)流程的公共接口。

圖 4: 一個(gè)遞歸組合流程


聚集服務(wù)

遞歸組合提供一種將來(lái)自不同提供者的服務(wù)聚集到單個(gè)解決方案的方法。例如,一個(gè)服務(wù)提供者可能提供一個(gè)購(gòu)買(mǎi)訂單 Web 服務(wù),它實(shí)際上是一個(gè)由許多不同的服務(wù)提供者(為完成諸如信用卡認(rèn)證,物流等任務(wù))提供的 Web 服務(wù)的集合體。從最終用戶的角度來(lái)看,他/她看到的是購(gòu)買(mǎi)訂單服務(wù),而不是這個(gè)服務(wù)背后所進(jìn)行的其它事情。

動(dòng)態(tài)組合

將 WSFL 的動(dòng)態(tài)選擇使用哪個(gè) Web 服務(wù)實(shí)現(xiàn)和服務(wù)提供者來(lái)執(zhí)行工作流中給定的任何活動(dòng)的能力與遞歸組合概念結(jié)合在一起將會(huì)為您提供更高級(jí)別的靈活性。這個(gè)過(guò)程與我在本專欄的上一部分中所描述的完全相同(請(qǐng)參閱參考資料)。

從本質(zhì)上來(lái)說(shuō),多個(gè)服務(wù)提供者可以用完全相同的公共接口實(shí)現(xiàn)兩個(gè)完全不同的工作流。因?yàn)樗麄儗?dǎo)出相同的 Web 服務(wù)操作集合,他們彼此之間可進(jìn)行互操作。由于 WSFL 流模型鏈接到 Web 服務(wù)的公共接口(而不是該接口的特定實(shí)現(xiàn)),所以兩個(gè)提供者都有涉足履行活動(dòng)的能力。WSFL 引擎,以 WSFL 流模型的設(shè)計(jì)師提供的規(guī)則為基礎(chǔ),可在任何給定的情況下動(dòng)態(tài)地確定使用哪個(gè)提供者。

包裝

通過(guò)被合理地利用,WSFL 會(huì)成為企業(yè)的整體 Web 服務(wù)戰(zhàn)略的重要組件。毫無(wú)疑問(wèn),許多概念是相當(dāng)復(fù)雜,在最好的情況下,設(shè)計(jì)一個(gè)成功的商業(yè)流程也會(huì)是一項(xiàng)復(fù)雜的任務(wù)。但是,有了適當(dāng)數(shù)量的實(shí)踐,適當(dāng)?shù)墓ぞ咭约耙恍┠托模鶐?lái)的好處將會(huì)超過(guò)其復(fù)雜性。

我寫(xiě)這一系列文章的目的只是為了向您介紹 WSFL。因此,我省去了許多細(xì)節(jié)問(wèn)題,而其它還有一些細(xì)節(jié)被我完全忽略了。目的是為了幫助您對(duì) WSFL 的基本概念有一個(gè)初步了解,而不是要您成為這方面的專家。我建議,如果您已經(jīng)對(duì) WSFL 的基本概念有了初步的了解,您可以閱讀 WSFL 規(guī)范。學(xué)習(xí)這個(gè)規(guī)范,從頭至尾徹底看一下這些概念,并花費(fèi)一些時(shí)間練習(xí)將工作流放在一起。而且,和以前一樣,如果您有什么看法和問(wèn)題,請(qǐng)發(fā)消息給我。

對(duì)流程和工作流進(jìn)行試驗(yàn)

您可以通過(guò)使用 Web 服務(wù)流程管理工具包(可從 alphaWorks 獲得)對(duì)這些概念進(jìn)行試驗(yàn)。雖然它不是一個(gè) WSFL 實(shí)現(xiàn),但它的確能夠?yàn)楝F(xiàn)有的 MQ 系列工作流實(shí)現(xiàn) “公共接口”概念。關(guān)于它如何運(yùn)作以及其功能的完整信息包含在軟件包中。

參考資料

  • 參與本文的討論論壇
  • 請(qǐng)務(wù)必查閱本專欄的前 3 部分:第 4 部分、第 5 部分第 6 部分
  • 從 alphaWorks 下載 Web 服務(wù)流程管理功具包。
  • 閱讀 WSFL 規(guī)范
  • 學(xué)習(xí) SOAP、WSDLUDDI
  • 學(xué)習(xí) WebSphere MQ 及其工作流組件

關(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)幕,第6部分

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)文章:
石家莊OA系統(tǒng)
聯(lián)系方式

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

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

咨詢:400-8352-114

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

QQ在線咨詢