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 |
---|---|
Carga el ámbito completado especificado en la memoria. |
|
Carga el estado especificado de la instancia de flujo de trabajo en la memoria. |
|
Guarda el ámbito completado especificado en un almacén de datos. |
|
Guarda el estado de la instancia de flujo de trabajo en un almacén de datos. |
|
Desbloquea el estado de la instancia de flujo de trabajo especificado. |
|
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
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
Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.