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

Web服務內幕,第7部分:WSFL和遞歸組合

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

AMTeam.org

Web服務內幕,第7部分:WSFL和遞歸組合


James Snell (jasnell@us.ibm.com)

軟件工程師,Emerging Technologies,IBM

2001 年 7 月

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

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

遞歸組合介紹

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

圖 1:Web 服務的遞歸組合


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

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

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

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

圖 2:導出 WSFL 中的單個活動


導出一個 WSFL 活動與將 Java 類上的操作標記為 public 大致相同。也就是說,當一個方法被標記為 public 時,對于其它使用該 Java 類的應用程序它就是可見的和可訪問的。它與下面這種情況完全相同,即當您導出一個活動時,它變?yōu)榭梢姷?,同時也是使用 WSDL 進行描述的 Web 服務接口描述的一部分。為搞清楚這一點,我將向您展示一個簡單的示例。

首先,設想一個非常簡單的工作流流程,如圖 3 所示。

圖 3:一個非常簡單的工作流流程


在這個流程中,只有三個活動:查看股票、確定最好的賣出價格以及賣出股票(不賣出泡泡框實質上會結束工作流而無需任何附加活動)。這個流程的流模型如清單 1 所示。

清單 1:股票訂購流模型



牋_
_

_

_

_
牋_

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

_

_
牋_
牋_
牋_
牋_

牋_

_

_
牋_
牋_
牋_
牋_

牋_

_

_
牋_
牋_
牋_
牋_

牋_

_

_target="determineSellPrice"/>

_target="sellStocks"/>

_target="determineSellPrice"/>_

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

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

清單 2:添加到流模型中的查看股票和賣出股票活動

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

牋_

_

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

清單 3:流模型的一個公共 Web 服務接口


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

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

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

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

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

圖 4: 一個遞歸組合流程


聚集服務

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

動態(tài)組合

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

從本質上來說,多個服務提供者可以用完全相同的公共接口實現(xiàn)兩個完全不同的工作流。因為他們導出相同的 Web 服務操作集合,他們彼此之間可進行互操作。由于 WSFL 流模型鏈接到 Web 服務的公共接口(而不是該接口的特定實現(xiàn)),所以兩個提供者都有涉足履行活動的能力。WSFL 引擎,以 WSFL 流模型的設計師提供的規(guī)則為基礎,可在任何給定的情況下動態(tài)地確定使用哪個提供者。

包裝

通過被合理地利用,WSFL 會成為企業(yè)的整體 Web 服務戰(zhàn)略的重要組件。毫無疑問,許多概念是相當復雜,在最好的情況下,設計一個成功的商業(yè)流程也會是一項復雜的任務。但是,有了適當數(shù)量的實踐,適當?shù)墓ぞ咭约耙恍┠托?,它所帶來的好處將會超過其復雜性。

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

對流程和工作流進行試驗

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

參考資料

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

關于作者

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

瀏覽:Web服務內幕,第1部分

Web服務內幕,第2部分

Web服務內幕,第3部分

Web服務內幕,第4部分

Web服務內幕,第5部分

Web服務內幕,第6部分

Web服務內幕,第8部分

Web服務內幕,第9部分

Web服務內幕,第10部分

發(fā)布:2007-03-25 13:27    編輯:泛普軟件 · xiaona    [打印此頁]    [關閉]
相關文章:
石家莊OA系統(tǒng)
聯(lián)系方式

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

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

咨詢:400-8352-114

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

QQ在線咨詢