2017-06-09 3 views
2

Ich habe eine Reihe von geplanten Aufgaben in Sitecore eingerichtet. Einige fahren alle 15 Minuten alle paar Stunden.Sitecore-Taskplanung mit Ausnahme für Zeitperiode

Ein Beispiel config:

<sitecore> 
    <scheduling> 
     <agent type="Acme.Tasks.SitemapProducts, AcmeSitecore" method="Run" interval="00:15:00" site="website"> 
     <param desc="filename">~/products.xml</param> 
     <param desc="Site">website</param> 
     <param desc="HasVariants">false</param> 
     </agent> 
    </scheduling> 
    </sitecore> 

Dies läuft eine Aufgabe, die eine XML-Datei in Ordnung alle 15 Minuten und arbeitet baut. Allerdings möchte ich jetzt verhindern, dass diese Aufgabe an bestimmten Tagen zwischen bestimmten Zeiten ausgeführt wird. Gibt es eine Möglichkeit für mich, dies via Config hinzuzufügen?

+0

Ein einfachste Weg, verwenden Sitecron sein würde, die Sie Aufgabe zu einem bestimmten Zeitpunkt ausgeführt werden kann. Beispiel: Führen Sie Aufgabe A jeden Montag um 9 Uhr aus. Der Hauptvorteil von Sitecron wird die verbleibende Zeit initialisieren, selbst wenn der App-Pool neu gestartet wird. –

Antwort

4

Nein. Es gibt keine Möglichkeit, dies nur über die Konfiguration zu tun.

Sie können zusätzliche Parameter an Ihre geplante Aufgabe übergeben und Start- und Endzeit festlegen. Und dann in Ihrem geplanten Aufgabencode nur überprüfen, ob die aktuelle Zeit zwischen Start- und Endzeit ist.

Der Job wird ausgeführt, aber es wird kein neues XML erzeugt.

<sitecore> 
    <scheduling> 
     <agent type="Acme.Tasks.SitemapProducts, AcmeSitecore" method="Run" interval="00:15:00" site="website"> 
     <param desc="filename">~/products.xml</param> 
     <param desc="Site">website</param> 
     <param desc="HasVariants">false</param> 
     <StartTime>08:00</StartTime> 
     <Endtime>21:00</Endtime> 
     </agent> 
    </scheduling> 
</sitecore> 

-Code soll wie folgt (nicht getestet) sein:

public class SitemapProducts 
{ 
    public string StartTime { get; set; } 
    public string EndTime { get; set; } 

    public void Run() 
    { 
     if (!string.IsNullOrEmpty(StartTime) && DateTime.Now.ToString("HH:mm") < StartTime) 
     { 
      return; 
     } 
     if (!string.IsNullOrEmpty(EndTime) && DateTime.Now.ToString("HH:mm") > EndTime) 
     { 
      return; 
     } 
    } 
+0

Ich denke, das ist so nah an dem, was ich brauche, um es zu bekommen. Ich dachte darüber nach, mal Code zu überprüfen, dachte aber nicht daran, die Zeiten zu überschreiten. Ich mag das, danke. – Fred

Verwandte Themen