Guide pratique pour activer la persistance dans les workflows et les services de workflow
Cet article décrit la procédure d'activation de la persistance pour les workflows et les services de workflow.
Activer la persistance pour les workflows
Vous pouvez associer un magasin d’instances à une WorkflowApplication à l’aide de la propriété InstanceStore de la classe WorkflowApplication. La méthode Persist enregistre ou rend persistant un flux de travail dans le magasin d'instances associé à l'application. La méthode Unload rend persistant un flux de travail dans le magasin d'instances, puis décharge l'instance de la mémoire. La méthode Load charge un workflow en mémoire, à l’aide des données de workflow stockées dans le magasin de persistance d’instances.
La méthode Persist effectue les étapes suivantes :
- Suspend le service de planification de workflow et attend jusqu'à ce que le flux de travail entre en état d'inactivité.
- Rend le flux de travail persistant ou l'enregistre dans le magasin de persistance.
- Reprend le service de planification de workflow.
La méthode Unload effectue les étapes suivantes :
- Suspend le service de planification de workflow et attend jusqu'à ce que le flux de travail entre en état d'inactivité.
- Rend le flux de travail persistant ou l'enregistre dans le magasin de persistance.
- Supprime l'instance de workflow en mémoire.
Les méthodes Persist et Unload se bloquent toutes les deux lorsqu’un flux de travail est en zone sans persistance, et ce jusqu’à ce qu’il la quitte. La méthode poursuit les opérations de persistance ou de déchargement une fois la zone sans persistance fermée. Si la zone sans persistance ne se ferme pas avant que le délai d'attente ne s'écoule ou si le processus de persistance prend trop de temps, une TimeoutException
est levée.
Activer la persistance dans le code
Le membre DurableInstancingOptions de la classe WorkflowServiceHost a une propriété nommée InstanceStore que vous pouvez utiliser pour associer un magasin d’instances au WorkflowServiceHost.
// wsh is an instance of WorkflowServiceHost class
wsh.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore();
Une fois le WorkflowServiceHost ouvert, la persistance est activée automatiquement si le DurableInstancingOptions.InstanceStore n’est pas null.
En général, un comportement de service fournit le magasin d’instances concrètes à utiliser avec un hôte de service de workflow, à l’aide de la propriété InstanceStore. Par exemple, SqlWorkflowInstanceStoreBehavior
crée une instance de SqlWorkflowInstanceStore, la configure et l'affecte à DurableInstancingOptions.InstanceStore.
Activer la persistance à l'aide d'un fichier de configuration d'application
La persistance peut être activée à l'aide d'un fichier de configuration de l'application en ajoutant le code suivant à votre fichier app.config ou web.config :
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="myBehavior">
<sqlWorkflowInstanceStore connectionString="Data Source=myDatabaseServer;Initial Catalog=myPersistenceDatabase" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Important
Microsoft vous recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Si vous vous connectez à Azure SQL, les identités managées pour les ressources Azure sont la méthode d'authentification recommandée.