Freigeben über


Transaktionsrollback

Dieses Thema gilt für Windows Workflow Foundation 4.

Dieses Beispiel veranschaulicht, wie eine benutzerdefinierte NativeActivity erstellt wird, die auf den Ambient-RuntimeTransactionHandle zugreift, um die Ambient-Transaktion abzurufen und sie explizit zurückzusetzen.

Beispieldetails

Im Workflow wird eine Transaktion automatisch abgeschlossen, wenn der äußerste TransactionScope oder TransactedReceiveScope abgeschlossen wird. Eine Transaktion wird implizit zurückgesetzt, wenn eine nicht behandelte Ausnahme über die Bereichsgrenze hinausgeht. Es kann möglicherweise jedoch sinnvoll sein, explizit eine Transaktion ohne Auslösen einer Ausnahme zurückzusetzen. In diesem Fall können Sie die benutzerdefinierte Rollbackaktivität wie die in diesem Beispiel verwenden, um die Ambient-Transaktion explizit abzubrechen und einen optionalen Ausnahmegrund bereitzustellen.

Die RollbackActivity ist eine NativeActivity, da Zugriff auf die Ausführungseigenschaften erforderlich ist, um den Ambient-RuntimeTransactionHandle abzurufen. In der Execute-Methode wird der RuntimeTransactionHandle abgerufen und überprüft, ob er NULL ist. Damit wird angegeben, dass die Aktivität ohne Ambient-Laufzeittransaktion verwendet wurde. Dann wird die Transaktion abgerufen und wieder überprüft, ob NULL vorhanden ist. Es ist möglich, einen Ambient-RuntimeTransactionHandle zu bekommen, ohne eine Laufzeittransaktion zu initialisieren. Schließlich wird die Transaktion abgebrochen, indem Rollback aufgerufen und eine vom Benutzer bereitgestellte Ausnahme oder eine generische Ausnahme angegeben wird, die besagt, dass die Aktivität die Transaktion zurückgesetzt hat.

Der Beispielworkflow besteht aus einem TransactionScope, dessen Text den Transaktionsstatus ausgibt, bevor und nachdem RollbackActivity ausgeführt wurde. Beachten Sie, dass, obwohl die Transaktion zurückgesetzt wurde, der TransactionScope bis zum Abschluss ausgeführt wird und der Workflow nicht abgebrochen wird, bis der Text abgeschlossen ist. Der Workflow wird abgebrochen, da die AbortInstanceOnTransactionFailure-Eigenschaft standardmäßig auf true festgelegt ist.

So verwenden Sie dieses Beispiel

  1. Laden Sie die Projektmappe "TransactionRollback.sln" in Visual Studio 2010.

  2. Drücken Sie F6, um die Projektmappe zu erstellen.

  3. Drücken Sie STRG+F5, um die Anwendung auszuführen.

Ee656553.Important(de-de,VS.100).gif Hinweis:
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.

<Installationslaufwerk>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.

<Installationslaufwerk>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactionRollback

Siehe auch

Konzepte

Workflowtransaktionen