Procédure : configurer le comportement inactif avec WorkflowServiceHost
Les workflows deviennent inactifs lorsqu'ils rencontrent un signet qui doit être repris au moyen d'une impulsion externe, par exemple, l'instance de workflow attend qu'un message soit remis à l'aide d'une activité Receive . WorkflowIdleBehavior est un comportement qui vous permet de spécifier le délai entre le moment où une instance du service devient inactive et celui où elle est persistante ou déchargée. Il contient deux propriétés qui permettent de définir ces intervalles. TimeToPersist spécifie l'intervalle de temps entre le moment où une instance du service de workflow devient inactive et celui où elle est persistante. TimeToUnload spécifie l'intervalle entre le moment où une instance du service de workflow devient inactive et celui où elle est déchargée, c'est-à-dire rendue persistante dans le magasin d'instances et supprimée de la mémoire. Cette rubrique explique comment configurer le comportement WorkflowIdleBehavior dans un fichier de configuration.
Pour configurer WorkflowIdleBehavior
Ajoutez un élément
<workflowIdle>
à l’élément<behavior>
dans l’élément<serviceBehaviors>
, comme illustré dans l’exemple suivant.<behaviors> <serviceBehaviors> <behavior name=""> <workflowIdle timeToUnload="0:05:0" timeToPersist="0:04:0"/> </behavior> </serviceBehaviors> </behaviors>
L'attribut
timeToUnload
spécifie le délai entre le moment où une instance du service de workflow devient inactive et celui où le service de workflow est déchargé. L'attributtimeToPersist
spécifie le délai entre le moment où une instance du service de workflow devient inactive et celui où elle est persistante. La valeur par défaut detimeToUnload
est égale à 1 minute. La valeur par défaut pourtimeToPersist
est MaxValue. Si vous souhaitez conserver les instances inactives en mémoire mais les rendre persistantes pour plus de fiabilité, définissez les valeurs ainsi :timeToPersist
<timeToUnload
. Si vous souhaitez empêcher que les instances inactives soient déchargées, définisseztimeToUnload
sur MaxValue. Pour plus d’informations sur WorkflowIdleBehavior, consultez Extensibilité de l’hôte du service de workflowNotes
L'exemple de configuration précédent utilise la configuration simplifiée. Pour plus d’informations, consultez Configuration simplifiée.
Pour modifier le comportement de l'inactivité en code
L’exemple suivant modifie la temporisation avant la persistance et le déchargement par programmation.
// Code to create a WorkFlowServiceHost is not shown here. // Note that SqlWorkflowInstanceStore is in the System.Activities.DurableInstancing.dll. host.DurableInstancingOptions.InstanceStore = new SqlWorkflowInstanceStore(connectionString); WorkflowIdleBehavior alteredBehavior = new WorkflowIdleBehavior { // Alter the time to persist and unload. TimeToPersist = new TimeSpan(0, 4, 0), TimeToUnload = new TimeSpan(0, 5, 0) }; //Remove the existing behavior and replace it with the new one. host.Description.Behaviors.Remove<WorkflowIdleBehavior>(); host.Description.Behaviors.Add(alteredBehavior);
' Code to create a WorkflowServiceHost not shown here. ' Note that SqlWorkflowInstanceStore is in the System.Activities.DurableInstancing.dll host.DurableInstancingOptions.InstanceStore = New SqlWorkflowInstanceStore(connectionString) ' Create a new workflow behavior. Dim alteredBehavior As WorkflowIdleBehavior = New WorkflowIdleBehavior() ' Alter the time to persist and unload. alteredBehavior.TimeToPersist = New TimeSpan(0, 4, 0) alteredBehavior.TimeToUnload = New TimeSpan(0, 5, 0) ' Remove the existing behavior and add the new one. host.Description.Behaviors.Remove(Of WorkflowIdleBehavior)() host.Description.Behaviors.Add(alteredBehavior)