Compartilhar via


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

  1. 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 atributo timeToPersist 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 para timeToUnload é 1 minuto. O valor padrão para timeToPersist é MaxValue. Se você quiser manter instâncias ociosas na memória, mas mantê-las para robustez, defina valores para que timeToPersist<timeToUnload. Se você quiser evitar que instâncias inativas sejam descarregadas, defina timeToUnload 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)
    

Confira também