首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WF4.0 基礎篇(16):CompensableActivity 補償機制實現交易語意與錯誤回滾

     編輯:關於.NET

CompensableActivity 提供類似資料庫交易的補償/確認機制:Body (主邏輯)、CompensationHandler (補償/回滾)、ConfirmationHandler (確認/提交)、CancellationHandler (取消處理)。配合 Compensate、Confirm 活動可顯式控制,亦支援異常自動觸發。

核心活動速覽

活動功能關鍵屬性
CompensableActivity補償容器,回傳 CompensationTokenBody, CompensationHandler, ConfirmationHandler, CancellationHandler, Variables
Compensate顯式觸發 CompensationHandlerTarget (CompensationToken)
Confirm顯式觸發 ConfirmationHandlerTarget (CompensationToken)

CompensableActivity 結構 補償流程 Compensate Confirm

自動執行規則

  • 正常完成:自動執行所有 ConfirmationHandler (由內而外、由下而上) 確認自動執行
  • 外部異常 + OnUnhandledException=Cancel:自動執行 CompensationHandler 補償自動執行
  • Body 內部異常 + OnUnhandledException=Cancel:自動執行 CancellationHandler 取消處理執行
  • TerminateWorkflow:不觸發任何補償/確認行為 Terminate 不觸發

顯式調用控制

  • 需將 CompensableActivity.Result 繫結至 CompensationToken 變數
  • Compensate/Confirm 的 Target 繫結該 Token
  • 每個 Token 只能被調用一次;Confirm 後不可 Compensate,反之亦然
  • 顯式調用後不再自動執行對應 Handler

Confirm 顯式調用:Confirm 流程 立即執行結果

Compensate 顯式調用:Compensate 流程 立即補償結果

多層/巢狀 CompensableActivity 執行順序

  • 無異常:ConfirmationHandler 執行順序 - 同層由下而上、巢狀由外而內 巢狀確認順序 結果
  • 外部異常:同層執行 ConfirmationHandler,子層執行 ConfirmationHandler 外部異常順序 結果
  • 內部異常 (父子關係):直接父子層執行 CancellationHandler,旁系執行 ConfirmationHandler 內部異常順序 結果

原始碼下載:CompensableWorkflow.rar

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved