Dela via


Anvisningar: Konfigurera inaktivt beteende med WorkflowServiceHost

Arbetsflöden går inaktiva när de stöter på ett bokmärke som måste återupptas av vissa externa stimulanser, till exempel när arbetsflödesinstansen väntar på att ett meddelande ska levereras med hjälp av en Receive aktivitet. WorkflowIdleBehavior är ett beteende som gör att du kan ange tiden mellan när en tjänstinstans blir inaktiv och när instansen sparas eller tas bort. Den innehåller två egenskaper som gör att du kan ange dessa tidsintervall. TimeToPersist anger tidsintervallet mellan när en arbetsflödestjänstinstans blir inaktiv och när instansen av arbetsflödestjänsten sparas. TimeToUnload anger tidsintervallet mellan när en arbetsflödestjänstinstans blir inaktiv och när instansen av arbetsflödestjänsten tas bort, där avlastning innebär att instansen sparas i instansarkivet och tas bort från minnet. I det här avsnittet beskrivs hur du konfigurerar WorkflowIdleBehavior i en konfigurationsfil.

Så här konfigurerar du WorkflowIdleBehavior

  1. Lägg till ett <>workflowIdleelement i elementetbehavior><i elementet <serviceBehaviors> enligt följande exempel.

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

    Attributet timeToUnload anger tidsperioden mellan när en instans av arbetsflödestjänsten blir inaktiv och när arbetsflödestjänsten tas bort. Attributet timeToPersist anger tidsperioden mellan när en instans av arbetsflödestjänsten blir inaktiv och när instansen av arbetsflödestjänsten sparas. Standardvärdet för timeToUnload är 1 minut. Standardvärdet för timeToPersist är MaxValue. Om du vill behålla inaktiva instanser i minnet men bevara dem för robusthet anger du värden så att timeToPersist<timeToUnload. Om du vill förhindra att inaktiva instanser tas bort anger du timeToUnload till MaxValue. Mer information om WorkflowIdleBehaviorfinns i Utökningsbarhet för arbetsflödestjänstvärd

    Kommentar

    Föregående konfigurationsexempel använder förenklad konfiguration. Mer information finns i Förenklad konfiguration.

Så här ändrar du inaktivt beteende i kod

  • I följande exempel ändras väntetiden innan den sparas och tas bort programmatiskt.

    // 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.
    alteredBehavior.TimeToPersist = new TimeSpan(0, 4, 0);
    alteredBehavior.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)
    

Se även