Cómo agregar un bloque de compensación
Si no agrega su propia compensación, el motor de tiempo de ejecución llevará a cabo una compensación predeterminada que invoca las compensaciones de las transacciones anidadas contenidas en la transacción actual. En primer lugar, invoca la compensación de la transacción completada más recientemente y va retrocediendo hasta que se han compensado todas las transacciones anidadas.
Esto es cierto incluso cuando su compensación tiene lugar dentro de una forma de bucle: las compensación se ejecutarán en orden inverso. En primer lugar, se invocará la compensación de la última iteración del bucle, luego la de la iteración anterior, y así sucesivamente.
Precaución
Dado que los datos persisten en la memoria física para que la compensación funcione, el uso de compensaciones dentro de un bucle puede afectar al rendimiento, lo que podría convertirse en un problema si el número de iteraciones es elevado.
Si el orden predeterminado no se ajusta a los requisitos, puede escribir su propio controlador de compensación para llamar explícitamente a los controladores de compensación de los ámbitos anidados en el orden que desee especificar.
Para agregar un bloque de compensación
Haga clic con el botón derecho en la forma Ámbito de la transacción a la que desea agregar un bloque de compensación y, a continuación, haga clic en Nuevo bloque de compensación.
Nota
Para agregar un bloque de compensación a una forma scope , la propiedad Tipo de transacción de la forma Ámbito debe establecerse en Atomic o Long Running.
Se agrega un bloque de compensación a la orquestación inmediatamente después de la forma ámbito asociada.
Dentro de la forma Bloque de compensación , agregue formas para crear el proceso para deshacer una transacción confirmada.