Откат транзакции
Данный раздел относится к версии Windows Workflow Foundation 4.
Этот образец показывает, как создавать пользовательское действие NativeActivity, которое обращается к внешнему дескриптору RuntimeTransactionHandle для получения внешней транзакции и выполнения явного ее отката.
Подробные сведения об образце
В рабочем процессе транзакция будет автоматически завершена в момент завершения самой внешней транзакции TransactionScope или TransactedReceiveScope. Когда необработанное исключение распространяется через границу области, осуществляется явный откат транзакции. Однако могут встречаться случаи, когда явный откат транзакции имеет смысл выполнять, не вызывая исключение. В этом случае можно использовать пользовательское действие отката (как в этом образце), чтобы явным образом прервать внешнюю транзакцию и выдать дополнительную причину исключения.
Действие RollbackActivity
представляет собой действие NativeActivity, поскольку оно требует доступа к свойствам исключения для получения внешнего дескриптора RuntimeTransactionHandle. В методе Execute
действие получает дескриптор RuntimeTransactionHandle и проверяет его значение. Значение null означает, что действие было использовано без внешней транзакции времени выполнения. Затем происходит получение транзакции с такой же проверкой значения null. Внешний дескриптор RuntimeTransactionHandle можно получить, вообще не запуская транзакцию времени выполнения. Затем происходит прерывание транзакции посредством вызова метода Rollback и указания либо пользовательского, либо универсального исключения, устанавливающего, что данное действие совершило откат транзакции.
Демонстрационный рабочий процесс состоит из класса TransactionScope, тело которого выводит на экран консоли состояние транзакции до и после выполнения RollbackActivity
. Обратите внимание, что TransactionScope будет выполняться вплоть до завершения, даже если был совершен откат транзакции, при этом рабочий процесс не будет прерываться до завершения тела запроса. Рабочий процесс будет прерван в том случае, если значение свойства AbortInstanceOnTransactionFailure примет значение по умолчанию true.
Использование этого образца
Загрузите решение TransactionRollback.sln в среде Visual Studio 2010.
Нажмите клавишу F6 для построения решения.
Чтобы запустить приложение, нажмите клавиши CTRL+F5.
Примечание |
---|
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).
<диск_установки>:\WF_WCF_Samples
Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.
<диск_установки>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactionRollback
|