Compartir a través de


Ejemplo de compensación

Download sample

La compensación define la ejecución de lógica de negocios que resulta de una excepción comercial. Se encuentra exclusivamente dentro del ámbito del diseñador de flujos de trabajo que está creando el modelo de un proceso comercial. El usuario, y no el tiempo de ejecución, define la activación de la compensación. El tiempo de ejecución proporciona el mecanismo en el que se define la compensación.

En este ejemplo, la unidad de trabajo que se compensa se encuentra en una actividad CompensatableTransactionScopeActivity. A continuación, se define una actividad CompensationHandlerActivity para este ámbito, en el que se define el trabajo de compensación. Dado un ámbito sólo se puede compensar si está finalizado, una actividad ThrowActivity inicia una excepción una vez que el ámbito ha terminado de ejecutarse. Un controlador de excepciones que contiene una actividad de compensación detecta esta excepción. La actividad de compensación especifica el ámbito de destino que el tiempo de ejecución ejecutará a continuación.

En este escenario, un se recibe pedido de compra y se retira fondos de la tarjeta de crédito del comprador. El flujo de trabajo comprueba si el producto seleccionado está disponible. Si está disponible, se envía. Si el producto no está disponible, se inicia DiscontinuedProductException. El controlador de excepciones de flujo de trabajo detecta DiscontinuedProductException. A continuación, el controlador de excepciones activa el controlador de compensación definido por la actividad CompensateActivity que se encuentra en el controlador. Después, el controlador de compensación reintegra el importe al comprador.

El resultado del ejemplo se muestra así:

Resultado de ejemplo de compensación

Utilizar el ejemplo

Para utilizar el ejemplo, debe crear la base de datos de persistencia de SQL.

Para crear la base de datos de persistencia de SQL

  1. En Microsoft SQL Server 2005 Express, SQL Server 2000 o versiones posteriores, o SQL Server 2000 Desktop Engine (MSDE), cree una nueva base de datos denominada WorkflowPersistenceStore utilizando la instrucción de consulta SQL:

    CREATE DATABASE SqlPersistenceService

    Nota   Si utiliza SqlTrackingService y SqlWorkflowPersistenceService en una aplicación de flujo de trabajo, es recomendable utilizar una única base de datos tanto para persistencia como para seguimiento.

  2. En el área de trabajo del Analizador de consultas SQL Server, seleccione la base de datos que creó en el paso 1, en la lista de bases de datos disponibles.

  3. En el menú Archivo, haga clic en Abrir y abra el script de SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lenguaje>\SqlPersistence_Schema.sql.

  4. Ejecute la consulta haciendo clic en Ejecutar o presionando F5 para crear las tablas del servicio de persistencia de SQL.

  5. En el menú Archivo, haga clic en Abrir y abra el script de SQL %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<lenguaje>\SqlPersistence_Logic.sql.

  6. Ejecute la consulta haciendo clic en Ejecutar o presionando F5 para crear los procedimientos almacenados del servicio de persistencia de SQL.

Para generar el ejemplo

  1. Descargue el ejemplo haciendo clic en Descargar ejemplo en este tema.

    Así se extrae el proyecto de ejemplo en su disco duro local.

  2. Haga clic en Inicio, señale Programas, señale Microsoft Windows SDK y, a continuación, haga clic en CMD Shell.

  3. Vaya al directorio de origen del ejemplo.

  4. En el símbolo del sistema, escriba MSBUILD <nombre del archivo de solución>.

Para ejecutar el ejemplo

  • En la ventana del símbolo del sistema del SDK, ejecute el archivo .exe de la carpeta Compensation\bin\debug (o la carpeta Compensation\bin para la versión de VB del ejemplo), que se encuentra bajo la carpeta principal del ejemplo.

Consulte también

Referencia

CompensatableTransactionScopeActivity
CompensationHandlerActivity
CodeActivity
FaultHandlerActivity
FaultHandlersActivity
IfElseActivity
IfElseBranchActivity
ThrowActivity

Otros recursos

Using the CompensationHandler Activity
Adding Compensatable Activities and Compensation Handlers
Compensation Overview
Ejemplos de actividades
Ejemplos de Windows Workflow Foundation

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.