Partager via


Restauration de transaction

Cette rubrique s'applique à Windows Workflow Foundation 4.

Cet exemple montre comment créer un NativeActivity personnalisé qui accède au RuntimeTransactionHandle ambiant pour obtenir la transaction ambiante et la restaurer explicitement.

Détails de l'exemple

Dans le workflow, une transaction est effectuée automatiquement lorsque le TransactionScope ou le TransactedReceiveScope le plus à l'extérieur se termine. Une transaction est implicitement restaurée lorsqu'une exception non prise en charge se propage à travers la limite d'étendue. Dans certains cas, toutefois, il est logique de restaurer explicitement une transaction sans avoir à lever une exception. Dans ce cas, vous pouvez utiliser l'activité de restauration personnalisée comme celle de cet exemple pour abandonner explicitement la transaction ambiante et fournir un motif d'exception facultative.

RollbackActivity est un NativeActivity car il nécessite l'accès aux propriétés d'exécution pour obtenir le RuntimeTransactionHandle ambiant. Dans la méthode Execute, il obtient le RuntimeTransactionHandle et vérifie s'il est Null, ce qui indique que l'activité a été utilisée sans transaction runtime ambiante. Il obtient ensuite la transaction, en vérifiant à nouveau si la valeur Null est présente. Il est possible d'avoir un RuntimeTransactionHandle ambiant sans jamais initialiser une transaction runtime. Enfin, il abandonne la transaction en appelant Rollback et en spécifiant une exception fournie par l'utilisateur ou une exception générique qui stipule que l'activité a restauré la transaction.

Le workflow de la démonstration est composé d'un TransactionScope dont le corps imprime l'état de la transaction avant et après l'exécution de RollbackActivity. Notez que, même si la transaction a été restaurée, TransactionScope s'exécute jusqu'à son achèvement et n'abandonne pas le workflow tant que le corps n'a pas terminé son exécution. Le workflow est abandonné car la propriété AbortInstanceOnTransactionFailure a true comme valeur par défaut.

Pour utiliser cet exemple

  1. Chargez la solution TransactionRollback.sln dans Visual Studio 2010.

  2. Appuyez sur F6 pour générer la solution.

  3. Appuyez sur CTRL+F5 pour exécuter l'application.

Ee656553.Important(fr-fr,VS.100).gif Remarque :
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.

<LecteurInstall>:\WF_WCF_Samples

Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.

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

Voir aussi

Concepts

Transactions de workflow