Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este tema es aplicable a Windows Workflow Foundation 4.
En este ejemplo se muestra cómo crear un objeto NativeActivity personalizado que tenga acceso al ambiente RuntimeTransactionHandle para obtener la transacción ambiente y revertirla explícitamente.
Detalles del ejemplo
En el flujo de trabajo, una transacción se completa automáticamente cuando se completa la actividad TransactionScope o TransactedReceiveScope más extrema. Una transacción se revierte implícitamente cuando se propaga una excepción no controlada en el límite del ámbito. Sin embargo, puede haber ocasiones en que convenga revertir explícitamente una transacción sin necesidad de que se produzca una excepción. En este caso, puede usar la actividad de reversión personalizada como la de este ejemplo para anular explícitamente la transacción ambiente y proporcionar un motivo opcional para la excepción.
La actividad RollbackActivity
es una actividad NativeActivity, ya que requiere acceso a las propiedades de ejecución para obtener la clase RuntimeTransactionHandle ambiente. En el método Execute
, obtiene la clase RuntimeTransactionHandle y comprueba si es null, lo que indica que la actividad se utilizó sin una transacción en tiempo de ejecución ambiente. A continuación, obtiene la transacción y comprueba de nuevo si null está presente. Es posible contar con una clase RuntimeTransactionHandle ambiente sin inicializar nunca una transacción en tiempo de ejecución. Por último, anula la transacción mediante una llamada al método Rollback y la especificación de una excepción proporcionada por el usuario o de una excepción genérica que indica que la actividad revirtió la transacción.
El flujo de trabajo que se ha mostrado consta de una actividad TransactionScope cuyo cuerpo imprime el estado de la transacción antes y después de que se ejecute la actividad RollbackActivity
. Tenga en cuenta que aunque se haya revertido la transacción, TransactionScope se ejecuta hasta completarse y no anula el flujo de trabajo hasta que se completa el cuerpo. El flujo de trabajo se anula porque la propiedad AbortInstanceOnTransactionFailure tiene como valor predeterminado true.
Para utilizar este ejemplo
Cargue la solución TransactionRollback.sln en Visual Studio 2010.
Presione F6 para compilar la solución.
Presione CTRL+F5 para ejecutar la aplicación.
![]() |
---|
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.
<unidadDeInstalación>:\WF_WCF_Samples
Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.
<unidadDeInstalación>:\WF_WCF_Samples\WF\Scenario\Transactions\TransactionRollback
|