Partager via


Participants de persistance

Cette rubrique s'applique à Windows Workflow Foundation 4.

Un participant de persistance peut participer à une opération de persistance (enregistrement ou chargement) déclenchée par un hôte d'application. .NET Framework version 4 est fourni avec deux classes abstraites, PersistenceParticipant et PersistenceIOParticipant, que vous pouvez utiliser pour créer un participant de persistance. Un participant de persistance dérive de l'une de ces classes, implémente les méthodes qui l'intéressent, puis ajoute une instance de la classe à la collection WorkflowExtensions sur le WorkflowServiceHost. L'hôte d'application peut rechercher de telles extensions de workflow lorsqu'il rend une instance de workflow persistante et appeler les méthodes appropriées sur les participants de persistance aux moments opportuns.

La liste suivante décrit les tâches effectuées par le sous-système de persistance lors des différentes étapes de l'opération de persistance (enregistrement). Les participants de persistance sont utilisés durant les troisième et quatrième étapes. Si le participant est un participant d'E/S (un participant de persistance qui participe également aux opérations d'E/S), il est également utilisé lors de la sixième étape.

  1. Recueille les valeurs intégrées, notamment l'état du workflow, les signets, les variables mappées et l'horodatage.

  2. Recueille tous les participants de persistance ajoutés à la collection d'extensions associée à l'instance de workflow.

  3. Appelle la méthode CollectValues implémentée par tous les participants de persistance.

  4. Appelle la méthode MapValues implémentée par tous les participants de persistance.

  5. Rend le workflow persistant ou l'enregistre dans le magasin de persistances.

  6. Appelle la méthode BeginOnSave sur tous les participants d'E/S de persistance. Si le participant n'est pas un participant d'E/S, cette tâche est ignorée. Si l'épisode de persistance est transactionnel, la transaction est fournie dans la propriété Transaction.Current.

  7. Attend que tous les participants de persistance soient terminés. Si tous les participants réussissent à rendre les données d'instance persistantes, valide la transaction.

Un participant de persistance dérive de la classe PersistenceParticipant et peut implémenter les méthodes CollectValues et MapValues. Un participant d'E/S de persistance dérive de la classe PersistenceIOParticipant et peut implémenter la méthode BeginOnSave en plus d'implémenter les méthodes CollectValues et MapValues.

Chaque étape est terminée avant que l'étape suivante ne commence. Par exemple, les valeurs sont recueillies à partir des participants de persistance all lors de la première étape. Toutes les valeurs recueillies dans la première étape sont ensuite fournies à tous les participants de persistance lors de la deuxième étape, en vue de leur mappage. Puis toutes les valeurs recueillies et mappées lors des première et deuxième étapes sont fournies au fournisseur de persistance durant la troisième étape, et ainsi de suite.

La liste suivante décrit les tâches effectuées par le sous-système de persistance lors des différentes étapes de l'opération de chargement. Les participants de persistance sont utilisés lors de la quatrième étape. Les participants d'E/S de persistance (les participants de persistance qui participent également aux opérations d'E/S) sont également utilisés lors de la troisième étape.

  1. Recueille tous les participants de persistance ajoutés à la collection d'extensions associée à l'instance de workflow.

  2. Charge le workflow à partir du magasin de persistances.

  3. Appelle la méthode BeginOnLoad sur toute les participants d'E/S de persistance et attend que tous les participants de persistance soient terminés. Si l'épisode de persistance est transactionnel, la transaction est fournie dans la propriété Transaction.Current.

  4. Charge l'instance de workflow en mémoire selon les données récupérées dans le magasin de persistances.

  5. Appelle la méthode PublishValues sur chaque participant de persistance.

Un participant de persistance dérive de la classe PersistenceParticipant et peut implémenter la méthode PublishValues. Un participant d'E/S de persistance dérive de la classe PersistenceIOParticipant et peut implémenter la méthode BeginOnLoad en plus d'implémenter la méthode PublishValues.

Dans cette section

Voir aussi

Concepts

Stocker l'extensibilité