Sitecore:在哪里插入自定义一次性功能?

时间:2016-04-18 09:09:05

标签: timer sitecore

我的任务是定期以编程方式将项目添加到我们的Sitecore数据库中,但几乎没有使用它的经验。使用在线资源,我已经设法了解如何在验证项目尚不存在之后以编程方式创建新项目并将其添加到数据库,但不知道将代码添加到解决方案的位置。 / p>

我原本想在每个时间间隔过后只是启动一个计时器并从Tick事件处理程序异步运行代码,但是我需要在代码中的某个位置设置计时器被击中一次。我想Sitecore可能还有更好的方法来实现这一目标。

我很感激,如果有人能指出我在哪里放置代码的正确方向,并让我知道是否有更好的解决方案,定期执行一个动作。

2 个答案:

答案 0 :(得分:3)

有几种方法可以实现定期运行的任务。根据您的要求和Sitecore提供的产品,您应该选择最适合您的产品。我过去曾使用过以下任务。您可以在Sitecore Climber提供的更多详细信息中阅读有关任务的信息。最好的是John West的职位。

  • 数据库嵌入式任务(计划任务) - 为此,您需要在/ sitecore / system / Tasks / Schedules下创建一个计划项目,并在/ sitecore / system / Tasks / Commands下创建一个命令项目。该命令用于指定类并放入自定义逻辑。我喜欢这种方法,因为我可以告诉开始日期,结束日期,一周中的哪几天以及运行的时间间隔。此外,如果您发现任何问题或者不再需要它,这相对容易打开或关闭。打开或关闭它不会导致应用程序池回收。这里的好处是,Schedule项包含一个" Last Run'您可以使用该字段作为参数来告诉您的代码,以便在“最后一次运行”之后修改项目。日期值。作为备份,我总是写一个页面并把它放在CM的/ sitecore / admin文件夹中,它有参数控制和日期,以便在我的服务器关闭时手动运行,我需要手动运行它。虽然你可以接近,但没有确切的时间。
  • Sitecore代理 - 您可以在此处编写一个页面,然后将其指定为Sitecore配置文件的<scheduling>部分中的URL。这是相对简单的,因为您编写页面,将其放在/ Sitecore / admin文件夹中,然后只需调用URL。我认为<scheduling>部分处理查询字符串参数的方式可能存在一些问题。您可以在指定URL的同一位置指定运行此时间间隔的时间间隔。这又不是完全定时的,所以它永远不会在确切的时间运行,而是以App池启动时的常规间隔运行。您还必须实施自己的存储方式&#39; Last Run&#39;时间在这里。打开或关闭此功能需要更改配置文件,以便在此处进行应用程序池回收。
  • Windows任务 - 对于需要精确计时的情况,这是最佳选择。您可能必须为此编写Web服务。此外,您需要编写自己的“最后一次运行”&#39;时间逻辑。打开或关闭此功能非常简单,只需进入Windows任务控制台并禁用此功能即可。

使用前两个选项,您需要确保您的频率元素和代理类型=&#34; Sitecore.Tasks.DatabaseAgent&#34;方法=&#34;运行&#34;间隔=&#34; 00:10:00&#34;命名=&#34; Master_Database_Agent&#34;补丁:源=&#34; Sitecore.Processing.config&#34;元素的时间间隔小于您将创建的计划。这可以通过Sitecore Climber的答案在John West的博客中找到。

我希望这会有所帮助。

答案 1 :(得分:2)