Compartir a través de


Creación de servicios de persistencia personalizados

Puede implementar un servicio de persistencia para guardar el estado de tiempo de ejecución de una instancia de flujo de trabajo en un almacén durable y recuperar el estado de ese almacén. En ciertos puntos de la confirmación durante la ejecución de un flujo de trabajo, el motor de tiempo de ejecución de Windows Workflow Foundation notifica al servicio de persistencia para conservar la información de estado del flujo de trabajo. Por ejemplo, esto puede producirse cuando el flujo de trabajo se vuelve inactivo, cuando una actividad TransactionScopeActivity finaliza la ejecución, o cuando la aplicación host llama al método Unload.

El motor en tiempo de ejecución de Windows Workflow Foundation no conserva información de estado. Los servicios de persistencia personalizada proporcionan esta funcionalidad y se agregan al motor durante el tiempo de ejecución. El motor de tiempo de ejecución es responsable de iniciar las operaciones de persistencia y los servicios de persistencia personalizados son responsables de guardar y cargar la fecha de estado almacenada.

Advertencia

Si crea un flujo de trabajo que utiliza la actividad TransactionScopeActivity, la actividad CompensatableTransactionScopeActivity, la actividad CompensatableSequenceActivity o actividades personalizadas que utilizan el atributo PersistOnCloseAttribute o implementan la interfaz ICompensatableActivity, debe especificar el servicio de persistencia que se va a utilizar o se producirá una excepción al ejecutar el flujo de trabajo.

Creación de un servicio de persistencia personalizado

Crea un servicio de persistencia personalizado derivando de la clase base abstracta WorkflowPersistenceService. Esta clase base contiene cinco métodos abstractos que debe invalidar al crear su servicio de persistencia. Estos métodos se muestran en la tabla siguiente.

Método Descripción

LoadCompletedContextActivity

Carga el ámbito completado especificado en la memoria.

LoadWorkflowInstanceState

Carga el estado especificado de la instancia de flujo de trabajo en la memoria.

SaveCompletedContextActivity

Guarda el ámbito completado especificado en un almacén de datos.

SaveWorkflowInstanceState

Guarda el estado de la instancia de flujo de trabajo en un almacén de datos.

UnlockWorkflowInstanceState

Desbloquea el estado de la instancia de flujo de trabajo especificado.

UnloadOnIdle

Determina si conservar la instancia de flujo de trabajo especificada en el almacenamiento cuando se vuelve inactiva durante un período de tiempo.

Para obtener un ejemplo que muestre el motor de Windows Workflow Foundation que descarga un flujo de trabajo guardando el estado de la instancia de flujo de trabajo a través de un servicio de persistencia personalizado, vea Custom Persistence Service.

Bloqueo de información de estado de flujo de trabajo

El motor de tiempo de ejecución de Windows Workflow Foundation puede bloquear información sobre el estado del flujo de trabajo para evitar la carga de un flujo de trabajo único a través de los servicios de persistencia independiente que se ejecutan en varios procesos. Sin embargo, el propio servicio de persistencia personalizado implementa el mecanismo de bloqueo real. Esto significa que la compatibilidad es opcional al crear su servicio de persistencia. Si decide permitir el bloqueo del estado de flujo de trabajo, debe bloquear el acceso al estado del flujo de trabajo cuando el parámetro de desbloqueo esté establecido como false cuando se llame a SaveWorkflowInstanceState, y cuando se llame a LoadWorkflowInstanceState. La información de estado de flujo de trabajo debe permanecer bloqueada hasta que el parámetro de desbloqueo esté establecido como true con una llamada subsiguiente a SaveWorkflowInstanceState o se llame al método UnlockWorkflowInstanceState. Debe iniciar un WorkflowOwnershipException si un proceso intenta cargar el estado de la instancia de flujo de trabajo que está en estado bloqueado.

Almacenar información sobre el estado de flujo de trabajo mediante transacciones

Si su servicio de persistencia personalizado utiliza un almacén duradero, debe utilizar el procesamiento por lotes de transacción de flujo de trabajo para diferir información de estado de flujo de trabajo de escritura hasta que se alcance un punto de confirmación de flujo de trabajo. Para ello, implemente la interfaz IPendingWork en su clase de servicio de persistencia personalizada y agregue un elemento de trabajo que represente los elementos pendientes en su almacén duradero en la propiedad WorkBatch.

Consulte también

Referencia

WorkflowPersistenceService

Conceptos

Información general de persistencia
Servicios de persistencia de Windows Workflow

Otros recursos

Custom Persistence Service
Using Persistence Services
Desarrollo de servicios de Windows Workflow Foundation

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.