具有时间段异常的Sitecore任务调度

时间:2017-06-09 06:36:47

标签: sitecore scheduled-tasks sitecore8.1

我在Sitecore中设置了许多计划任务。有些人每隔几个小时每隔15分钟跑一次。

示例配置:

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

这会运行一个每隔15分钟构建一个xml文件的任务,并且运行正常。但是,我现在想要阻止此任务在特定日期的特定时间之间运行。有没有办法让我通过配置添加这个?

1 个答案:

答案 0 :(得分:4)

没有。没有办法只通过配置这样做。

您可以做的是将额外参数传递给计划任务并设置开始和结束时间。然后在您的计划任务代码中,检查当前时间是否在开始和结束时间之间。

作业将被执行,但不会生成新的xml。

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

代码应该是这样的(未经测试):

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;
      }
    }