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

Web服務內幕,第4部分:介紹Web服務流語言

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

AMTeam.org

Web服務內幕,第4部分:介紹Web服務流語言



James Snell (
jasnell@us.ibm.com)

軟件工程師,Emerging Technologies,IBM

2001 年 6 月

所謂工作流就是指為滿足商業(yè)需要而把各個過程組織成定義完備的操作流程。為了在 Web 服務架構的框架內定義軟件的工作流過程,IBM 最近發(fā)布了一種新的 XML 語法。這里的四篇文章專門討論 Web 服務中的工作流問題,我在第一篇中將介紹 Web 服務流語言的一些基本概念,使您迅速了解它究竟是什么以及它試圖完成些什么。

Web 服務的目的是使應用程序能夠在網絡上進行無縫集成,而不必考慮它的編程語言和運行環(huán)境。而 Web 服務工作流的目的就是使商業(yè)流程和利用了大量 Web 服務的交易生命周期能夠進行同樣的無縫集成。

Web 服務流語言(WSFL)是由 IBM 針對兩個層面上的工作流提出的一項新標準:

它試圖用一個有向圖模型來定義和執(zhí)行商業(yè)流程;

它定義了一個公共接口,該接口允許商業(yè)流程把自己宣傳成為 Web 服務。

我們這四篇文章中專門幫助您學會如何充分利用 WSFL。我在第一篇中將首先介紹這種規(guī)范的一些最基本的概念。這一系列的另外三篇文章將主要講述如何實際使用 WSFL。這里的介紹只打算讓您對 WSFL 是什么以及必須提供什么有個最初的了解,因此對一些概念的細節(jié)部分忽略不談。在這一系列文章的后續(xù)部分,我將會更深入鉆研和探討這種規(guī)范的更重要的部分。

工作流概述

工作流定義機制,在歷史上已有先例。它能夠對各種復雜的情況控制自如,使 XML 規(guī)范看起來就象孩子的童話一樣奇妙。這其中的竅門就是創(chuàng)造一種能夠迅速和精確地定義一個過程的方法,而且這種方法不能使控制邏輯變得過分復雜,以至于增加大量開銷而無法實現。

為了從上述困境中解脫出來,WSFL 不打算適用于所有人,也不打算無所不能,只把重點放在工作流核心模型的產生上。該模型包括一些基本的過程以及簡單的有向圖,這些邊框控制著從一個活動到下一活動的處理邏輯流程。

如果您對商業(yè)流程建模和工作流不太熟悉,圖 1 提供了一個簡單的工作流的基本示例。這是一個有向圖。每一個方框代表一個活動(即一些需要被完成的工作),每一條帶箭頭的實線(即 邊)代表從一個活動到另一活動的控制流程,箭頭指明流程進展的方向(因而被稱作 有向邊)。在各個控制點要判定是否繼續(xù)進行處理、當前活動是否完成、邊框圖是否繼續(xù)畫下去以及是否發(fā)生了錯誤,如此等等。那些連接各項活動的虛線表示兩個活動之間的信息流程。

圖 1:一個商業(yè)流程的示例


根據圖 1,我們可以把工作流的整個過程設想成從一個活動執(zhí)行到另一個活動,并且在每個控制點作出相應的判定。

WSFL 實際上是一個對精確圖表進行建模的工具,它使用人和機器都能理解的 XML 語法。通過使用 WSFL,一個按照活動和控制點層層遞進的工作流引擎可以在商業(yè)流程中貫穿始終。無論如何這并非一個新的概念,然而 Web 服務之所以具有革命性的力量,主要在于它能夠成為跨越各種平臺邊界的橋梁,因此 WSFL 的強大之處在于它能夠跨越技術和商業(yè)的邊界來對商業(yè)流程進行建模,而這恰恰是絕大多數的工作流引擎的局限之處。

清單 1 顯示了圖 1 的工作流圖的 WSFL 語法。好好研究該文檔的語法和結構。其中涉及到有關語法和個別元素時,可以參閱 WSFL 規(guī)范(請參閱參考資料)。

清單 1:示例商業(yè)流程的 WSFL 語法







portType="totalSupplyPT" operation="submitPO"/>






operation="receivePO"/>






portType="totalSupplyPT" operation="processPayment"/>






portType="totalSupplyPT" operation="submitShippingOrder"/>






portType="totalSupplyPT" operation="receiveShippingOrder"/>






portType="totalSupplyPT" operation="shipProduct" />




/>
target="receiveShippingOrder" />


targetMessage="purchaseOrder"/>


targetMessage="purchaseOrder"/>


targetMessage="shippingOrder" />

target="receiveShippingOrder">
targetMessage="shippingOrder" />


targetMessage="shippingOrder" />

學會術語

就象普通的工作流一樣,WSFL 有它自己專用的詞匯表;控制 WSFL 的關鍵是控制該詞匯表。下面我僅僅粗略地講一下一些更重要的 WSFL 的概念。隨著這一系列的討論繼續(xù)進行,我們將會精選出更多的概念來進行重點講解。

商業(yè)流程:商業(yè)流程就是通過組合能實現一個特定商業(yè)目標的各項活動的任一集合。例如,處理一個信用卡號,雇傭一個新職員,提交一個專利等都是商業(yè)流程的示例。

流程模型:流程模型實際就是用 XML 表示的一個對商業(yè)流程建模的指示性圖表。其結構過去常常被用于把 Web 服務組成工作流,而 Web 服務由它們各自的 Web 服務描述語言(WSDL)文檔來定義(請參閱參考資料)。流程模型有時被認為是流程的排版,其作用相當于管弦樂的編曲和舞蹈的編排。

全局模型:僅僅對一個工作流中兩個活動之間的處理流程進行建模是不夠的(在 WSFL 的術語中是指對兩個 Web 服務之間的處理流程進行建模)。除流程模型之外,還需要有種方法來明確指定在整個過程中 Web 服務相互之間如何實現預期的交互作用。所以我們就引入了全局模型這個概念,全局模型就是當流程被執(zhí)行時,用來指定 Web 服務之間的消息在流程模型中如何傳遞的一系列必需鏈接。

遞歸嵌套:WSFL 有一個很酷的特征:一旦您為一個指定的商業(yè)流程定義了全局模型和流程模型,就可能把整個商業(yè)流程定義為一個個別的 Web 服務,該 Web 服務可能被其它的商業(yè)流程使用。換句話說,在 WSFL 商業(yè)流程中可以遞歸嵌套 WSFL 商業(yè)流程。這樣能大大提高您定義的模型的靈活性,并豐富其可能性。它也為一些非常激動人心的商機的到來打開了門戶,有關這些商業(yè)上的種種可能性,我將在第四篇文章中闡明。

服務提供者:服務提供者就是一個商業(yè)流程中負責執(zhí)行一個特定活動的團體。在 WSFL 中,每一個活動都是一個 Web 服務,因而每一個服務提供者就是一個由 Web 服務架構文檔定義的 Web 服務提供者(請參閱參考資料)。

服務提供者類型:為了明確區(qū)分商業(yè)流程及其實現,WSFL 的流程模型和全局模型把每個活動定義為由特殊類型的服務提供者來實現,而不是由特殊的服務提供者本身來實現。服務提供者類型由一個使用 WSFL 的 Web 服務接口文檔來定義。為了在商業(yè)流程中做到不同類型的服務提供者能夠控制與之相應的特殊活動,服務提供者必須正確實現與之相適應的 Web 服務接口。

控制鏈:控制鏈就是 WSFL 中相當于我們前面談到的指示性邊框的部分,也就是說,它是在商業(yè)流程中通過工作流處理器把每個活動貫通起來的機制。

數據鏈:數據鏈是工作流處理器用來控制通過商業(yè)流程的數據流的機制。盡管多數情況下,數據流和控制流緊密相連,但很可能整個商業(yè)流程中的信息流傳遞方式與所激活的各項活動的序列有所不同。

轉移條件:作為一個正在運作的商業(yè)流程,工作流處理器必須能夠識別一個特定的活動何時結束以及下一個活動何時被判定和被激活。轉移條件就是一條是或者否的語句,處理器借以判定任何一個特定活動的當前狀態(tài)。

生命周期接口:如上所述,WSFL 商業(yè)流程本身能夠被定義成 Web 服務。生命周期接口就是由 WSDL 定義的 Web 服務接口,該接口描述了在一個特殊的 Web 服務應用程序中所有 WSFL Web 服務支持的一組基本操作。這些操作包括:商業(yè)流程的激活、掛起、恢復、阻塞、終止,以及查詢其當前狀態(tài)。

進入流程

讀完上面給出的商業(yè)流程的示例,我們可以容易地根據圖表把一般處理流程看作每個被具體執(zhí)行的活動。整個過程的關鍵就是 activity 和 controlLink 的定義,它們控制著實際的流程。舉例來說,清單 2 就描述了從 submitP0 活動到 processP0 活動的一段控制流程。

清單 2:一段控制流程的描述





portType="totalSupplyPT" operation="submitPO"/>






operation="receivePO"/>


這里,掌握下面一個簡單的概念非常重要:每個活動被 WSDL 文檔描述成一個單獨的 Web 服務。不同的 controlLink 邊框把這些 Web 服務按照一定的順序連接起來。下面顯示的是 dataLink 定義,它定義了數據是怎樣從一個活動傳遞到下一個活動中。

清單 3:數據鏈定義


targetMessage="purchaseOrder"/>

sourceMessage 和 targetMessage 屬性指的是 WSFL 為源 Web 服務和目標 Web 服務定義的消息。dataLink 把這兩種消息映射在一起,實際上就是表明 sourceMessage 就和 targetMessage 一模一樣。

沒有出現在這個 WSFL 示例中的是控制轉移條件,實際上正是它們決定了每個單獨活動當前是否完成,以及工作流是否準備轉移到下一個活動中去。我將在接下來的部分中討論這些轉移。

您還應該注意 flowModel 示例中提到了三種類型的服務提供者:買方、賣方和發(fā)貨方。

清單 4:流程模型示例中的服務提供者



它們中的每個都代表了完成整個商業(yè)流程所必須勝任的角色。任何一個能夠實現買方、賣方和發(fā)貨方服務提供者類型定義的 Web 服務提供者都可以勝任這樣的角色。一旦確定了一個適當的服務提供者,有關該提供者的引用可能立即就通過定位器元素和 WSFL 文檔一起被直接引用,或者工作流引擎可能會判定有關鏈接是如何被分辨的。如此設置的機制可以大大提高 WSFL 的靈活性,允許商業(yè)流程被自由定義,而不必關心究竟是誰來負責實現每一個單獨活動。

展望未來

在這一部分,我已經描繪了 WSFL 的概貌,簡單介紹了它是做什么的以及它怎樣來做。您已經了解到 Web 服務工作流的基本概念。下一部分我們將論及以下必要步驟:如何實際建模一個商業(yè)流程、創(chuàng)建全局模型和流程模型以及定義具體實現流程步驟的服務提供者類型。在第 3 部分中,我們會看到一個服務提供者怎樣來實現一個定義好的服務提供者類型,并且在商業(yè)模型內部假定適當的角色。在第 4 部分和最后,我們將探討遞歸嵌套的概念,并且示例說明商業(yè)流程怎樣被組合利用來解決更加復雜的商業(yè)問題。

參考資料

  • 請點擊文章頂部和底部的討論,加入關于本文的討論論壇。
  • 請確信仔細閱讀過本專欄在此之前的三篇文章:第 1 部分、第 2 部分第 3 部分。
  • 如果您初次接觸 Web 服務方面的內容,強烈推薦您閱讀 Web 服務概念架構 文檔,從而對一些重要概念有個基本的了解。
  • WSFL 主要建立在 Web 服務描述語言(WSDL)和用于描述單獨 Web 服務的 XML 語法的基礎之上。
  • WSFL 規(guī)范表明 IBM 不斷充實完備基于 XML 的工作流定義語法的集合,該集合包括 ebXML 商業(yè)流程規(guī)范、商業(yè)流程建模語言以及 Microsoft 專利的作為 Biztalk Server 核心的 XLANG。
  • 當然,還有 Web 服務流語言 規(guī)范本身。



關于作者
James Snell 是一位撰稿人和開發(fā)人員,他也是 IBM Web 服務開發(fā)小組的最新成員之一。他在進入 IBM 之前,已經具有關于定制企業(yè)應用開發(fā)和商家對商家集成這些方面的背景,而且他對 Web 技術前沿方面有著極大的熱情??梢酝ㄟ^
jasnell@us.ibm.com 和他聯系。

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

Web服務內幕,第2部分

Web服務內幕,第3部分

Web服務內幕,第5部分

Web服務內幕,第6部分

Web服務內幕,第7部分

Web服務內幕,第8部分

b服務內幕,第9部分

Web服務內幕,第10部分

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

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

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

咨詢:400-8352-114

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

QQ在線咨詢