監(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)幕,第4部分:介紹Web服務(wù)流語言

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

AMTeam.org

Web服務(wù)內(nèi)幕,第4部分:介紹Web服務(wù)流語言



James Snell (
jasnell@us.ibm.com)

軟件工程師,Emerging Technologies,IBM

2001 年 6 月

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

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

Web 服務(wù)流語言(WSFL)是由 IBM 針對兩個(gè)層面上的工作流提出的一項(xiàng)新標(biāo)準(zhǔn):

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

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

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

工作流概述

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

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

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

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


根據(jù)圖 1,我們可以把工作流的整個(gè)過程設(shè)想成從一個(gè)活動(dòng)執(zhí)行到另一個(gè)活動(dòng),并且在每個(gè)控制點(diǎn)作出相應(yīng)的判定。

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

清單 1 顯示了圖 1 的工作流圖的 WSFL 語法。好好研究該文檔的語法和結(jié)構(gòu)。其中涉及到有關(guān)語法和個(gè)別元素時(shí),可以參閱 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" />

學(xué)會(huì)術(shù)語

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

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

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

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

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

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

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

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

數(shù)據(jù)鏈:數(shù)據(jù)鏈?zhǔn)枪ぷ髁魈幚砥饔脕砜刂仆ㄟ^商業(yè)流程的數(shù)據(jù)流的機(jī)制。盡管多數(shù)情況下,數(shù)據(jù)流和控制流緊密相連,但很可能整個(gè)商業(yè)流程中的信息流傳遞方式與所激活的各項(xiàng)活動(dòng)的序列有所不同。

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

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

進(jìn)入流程

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

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





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






operation="receivePO"/>


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

清單 3:數(shù)據(jù)鏈定義


targetMessage="purchaseOrder"/>

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

沒有出現(xiàn)在這個(gè) WSFL 示例中的是控制轉(zhuǎn)移條件,實(shí)際上正是它們決定了每個(gè)單獨(dú)活動(dòng)當(dāng)前是否完成,以及工作流是否準(zhǔn)備轉(zhuǎn)移到下一個(gè)活動(dòng)中去。我將在接下來的部分中討論這些轉(zhuǎn)移。

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

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



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

展望未來

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

參考資料

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



關(guān)于作者
James Snell 是一位撰稿人和開發(fā)人員,他也是 IBM Web 服務(wù)開發(fā)小組的最新成員之一。他在進(jìn)入 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)幕,第5部分

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

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

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

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

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

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

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

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

咨詢:400-8352-114

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

QQ在線咨詢