摘要:集成并協調供應鏈中各成員的Web服務可以使虛擬企業獲得很高的效率,本文重點討論跨企業供應鏈管理系統的建模問題。在分析跨企業過程的服務集成面臨的相關問題的基礎上,引入了面向對象的設計理念,詳細闡述了過程模型的服務接口、服務活動、占位符和服務包裝器四類服務模型原語。
關鍵詞:供應鏈管理系統;Web服務;過程模型
中圖分類號:F270 文獻標識碼:A
為了保持企業競爭力,現代企業必須在為顧客提供服務和產品方面進行協作,這些服務或產品取決于多種業務資源和多個組織資源。無論該協作是正式的長期聯營或者僅僅持續到某項客戶服務終止,協作期間參與企業都會形成高效運轉的虛擬企業。建立能利用并管理供應鏈中各成員企業提供的Web服務的供應鏈,企業可以獲得很高的效率。
本文提出一種通過集成并協調Web服務的跨企業過程,來建立并管理跨企業供應鏈的技術。為實現此目標,提出了基于Web服務的過程模型(Process Model)的概念:a. 將供應鏈捕獲為選取、集成并使用Web服務的多個跨企業過程;b. 捕獲Web服務,即對虛擬企業中的各聯盟企業提供的服務間的函數關系、契約關系和會話關系進行建模;c. 通過Web服務組合和自動Web服務協調規范為供應鏈管理系統程序設計提供執行語義和協調原語。
一、 跨企業過程的服務集成所面臨的問題
服務的使用包括服務請求者(服務客戶)與服務提供者間的會話。這種會話包括服務請求操作的執行、服務運行期間的各種控制和信息交換操作以及服務結果的最終交付。對會話進行捕獲和協調就需要建模和執行原語,這遠遠超出了傳統工作流模型中活動的調用/結束語義。如果服務請求者與服務提供者間還存在異構性,那么情況將變得更加復雜。將異構服務集成進傳統工作流模型會導致規范爆炸、過程活動及其依賴間的組合爆炸,因此實際應用中難以對其進行有效管理。
為了集成各成員企業提供的服務,在基于服務的跨企業過程中需要使用服務活動。服務活動也就是將各服務的操作和/或狀態轉換成可以加入到跨企業過程中活動行為的服務代理(Service Proxy)。在虛擬企業中,當相同的服務具有多個提供者時,基于服務的跨企業過程就必須包含抽象活動,稱其為服務接口。一個服務接口可以具有多個實現,而服務活動用于實現各服務接口。這也就是說,相同的服務具有多個提供者時,可以用多個服務活動實現一個服務接口。
過程模型不對已提供服務做任何假設,而僅對服務設計人員做以下假設:
(1) 他/她不具有其它企業所使用的服務模型和實現方面的知識;
(2) 屬于不同企業的服務只通過跨企業過程進行集成和交互。
現有過程模型(如工作流管理委員會提出的工作流過程模型)和很多傳統的工作流管理系統對跨企業過程的支持卻很有限,這主要是因為:
(1)服務通常都是會話式的;
(2)服務是異構的;
(3) 集成異構服務的跨企業過程規范會受到組合爆炸的影響。
1.會話式服務
在WSBPM模型中,將服務和活動這些的傳統概念結合為單個WSBPM原語,稱之為服務活動。實際上,服務常常封裝多個單企業過程,這樣的服務是典型的會話式服務,即服務在運行過程中需要交互。交互過程中,客戶執行多個服務調用并接收可用于進一步調用的中間結果。由于現有的過程模型假定活動僅調用一次,隨即進入運行狀態直至完成或終止才產生結果數據,因此無法直接從現有的過程模型捕獲會話式活動。例如,使用現有的過程模型來捕獲服務的注銷過程,就必須在服務提供活動后添加一個服務注銷活動。因此,在捕獲服務請求和注銷過程中,現有過程模型具有以下局限:
a. 只有當服務請求操作(和服務內相應的單企業過程)完成后才能調用注銷活動,即不能注銷正在進行中的服務請求;
b. 無法將服務和相應的服務操作建模成單個傳統活動。
本文提出的過程模型通過引入能夠擴展活動語義的服務接口和服務活動來滿足會話式服務的上述需求。
2.服務異構性
不同企業通常使用不同的模型和相應的語義對服務進行建模。異構服務是由不同服務供應者在不同時間為不同的客戶設計的。盡管任何模型都不存在處理異構性的通用解決方案,但在處理異構性方面,捕獲應用語義并通過子類(Subclass)提供有效抽象的過程模型比那些將集成語義隱藏在集成程序代碼中的其它過程模型更加有效。
現有的過程模型僅提供一般活動狀態和操作,如正在運行(running)、已完成(completed)或已終止(terminated)活動狀態,這些活動狀態無法捕獲集成在跨企業過程中的異構服務的應用語義。在WSBPM模型中,可以為服務使用專用狀態,如已訂購(ordered)、已供應(provisioned)、已完成(fulfilled)等活動狀態,還可以描述引起這些服務狀態變遷的顯式操作。此外,本模型還提供專用活動狀態和操作的子類,這樣就可以將其泛化為某個具體的一般狀態。通過這種方法,我們就可以對繼承和子類型(Subtype)進行清晰的語義分析,從而將面向對象程序設計方法應用到WSBPM模型中。
3. 組合爆炸
支付子過程、客戶服務子過程等服務均表示為跨企業過程的單個傳統活動(即表示為跨企業過程的子過程)。如果使用現有過程模型來集成這些服務,那么將變得極為復雜。尤其是在傳統過程模型中捕獲單企業過程集成語義,需要為這些單企業過程間的調用和交互引入輔助的調用和/或反饋活動。
此外,設計人員還必須引入輔助數據流和控制流,以便將這些活動與跨企業過程中的其它活動關聯起來。而使用過程建模方法可以將單企業過程緊密集成到跨企業過程中。尤其是與每個單企業過程的每次交互,都必須將該單企業過程設計成至少包含一個調用活動;對于因與其進行交互而引起的另一個單企業過程的每個狀態變化,都必須至少包含一個反饋活動。例如,假設跨企業過程中的各個組成服務由多個服務提供者提供,且跨企業過程提供者可以動態地選擇最好的服務,那么就必須為服務提供者的各個可能的組合提供單獨的單企業過程。而這必將導致跨企業過程組合爆炸。因此,當前的過程技術對跨企業過程管理的可擴展性和柔性設定了嚴格的限制條件。
二、問題的解決
為滿足上述需求,該過程模型將服務活動接口從服務活動實現中分離出來。這樣,活動類型就由活動接口決定。為了避免使用術語“活動”具有不同意義帶來的混淆,以下將對活動類型(由活動接口表示)與活動實現進行區分,并將過程中使用的活動稱為活動變量。
面向對象技術如抽象、封裝和多態性(Polymorphism)等設計概念對于實現WSBPM模型的主要目標,即實現不同跨企業過程中服務的重用、跨企業過程的可擴展性和柔性等方面起著重要作用,因此將這些設計概念引入WSBPM模型,并將這些設計原理用于開發支持WSBPM模型外部服務的下述原語中:
(1) 服務接口(Service interface)即活動接口,用于將外部服務建模為可以包含專用狀態和操作的狀態機;
(2) 服務活動(Service activity)即可以在WSBPM過程模型中直接使用的活動。服務活動與外部服務(即服務實現)進行通信,以執行在服務接口中定義的實際調用和反饋操作;
(3) 占位符(Placeholder)也就是抽象活動,主要用于活動的后期綁定。當存在多個活動類型時,可以選擇其中之一進行綁定。運行時由于占位符可以在多個服務提供者間進行選擇,因此它支持服務的動態集成;
(4)服務包裝器(Service wrapper)是用于隱藏服務異構性的過程。
1.服務接口
客戶請求服務時,服務提供者將向客戶提供一份包含服務接口的服務契約。如果客戶對所提供的契約滿意,就可以使用該服務接口來控制服務、請求服務狀態信息或觀察服務狀態變化以便了解服務狀態。服務接口是服務活動使用的外部服務的抽象。通過服務接口我們可以將服務活動向占位符進行映射。這樣就可以用多個服務活動實現占位符。占位符類型接口在抽象層捕獲實現需求,而服務活動接口在具體層捕獲實現的性能。
WSBPM服務接口由活動狀態機類型和活動輸入/輸出組成。下面介紹服務接口的組成。
2.服務狀態機類型
服務狀態機類型用于確定各活動接口實例可能的活動狀態及其相應的狀態變遷。服務狀態機類型在形式上是一