工作流程事務模型概述

來源:互聯網
上載者:User

一、工作流程事務

多數工作流程過程都是一個長生存期的過程,在執行的過程中出現各種各樣的故障和異常是很正常的,所以要引入交易處理機制。而僅僅滿足ACID屬性要求的經典事務模型無法有效支援工作流程系統中的交易處理。人們在傳統事務模型的基礎上提出了許多進階事務模型,希望能夠將進階事務模型應用到長時間啟動並執行分布式工作流程管理中。
但是,許多進階事務模型的執行結構都很有限,大量的研究表明,無論工作流程管理系統應用傳統事務模型,或直接採用進階事務模型都是不可行的。已有的產品基本上很少應用進階事務模型,僅有少量的原型系統應用了進階事務模型,利用事務的特性對工作流程進行管理。

二、事務模型
隨著人們對事務問題研究的不斷深入,現在事務模型主要有資料庫系統中應用的經典事務模型和在其基礎上提出的一些進階事務模型。這些模型都有各自的特點。
 
1、經典事務
所謂的經典事務一般是指在傳統的關聯式資料庫中應用的交易處理方法。它要求事務的ACID特性。實踐證明,由於不同的特點,使得工作流程系統不能完全照搬資料庫交易處理的方法。資料庫與工作流程中的交易管理既有相同點,又有不同點。資料庫中的事務和工作流程系統中的事務都旨在保護資料的一致性,以及在錯誤和故障時,如何保證資料的可靠性。 但也有很多不同之處,例如:(1) 經典事務模型主要是針對資料庫中的事務,以資料為中心構成了它的主要特點。這樣的語義不能直接應用到工作流程中。因為,工作流程中的活動可能是事務性的,也可能具有非事務性。工作流程中的事務和資料庫或交易處理系統中的事務面向的對象不一樣,相比而言,工作流程中的事務面對的主要對象本身更具複雜性。(2) 組成資料庫中的事務的操作一般執行時間都相對較短,但工作流程中的事務活動通常執行時間長,涉及到很多個物件,有複雜的控制邏輯。長活動作為單獨的ACID事務執行會嚴重拖延其他高優先順序的短事務的執行。(3)All-or-nothing對於工作流程活動顯得太嚴格而且代價很高。工作流程事務需要避免這個問題,提供靈活的交易處理。(4) 在經典事務模型中,恢複單元是事務,每一個事務都有一個預先定義的語義集合,該集合與交易處理系統一致,工作流程中的恢複模型更為複雜,恢複過程不僅要恢複工作流程系統的狀態,而且要使得過程能繼續推進,保持與整個組織過程的一致。
如果我們將整個工作流程過程看作一個經典事務,將會產生一系列的問題,例如:(1) 較長的期間增加了執行過程出現差錯的可能性。一旦出現差錯,根據原子性的要求,在此之前所做的大量工作都會丟失。(2) 隔離性要求使得不同的事務之間不能進行訊息或者控制的交換,然而對於工作流程中的協同活動而言,在不同的事務之間存在這樣或者那樣的依賴關係是很正常的現象;(3) 此外加鎖的並發控制機制極大地降低了長事務的吞吐率,而且限制了不同使用者之間即時的資料交換,使得協作喪失了基礎。(4) 對於協作流程特別是同步協作,使用者需要感知到對方的存在,但在傳統的資料庫應用中,使用者獨自使用資料庫,感覺不到其他使用者的存在。
 
2、進階事務
由於前面提到的原因,所以人們開始對工作流程交易處理方面進行深入研究。一個工作流程的執行,一般來說都要花費很長的時間,並且很多情況下,都需要人工幹預才能完成。例如,在商品的訂購與發售這樣的流程上消耗的時間更加不可預測。所謂長事務(Long-living Transaction)是需要長時間啟動並執行事務,如果我們將長事務作為一個原子事務來處理,就會使系統效能變差,而且長事務的原子性可能會讓系統長期佔用資源,同時增加了事務取消和死結的機率。為瞭解決這些問題,人們以經典事務為基礎,又提出了許多進階事務模型。
 
a) 嵌套事務
 它是事務模型演變過程中的重要一步,它將傳統的單層(flat) 事務擴充為多層結構. 在子事務出現差錯的情況下,父事務可以選擇自己的恢複措施, 因此原子性的要求降低了. 但是子事務的結果只有它的所有父事務成功提交之後才對外可見,因此隔離性並沒有降低.
 
 b) Sagas
Saga模型的解決方案:如果將長事務分成一系列的小事務,每個小事務都有自己的ACID屬性,則這個長事務就叫做saga事務。當所有的小事務都進行了提交後,整個saga事務才算提交。假如saga事務執行了一部分小事務就取消了,那麼必須對已經提交了小事務進行補償。
Saga模型的基本原理:假設Saga事務為Ts,將Ts分解成一系列小事務T1,T2,T3…Tn,每一個小事務對應著一個補償事務C1,C2,C3…Cn。系統有兩種執行路線,一是順序執行了T1,T2,T3….Tn後,這時Ts提交。二是順序執行T1,T2,T3…Ti,Ci,Ci-1,…C3,C2,C1後取消,這時Ts取消。
 Saga模型放鬆了對事務操作的分離性的要求,增加了事務間的並發性。
 
c) ACTA
 ACTA是一個事務架構,利用一階邏輯刻畫事務的屬性,允許使用者對事務模型的屬性進行推理。它提供了一系列的構造模組,例如曆史、事務間的依賴、事務視圖、衝突集合以及委託,供使用者指定自己所需要的事務屬性,因此對原子性和隔離性的要求可以很容易滿足。ACTA沒有提供存取控制,可擴充性也沒有涉及。另外,定義一個事務使之具有某些屬性並且確保執行曆史遵循這些特性是比較困難的,這也限制了其應用領域。
 
d) 柔性事務模型
柔性事務模型是專門為多資料庫環境的應用而提出的。柔性事務模型中引入了等價事務的概念,在主事務失敗的時候,它通過執行相應的等價事務以期達到同樣的效果;它允許設計者指定事務的可接受狀態,因此原子性的要求降低了。另外對補償事務的支援降低了隔離性要求。
 
e) 協同活動模型
協同活動模型提供了適於協同情境的事務屬性,它放鬆了對傳統事務原子性和隔離性的要求。它提供了簡單的存取控制,每個使用者工作在自己的私人空間,同其他使用者之間的資料交換受到一定的約束。使用者可以方便地加入/退出系統,因此可擴充性較好。這是能夠看到的覆蓋很大應用領域的事務模型之一。在該模型的四種目標應用情境(即協同寫作、工業設計、軟體工程和工作流程)中,只實現了協同寫作應用的原型。
 
f) 雙層事務模型
 雙層事務模型已經在WIDE項目實現。它將一個流程作為一個全域事務,認為一個全域事務由一系列的本地事務組成,這些本地事務是嚴格遵守ACID特性的原子事務。並給出與這個流程相對應的一個全域事務定義圖。這個流程執行個體的運行,將產生全域事務執行圖。它將根據這個全域事務執行圖來產生事務補償圖。同時,給出了事務補償機制的形式化描述;提出動態加入安全點,達到減小局部補償的影響範圍。在WIDE項目中,不但存在一個工作流程引擎,而且存在一個交易管理引擎。這個交易管理引擎是作為一個CORBA組件出現的。 
 摘自抽刀斷水

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.