Partilhar 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 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

  1. 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. O timeToPersist 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 para timeToUnload é 1 minuto. O valor padrão para timeToPersist é MaxValue. Se você quiser manter instâncias ociosas na memória, mas persisti-las para robustez, defina valores para que timeToPersist<timeToUnload. Se quiser evitar que instâncias ociosas sejam descarregadas, defina timeToUnload como MaxValue. Para obter mais informações sobre WorkflowIdleBehavioro , consulte Extensibilidade do host do serviço de fluxo de trabalho

    Nota

    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)
    

Consulte também