Création de services de persistance personnalisés
Vous pouvez implémenter un service de persistance pour enregistrer l'état d'exécution d'une instance de workflow dans un magasin fiable et récupérer l'état de ce magasin. À certains points de validation pendant l'exécution d'un workflow, le moteur d'exécution Windows Workflow Foundation notifie le service de persistance pour rendre les informations d'état du workflow persistantes. Par exemple, cela peut se produire lorsque le workflow devient inactif, lorsqu'une activité TransactionScopeActivity finit de s'exécuter ou lorsque l'application hôte appelle la méthode Unload.
Le moteur d'exécution Windows Workflow Foundation ne rend pas lui-même les informations d'état persistantes. Cette fonctionnalité est fournie par les services de persistance personnalisés ajoutés au moteur au moment de l'exécution. Le moteur d'exécution est chargé de démarrer les opérations de persistance, et les services de persistance personnalisés sont chargés d'enregistrer et de charger la date de l'état rendu persistant.
Attention : |
---|
Si vous créez un workflow qui utilise les activités TransactionScopeActivity, CompensatableTransactionScopeActivity, CompensatableSequenceActivity ou les activités personnalisées qui utilisent l'attribut PersistOnCloseAttribute ou implémentent l'interface ICompensatableActivity, vous devez spécifier un service de persistance à utiliser ou une exception sera levée lorsque vous exécuterez le workflow. |
Création d'un service de persistance personnalisé
Vous créez un service de persistance personnalisé en dérivant de la classe de base abstraite WorkflowPersistenceService. Cette classe de base contient cinq méthodes abstraites que vous devez substituer lorsque vous créez votre service de persistance. Ces méthodes sont présentées dans le tableau suivant.
Méthode | Description |
---|---|
Recharge l'étendue terminée spécifiée dans la mémoire. |
|
Recharge l'état spécifié de l'instance de workflow dans la mémoire. |
|
Enregistre l'étendue terminée spécifiée dans un magasin de données. |
|
Enregistre l'état de l'instance du workflow dans un magasin de données. |
|
Déverrouille l'état de l'instance de workflow spécifiée. |
|
Détermine s'il faut rendre l'instance de workflow spécifiée persistante au stockage lorsqu'elle devient inactive pendant un certain temps. |
Pour obtenir un exemple présentant le déchargement d'un workflow du moteur Windows Workflow Foundation en enregistrant l'état de l'instance du workflow à l'aide d'un service de persistance personnalisé, consultez Custom Persistence Service.
Verrouillage des informations d'état du workflow
Le moteur d'exécution Windows Workflow Foundation peut verrouiller des informations d'état du workflow pour empêcher le chargement d'un workflow unique par des services de persistance distincts qui s'exécutent dans plusieurs processus. Toutefois, le mécanisme de verrouillage réel est implémenté par le service de persistance personnalisé lui-même. Cela signifie que la prise en charge est facultative lorsque vous créez votre service de persistance. Si vous choisissez de prendre en charge le verrouillage d'état du workflow, vous devez verrouiller l'accès à l'état du workflow lorsque le paramètre de déverrouillage porte la valeur false, lorsque SaveWorkflowInstanceState est appelé et lorsque LoadWorkflowInstanceState est appelé. Les informations d'état du workflow doivent rester verrouillées jusqu'à ce que le paramètre de déverrouillage porte la valeur true avec un appel ultérieur à SaveWorkflowInstanceState ou que la méthode UnlockWorkflowInstanceState soit appelée. Vous devez lever un WorkflowOwnershipException si un processus essaie de charger l'état d'instance du workflow qui est à l'état verrouillé.
Rendre les informations d'état du workflow persistantes à l'aide de transactions
Si votre service de persistance personnalisé utilise un magasin fiable, vous devez utiliser le traitement par lots de la transaction du workflow pour différer l'écriture des informations d'état du workflow jusqu'à ce qu'un point de la validation du workflow soit atteint. Pour ce faire, implémentez l'interface IPendingWork de votre classe de service de persistence personnalisée et ajoutez un élément de travail représentant les modifications en cours de votre magasin fiable dans la propriété WorkBatch.
Voir aussi
Référence
Concepts
Vue d'ensemble de la persistance
Services de persistance Windows Workflow
Autres ressources
Custom Persistence Service
Using Persistence Services
Développement de services Windows Workflow Foundation
Copyright ©2007 par Microsoft Corporation. Tous droits réservés.