本主題僅適用於 Windows Workflow Foundation 4。
這個範例示範如何建立自訂 NativeActivity,用來存取環境 RuntimeTransactionHandle 以取得環境交易並明確回復此交易。
範例詳細資料
在工作流程中,當最外層的 TransactionScope 或 TransactedReceiveScope 完成時,交易就自動完成。 當未處理的例外狀況跨範圍界限傳播時,交易會隱含回復。 不過,有時候,明確回復交易而不需擲回例外狀況是合理的。 在此情況下,您可以使用自訂回復活動 (如本範例所述),明確中止環境交易並提供選擇性的例外狀況原因。
RollbackActivity 是 NativeActivity,因為它需要存取執行屬性以取得環境 RuntimeTransactionHandle。 在 Execute 方法中,它會取得 RuntimeTransactionHandle 並檢查是否為 null,表示使用活動時未搭配環境執行階段交易。 接著取得交易,再次檢查 null 是否存在。 可能有環境 RuntimeTransactionHandle,但從未初始化執行階段交易。 最後,它會呼叫 Rollback 並指定使用者提供的例外狀況或泛型例外狀況,表示活動回復交易,藉以中止交易。
示範工作流程是由 TransactionScope 所組成,其主體會在 RollbackActivity 執行前後列印交易狀態。 請注意,即使交易已經回復,TransactionScope 也會執行完成,在主體完成之前不會中止工作流程。 工作流程之所以中止,是因為 AbortInstanceOnTransactionFailure 屬性預設為 true。
若要使用這個範例
在 Visual Studio 2010 中載入 TransactionRollback.sln 方案。
按 F6 以建立方案。
按 CTRL+F5 執行應用程式。
注意: |
|---|
這些範例可能已安裝在您的電腦上。 請先檢查下列 (預設) 目錄,然後再繼續。
<InstallDrive>:\WF_WCF_Samples
如果此目錄不存在,請移至用於 .NET Framework 4 的 Windows Communication Foundation (WCF) 與 Windows Workflow Foundation (WF) 範例 (英文),以下載所有 Windows Communication Foundation (WCF) 和 WF 範例。 此範例位於下列目錄。
<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactionRollback
|
注意: