[修練營ASP.NET]COM+較長交易(Transation)時間的設定

承繼上篇【COM+的交易(Transaction)讓商業層確保資料的完整性】說明了COM+支援異動的方式與特性。本篇要介紹如何讓COM+執行較長時間的異動。

緣起

承繼上篇【COM+的交易(Transaction)讓商業層確保資料的完整性】說明了COM+支援異動的方式與特性。本篇要介紹如何讓COM+執行較長時間的異動。

 

情境說明

一般當我們要執行較長時間批次作業(例如月底結帳作業),可能會處理大量、複雜的商業邏輯,而且為了讓整個過程能夠確保資料的完整性,會將整個過程包在一個Transaction中執行。讓中間萬一有問題時,可以把中間過程全部倒帶回去,修正錯誤後,重新執行。

而COM+預設的Transaction Timeout時間並不長,只有60秒,一個【月報批次】的過程可能是好幾個小時。此時就必須延長COM+的Transaction

 

設定方式

元件TimeOut設定的單位是一顆元件(一個Class),設定方式步驟如下:

  1. 從元件服務找到您要設定的元件
  2. 在元件上按滑鼠右鍵→內容
    CPTO001
  3. 點選【交易】→勾選【覆蓋全域交逾時值】→設定交易等待時間,單位為秒
  4. CPTO002
  5. 交易等待時間預設為0,代表永遠不逾時(做到天荒地老),強烈的建議要設定一個適當的數字,以避免批次作業做到白天,影響白天正常工作。

 

如果可以將結帳過程分成階段性,例如6個階段,每個階段獨立戶不影響,則可以將結帳過程寫成Requires New(需要新增的),然後去呼叫他,這樣每個步驟都將是獨立的一個Transaction。


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat