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 atividade Receive. WorkflowIdleBehavior é um comportamento que permite especificar o tempo entre quando uma instância de serviço fica ociosa e quando a instância é mantida ou descarregada. Contém duas propriedades que permitem que você defina esses intervalos de tempo. TimeToPersist 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 é mantida. 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, em que descarregar significa persistir a instância no armazenamento de instâncias e removê-la da memória. Este tópico explica como configurar WorkflowIdleBehavior em um arquivo de configuração.
Para configurar WorkflowIdleBehavior
Adicione um elemento
<workflowIdle>
ao elemento<behavior>
dentro do elemento<serviceBehaviors>
conforme mostrado no exemplo a seguir.<behaviors> <serviceBehaviors> <behavior name=""> <workflowIdle timeToUnload="0:05:0" timeToPersist="0:04:0"/> </behavior> </serviceBehaviors> </behaviors>
O atributo
timeToUnload
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. O atributotimeToPersist
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 é mantida. O valor padrão paratimeToUnload
é 1 minuto. O valor padrão paratimeToPersist
é MaxValue. Se você quiser manter instâncias ociosas na memória, mas mantê-las para robustez, defina valores para quetimeToPersist
<timeToUnload
. Se você quiser evitar que instâncias inativas sejam descarregadas, definatimeToUnload
como MaxValue. Para obter mais informações sobre WorkflowIdleBehavior, consulte Extensibilidade do host do serviço de fluxo de trabalho.Observação
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)