Share via


Participantes de persistencia

Este tema es aplicable a Windows Workflow Foundation 4.

Un participante de persistencia puede tomar parte en una operación de persistencia (guardar o cargar) desencadenada por un host de la aplicación. .NET Framework versión 4 se distribuye con dos clases abstractas, PersistenceParticipant y PersistenceIOParticipant, que puede usar para crear un participante de persistencia. Un participante de persistencia se deriva de una de estas clases, implementa los métodos de interés y, a continuación, agrega una instancia de la clase a la colección WorkflowExtensions del objeto WorkflowServiceHost. El host de la aplicación puede buscar estas extensiones de flujo de trabajo cuando se conserve una instancia de flujo de trabajo e invocar los métodos apropiados en los participantes de persistencia en los momentos adecuados.

La siguiente lista describe las tareas realizadas por el subsistema de persistencia en distintas fases de la operación de persistencia (guardar). Los participantes de persistencia se usan en la tercera y cuarta fase. Si el participante es un participante de E/S (un participante de persistencia que también toma parte en operaciones de E/S), también se usa en la sexta fase.

  1. Recopila valores integrados, incluso el estado del flujo de trabajo, marcadores, variables asignadas y marca de tiempo.

  2. Recopila todos los participantes de persistencia que se agregaron a la colección de extensiones asociada a la instancia de flujo de trabajo.

  3. Invoca el método CollectValues implementado por todos los participantes de persistencia.

  4. Invoca el método MapValues implementado por todos los participantes de persistencia.

  5. Conserve o guarde el flujo de trabajo en el almacén de persistencia.

  6. Invoca el método BeginOnSave en todos los participantes de E/S de persistencia. Si el participante no es un participante de E/S, se omite esta tarea. Si el episodio de persistencia es transaccional, la transacción se proporciona en la propiedad Transaction.Current.

  7. Espera a que se completen todos los participantes de persistencia. Si todos los participantes consiguen almacenar datos de instancia, confirma la transacción.

Un participante de persistencia deriva de la clase PersistenceParticipant y puede implementar los métodos CollectValues y MapValues. Un participante de E/S de persistencia deriva de la clase PersistenceIOParticipant y puede implementar el método BeginOnSave además de implementar los métodos CollectValues y MapValues.

Se completa cada fase antes de que comience la siguiente. Por ejemplo, los valores se recopilan de todos los participantes de persistencia en la primera fase. A continuación, se proporcionarán para su asignación todos los valores recopilados en la primera fase a todos los participantes de persistencia en la segunda fase. A continuación, todos los valores recopilados y asignados en la primera y segunda fase se proporcionan al proveedor de persistencia en la tercera fase, etc.

La siguiente lista describe las tareas realizadas por el subsistema de persistencia en distintas fases de la operación de carga. Los participantes de persistencia se usan en la cuarta fase. También se usan participantes de E/S de persistencia (participantes de persistencia que también participan en operaciones de E/S) en la tercera fase.

  1. Recopila todos los participantes de persistencia que se agregaron a la colección de extensiones asociada a la instancia de flujo de trabajo.

  2. Carga el flujo de trabajo del almacén de persistencia.

  3. Invoca BeginOnLoad en todos los participantes de E/S de persistencia y espera a que se completen todos los participantes de persistencia. Si el episodio de persistencia es transaccional, la transacción se proporciona en la propiedad Transaction.Current.

  4. Carga la instancia de flujo de trabajo en memoria según los datos recuperados del almacén de persistencia.

  5. Invoca PublishValues en cada participante de persistencia.

Un participante de persistencia deriva de la clase PersistenceParticipant y puede implementar el método PublishValues. Un participante de E/S de persistencia deriva de la clase PersistenceIOParticipant y puede implementar el método BeginOnLoad además de implementar el método PublishValues.

En esta sección

Vea también

Conceptos

Extensibilidad de almacén