監(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)幕,第5部分:進(jìn)入流--用WSFL建模的商業(yè)流程

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

AMTeam.org

Web服務(wù)內(nèi)幕,第5部分:進(jìn)入流

--用WSFL建模的商業(yè)流程


James Snell (jasnell@us.ibm.com)

軟件工程師,Emerging Technologies,IBM

2001 年 7 月

在 Web 服務(wù)內(nèi)幕的上一部分中,我已經(jīng)向您介紹了 Web 服務(wù)流語言(Web Services Flow Language,WSFL)的基本原理。在這一部分,我將兌現(xiàn)我的許諾,循序漸進(jìn)地闡述如何設(shè)計(jì)和創(chuàng)建用 WSFL 實(shí)現(xiàn)的商業(yè)流程模型的具體步驟。

商業(yè)流程建模對(duì)于許多開發(fā)人員并不是很容易掌握,因?yàn)樗⒉皇呛?jiǎn)單地下載一個(gè)代碼片段然后進(jìn)行適當(dāng)?shù)男薷木涂赏瓿傻摹N覀円姓J(rèn)這樣一個(gè)事實(shí),有時(shí)我們開發(fā)人員是相當(dāng)懶惰的。適當(dāng)?shù)纳虡I(yè)建模需要花費(fèi)一定的時(shí)間,它要求接受整體規(guī)劃的能力,不僅能夠組合應(yīng)用程序的特殊 kibbles'n' 字節(jié),而且能夠使應(yīng)用程序適合整個(gè)架構(gòu),該架構(gòu)用于實(shí)現(xiàn)一些截然不同的商業(yè)目標(biāo)。

在上一期中(請(qǐng)參閱參考資料),我花費(fèi)了一些時(shí)間向您介紹一個(gè)新規(guī)范,這個(gè)規(guī)范適用于在 Web 服務(wù)架構(gòu)的框架內(nèi)實(shí)現(xiàn)商業(yè)流程。WSFL 使開發(fā)人員能夠很容易地創(chuàng)建、執(zhí)行 Web 服務(wù),以及將 Web 服務(wù)合并到復(fù)雜的過程和工作流中。

在 Web 服務(wù)內(nèi)幕的這一部分中,我將探究如何創(chuàng)建一個(gè) WSFL 商業(yè)流程的實(shí)現(xiàn),首先是介紹一般商業(yè)流程建模的基本原理。然而,這將是一個(gè)相當(dāng)高深的討論,涵蓋許多更復(fù)雜的問題,不過有時(shí)會(huì)完全忽略其它問題。要牢記的重要一點(diǎn)是,它只不過是一個(gè)介紹,被設(shè)計(jì)用來幫助您從正確的方向開始。強(qiáng)烈推薦您利用本文結(jié)束處所包含的參考資料。

商業(yè)流程 101

太多情況下,開發(fā)人員習(xí)慣于根據(jù)他們要實(shí)現(xiàn)的技術(shù)或功能來看他們正在編寫的應(yīng)用程序;這兒是一個(gè)地址薄,那兒是一個(gè)購物車,或許甚至是即時(shí)消息或?qū)Φ燃軜?gòu)等等。他們經(jīng)常不考慮需要使用那些應(yīng)用程序的整體規(guī)劃,而這些整體規(guī)劃,在許多情況下,可解決某些類型的關(guān)鍵商業(yè)需要。

冒著聽起來好象是在鼓吹公司的危險(xiǎn),人們常常把電子商務(wù)看成是“電子”而非“商務(wù)”。商業(yè)流程建模通過將框架植入個(gè)別應(yīng)用程序(為滿足流程中每一步的要求,可能要插入這些應(yīng)用程序),努力把“商務(wù)”做成了一個(gè)圖 — 就象為一個(gè)汽車裝配線購買原材料,或雇用一個(gè)新員工或支持一個(gè)重要的客戶帳號(hào)。商業(yè)流程建模從一個(gè)能表達(dá)流程整體樣子的圖開始,并按照以下因素分解開來:必須完成的特定活動(dòng)、必須完成這些活動(dòng)的順序、這些活動(dòng)間的依賴性以及確保完成這些活動(dòng)的角色的定義。

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


圖 1 描繪了一個(gè)從 WSFL 規(guī)范完全復(fù)制而來的簡(jiǎn)單商業(yè)流程。您會(huì)注意到上面的圖中,流程中的每個(gè)重要步驟都被標(biāo)識(shí)出來,且與定義了特定順序(每個(gè)步驟都必須按這個(gè)順序完成)的工作流一致。無論使用一些 Java 應(yīng)用程序、或 Web 服務(wù)、或任何不相關(guān)的內(nèi)容能或不能嚴(yán)格地實(shí)現(xiàn)這些步驟中的任何一個(gè)。換句話說,一個(gè)商業(yè)流程模型是關(guān)于必須發(fā)生的事件鏈而不是關(guān)于這些事件將如何發(fā)生的特定細(xì)節(jié)。

圖 1 中的一個(gè)橢圓表示一個(gè)活動(dòng)。每個(gè)活動(dòng)表示必須由某人或某物完成的某事。所有的活動(dòng)都用箭頭鏈接在一起,稱為 有向邊,它指出從一個(gè)活動(dòng)到下一活動(dòng)的流向。這個(gè)流向可能是有條件的也可能是無條件的;也即,可能有一些指定條件的規(guī)則,要執(zhí)行流程中的下一個(gè)活動(dòng)必須滿足這些規(guī)則??赡苓€有一些規(guī)則指定完成某個(gè)活動(dòng)的確切時(shí)間或發(fā)生錯(cuò)誤時(shí)如何處理。圖中虛線行指出活動(dòng)間的信息流,這一點(diǎn)我將在創(chuàng)建 WSFL 全局模型這一部分進(jìn)行更深入的說明。

整體規(guī)劃中的 Web 服務(wù)

WSFL 使 Web 服務(wù)在整個(gè)商業(yè)流程或“流”模型中扮演實(shí)現(xiàn)活動(dòng)的角色。在整體規(guī)劃中,這意味著個(gè)別類型的 Web 服務(wù)(地址薄、即時(shí)消息,信用卡驗(yàn)證服務(wù)等)不如正在實(shí)現(xiàn)的整個(gè)工作流重要,至少從希望使用那些服務(wù)的公司來看是如此。用另一種方法解釋,Web 服務(wù)的真正價(jià)值在于它們能夠使開發(fā)人員真正地引導(dǎo)商務(wù)或共享信息,而不在于 Web 服務(wù)自身的個(gè)別優(yōu)點(diǎn)。

構(gòu)建流模型

這一次,我需要指出這樣一個(gè)事實(shí),即 WSFL 自身,不是一個(gè)關(guān)于如何創(chuàng)建商業(yè)流程模型的規(guī)范,而是一個(gè)關(guān)于如何實(shí)現(xiàn)使用新興 Web 服務(wù)架構(gòu)的商業(yè)流程模型的規(guī)范。換句話說,您并不實(shí)際使用 WSFL 定義商業(yè)流程模型;這些工作由一些 UML 行執(zhí)行。您將更愿意使用 WSFL 來創(chuàng)建商業(yè)模型的一個(gè) XML 表示法,然后將 XML 表示法供給中間件應(yīng)用程序,這些中間件應(yīng)用程序被設(shè)計(jì)用來調(diào)用和管理過程(例如,通過使用 IBM 的 MQSeries Workflow,或 Rational Rose)。然后,您需要理解如何將商業(yè)流程模型圖轉(zhuǎn)換為 WSFL 流模型。

這個(gè)過程其實(shí)很簡(jiǎn)單,一旦有這樣一個(gè)工具,它可暗箱處理這個(gè)步驟,根據(jù)圖形化商業(yè)流程模型自動(dòng)生成 WSFL 流模型,這就將成為一個(gè)您不必理會(huì)的問題了。但現(xiàn)在,理解在 WSFL 中各種事物是如何結(jié)合在一起的,有助于理解它在 Web 服務(wù)架構(gòu)中的用處和功能。

根據(jù)商業(yè)流程模型創(chuàng)建 WSFL 流模型實(shí)際僅取決于對(duì) WSFL 語法中使用的每個(gè) XML 元素的功能的理解,以及對(duì)在流程模型中互相通信的每個(gè)重要信息片段之間的差別的理解。

在模型中,您會(huì)注意到有三個(gè)截然不同的角色,活動(dòng)的實(shí)現(xiàn)要貫穿這三個(gè)角色。這些角色代表了誰負(fù)責(zé)實(shí)現(xiàn)特定活動(dòng)。例如,旅游者計(jì)劃行程,代理商選擇行程路線而航空公司簽發(fā)電子機(jī)票。WSFL 要求明確指定這些角色,以作為流程實(shí)現(xiàn)的一部分。您將使用 WSFL serviceProviderType 元素來完成這項(xiàng)工作。

清單 1:描述旅游過程中的角色的 WSFL 語句













serviceProviderType 元素在給定商業(yè)流程模型的上下文中標(biāo)識(shí)每個(gè)角色類型和特定 Web 服務(wù)接口(以 WSDL 定義的 portTypes 形式),它們必須由 Web 服務(wù)提供者來實(shí)現(xiàn),以履行那些角色。

在這個(gè)示例中,實(shí)際上有兩個(gè)不同的子過程需要您關(guān)心:登記行程與訂票和簽發(fā)機(jī)票過程。一般情況下,應(yīng)使用不同的 WSDL flowModel 為每個(gè)過程建模。每個(gè) flowModel 由幾個(gè)至關(guān)重要的信息片段組成,它們是管理過程實(shí)現(xiàn)的工作流引擎在工作時(shí)所必需的。這些信息包括:

服務(wù)提供者的身份,該提供者履行必需的角色,負(fù)責(zé)每個(gè)活動(dòng)

啟動(dòng)過程的條件(稱為 flowSource)

過程的外部接口,通過這個(gè)接口可使信息進(jìn)出該過程

每個(gè)活動(dòng)的定義(根據(jù)實(shí)現(xiàn)方法以及預(yù)期實(shí)現(xiàn)者進(jìn)行定義)

在過程被執(zhí)行時(shí),控件和信息如何從一個(gè)活動(dòng)流向下一個(gè)活動(dòng)的定義,包括每個(gè)活動(dòng)和過程自身的各種退出和啟動(dòng)條件

遺憾的是,我沒有時(shí)間詳細(xì)描述每個(gè)元素,所以我能做的是提供一個(gè)類似用于購買機(jī)票的 flowModel 的示例。這是來自 WSFL 規(guī)范自身的又一個(gè)示例,所以為更多地了解這個(gè)示例,我推薦您花費(fèi)些時(shí)間閱讀它。

清單 2:旅游過程的流模型






targetMessage="processInstanceData" targetPart="request"/>
sourcePart="airlineWorkId"
targetMessage="receiveTicketOrderOutput"
targetPart="airlineWorkId" />


























targetMessage="sendConfirmationOutput" targetPart="confirmationInfo"/>







targetMessage="sendETicketOutput" targetPart="authorization"/>










構(gòu)建全局模型

WSFL flowModel 中定義的每個(gè)活動(dòng)都是以 WSDL 定義的 Web 服務(wù)的形式實(shí)現(xiàn)的。每個(gè)活動(dòng)代表給定的 portType 中的一個(gè)操作或操作組合。在給定過程中履行角色的每一方都必須正確執(zhí)行由 flowModel 中的 serviceProviderType 元素定義的 portTypes。然后必需的是一個(gè)映射 portTypes 的方法和一個(gè)由服務(wù)提供者使用 portTypes 實(shí)現(xiàn)的操作以及由另一個(gè)服務(wù)提供者實(shí)現(xiàn)的操作,這樣 flowModel 中定義的控件和數(shù)據(jù)鏈接知道執(zhí)行活動(dòng)或交換信息時(shí)要調(diào)用活動(dòng)的哪個(gè)操作?,F(xiàn)在,如果您不確定這是否有意義,請(qǐng)這樣考慮:如果您要寄一盒巧克力給我 — 我很樂意接受 — 您需要知道我的地址。在 WSFL 中,這個(gè)地址是以給定的 Web 服務(wù)接口上的操作的形式表示的,并通過 globalModel 進(jìn)行通信。

清單 3:旅游過程的全局模型





operation="sendItinerary"/>



operation="receiveTripOrder"/>






operation="sendETickets"/>



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


operation="requestTicketOrder"/>

operation="receiveTicketOrder"/>

flowModel 和 globalModel 分開使您能夠把工作流過程的抽象定義(flowModel)與關(guān)于給定過程是如何實(shí)現(xiàn)的特定細(xì)節(jié)( globalModel)分開。

下一部分內(nèi)容?

在本欄目的下一部分中,我將討論服務(wù)提供者必須要做哪些工作,來履行 WSFL flowModel 所定義的角色。該過程具有從現(xiàn)有的商業(yè)流程中重新組合新的商業(yè)流程的能力,表現(xiàn)出 WSFL 強(qiáng)大的、引人注目的功能中的一種。同時(shí),您可能希望通過使用下面列出的參考資料來繼續(xù)學(xué)習(xí)商業(yè)流程建模和 WSFL。

參考資料

  • 請(qǐng)務(wù)必查閱本欄目的前三個(gè)部分:第 2 部分、第 3 部分第 4 部分。
  • 請(qǐng)閱讀 WSFL 規(guī)范。
  • 請(qǐng)?jiān)?Google 處查閱商業(yè)流程建模的參考資料。
  • 請(qǐng)學(xué)習(xí) SOAP、WSDLUDDI
  • 請(qǐng)學(xué)習(xí) BPML、 ebXMLWorkflow Management Coalition。(在以后的部分中,我將使用 WSFL 比較和對(duì)照這些內(nèi)容。)
  • 請(qǐng)參閱 dW Web 服務(wù)的更多參考資料



關(guān)于作者

James 是一位撰稿人和開發(fā)人員,他也是 IBM Web 服務(wù)開發(fā)小組的最新成員之一。他在進(jìn)入 IBM 之前,已經(jīng)具有關(guān)于定制企業(yè)應(yīng)用開發(fā)和商家對(duì)商家集成這些方面的深厚背景,而且他對(duì) 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)幕,第6部分

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:26    編輯:泛普軟件 · xiaona    [打印此頁]    [關(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在線咨詢