Sdílet prostřednictvím


Postupy: Konfigurace chování při nečinnosti pomocí WorkflowServiceHost

Pracovní postupy se nečiní, když narazí na záložku, která musí být obnovena některými externími podněty, například když instance pracovního postupu čeká na doručení zprávy pomocí Receive aktivity. WorkflowIdleBehavior je chování, které umožňuje určit dobu mezi tím, kdy instance služby přestane být nečinná a kdy je instance trvale uložena nebo uvolněna. Obsahuje dvě vlastnosti, které umožňují nastavit tato časová období. TimeToPersist určuje časové rozpětí mezi tím, kdy instance služby pracovního postupu přestane být nečinná a kdy je instance služby pracovního postupu trvalá. TimeToUnload určuje časové rozpětí mezi tím, kdy instance služby pracovního postupu přestane být nečinná, a když je instance služby pracovního postupu uvolněna, kde uvolnění znamená zachování instance do úložiště instancí a jeho odebrání z paměti. Toto téma vysvětluje, jak nakonfigurovat WorkflowIdleBehavior konfigurační soubor.

Konfigurace WorkflowIdleBehavior

  1. <workflowIdle> Přidejte prvek do elementu uvnitř elementu <behavior><serviceBehaviors>, jak je znázorněno v následujícím příkladu.

    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <workflowIdle timeToUnload="0:05:0" timeToPersist="0:04:0"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    

    Atribut timeToUnload určuje časové období mezi okamžikem, kdy instance služby pracovního postupu přestane být nečinná a kdy je služba pracovního postupu uvolněna. Atribut timeToPersist určuje časové období mezi tím, kdy instance služby pracovního postupu přestane být nečinná a kdy je instance služby pracovního postupu trvalá. Výchozí hodnota je timeToUnload 1 minuta. Výchozí hodnota je timeToPersistMaxValue. Pokud chcete zachovat nečinné instance v paměti, ale zachovat je pro odolnost, nastavte hodnoty tak, aby timeToPersist<timeToUnload. Pokud chcete zabránit uvolnění nečinných instancí, nastavte na hodnotu timeToUnloadMaxValue. Další informace o WorkflowIdleBehaviornaleznete v části Rozšíření hostitele služby pracovního postupu.

    Poznámka:

    Předchozí ukázka konfigurace používá zjednodušenou konfiguraci. Další informace naleznete v tématu Zjednodušená konfigurace.

Změna chování nečinnosti v kódu

  • Následující příklad změní dobu čekání před zachováním a uvolněním programově.

    // 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)
    

Viz také