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

Web服務(wù)內(nèi)幕,第5部分:進入流--用WSFL建模的商業(yè)流程

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

AMTeam.org

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

--用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)我的許諾,循序漸進地闡述如何設(shè)計和創(chuàng)建用 WSFL 實現(xiàn)的商業(yè)流程模型的具體步驟。

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

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

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

商業(yè)流程 101

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

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

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


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

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

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

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

構(gòu)建流模型

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

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

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

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

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













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

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

服務(wù)提供者的身份,該提供者履行必需的角色,負責每個活動

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

過程的外部接口,通過這個接口可使信息進出該過程

每個活動的定義(根據(jù)實現(xiàn)方法以及預(yù)期實現(xiàn)者進行定義)

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

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

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






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


























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







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










構(gòu)建全局模型

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

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





operation="sendItinerary"/>



operation="receiveTripOrder"/>






operation="sendETickets"/>



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


operation="requestTicketOrder"/>

operation="receiveTicketOrder"/>

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

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

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

參考資料

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



關(guān)于作者

James 是一位撰稿人和開發(fā)人員,他也是 IBM Web 服務(wù)開發(fā)小組的最新成員之一。他在進入 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)幕,第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號1層9號

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

咨詢:400-8352-114

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

QQ在線咨詢