Como: Configurar o comportamento ocioso com WorkflowServiceHost
Os fluxos de trabalho ficam ociosos quando encontram um marcador que deve ser retomado por algum estímulo externo, por exemplo, quando a instância do fluxo de trabalho está aguardando a entrega de uma mensagem usando uma Receive atividade. WorkflowIdleBehavior é um comportamento que permite especificar o tempo entre quando uma instância de serviço fica ociosa e quando a instância é persistente ou descarregada. Ele contém duas propriedades que permitem definir esses períodos de tempo. TimeToPersist Especifica o período de tempo entre quando uma instância do Serviço de Fluxo de Trabalho fica ociosa e quando a instância do Serviço de Fluxo de Trabalho é persistente. TimeToUnload Especifica o intervalo de tempo entre quando uma instância de serviço de fluxo de trabalho fica ociosa e quando a instância de serviço de fluxo de trabalho é descarregada, onde descarregar significa persistir a instância no armazenamento de instâncias e removê-la da memória. Este tópico explica como configurar o WorkflowIdleBehavior em um arquivo de configuração.
Para configurar WorkflowIdleBehavior
Adicione um
<workflowIdle>
elemento ao<behavior>
elemento dentro do<serviceBehaviors>
elemento conforme mostrado no exemplo a seguir.<behaviors> <serviceBehaviors> <behavior name=""> <workflowIdle timeToUnload="0:05:0" timeToPersist="0:04:0"/> </behavior> </serviceBehaviors> </behaviors>
O
timeToUnload
atributo especifica o período de tempo entre quando uma instância de serviço de fluxo de trabalho fica ociosa e quando o serviço de fluxo de trabalho é descarregado. OtimeToPersist
atributo especifica o período de tempo entre quando uma instância de serviço de fluxo de trabalho fica ociosa e quando a instância de serviço de fluxo de trabalho é persistente. O valor padrão paratimeToUnload
é 1 minuto. O valor padrão paratimeToPersist
é MaxValue. Se você quiser manter instâncias ociosas na memória, mas persisti-las para robustez, defina valores para quetimeToPersist
<timeToUnload
. Se quiser evitar que instâncias ociosas sejam descarregadas, definatimeToUnload
como MaxValue. Para obter mais informações sobre WorkflowIdleBehavioro , consulte Extensibilidade do host do serviço de fluxo de trabalhoNota
O exemplo de configuração anterior está usando a configuração simplificada. Para obter mais informações, consulte Configuração simplificada.
Para alterar o comportamento ocioso no código
O exemplo a seguir altera o tempo de espera antes de persistir e descarregar programaticamente.
// 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)