Sitecore8.0以降はUTC時間でスケジュールされたコマンドが起動します

samatsu 5/18/2016 1719 N/A Sitecore XP

Sitecore 8.0 で、時間が内部的にUTC時間で管理されるようになりました。ローカライズ対応するために時間をUTC時間で管理することは必須なのでこのことは素晴らしい変更です。Sitecore7からアップグレードした環境の場合は、DateやDateTime型のフィールドはUTC時間で保存されていないのですが、Sitecoreが自動的に時間がUTCかサーバータイムかを判定して適切に変換を行ってSitecoreのUIに表示してくれます。

UTCに関するより詳細な情報は次のURLを参照してください。

UTC
https://doc.sitecore.net/sitecore_experience_platform/setting_up__maintaining/utc

さて、ここで1つ考慮する必要があるものがあります。それは /sitecore/system/Tasks/Schedules/ アイテム配下に定義する定期的に実行するタスクのスケジュールについてです。

例えば、下図のように定期的に実行するコマンドをスケジューリングしたとします。

20140101T000000|99990101T000000|62|01:00:00

上図では2014/1/1 から 9999/1/1 の間で、月-金 の間 1 時間ごとにコマンドを実行するスケジュールの設定をしています。ここで重要なことは、このテキストフィールドに設定したスケジュールはUTC時間で解釈されるということです。そのため、例えばCMサーバーのOSが日本のロケール時間(JST)で動作していた場合は、結果的に日本時間の月曜日の9:00から土曜日の9:00まで、1時間ごとにコマンドフィールドで指定したコマンドが実行されることになります。

日本時間の月曜0:00 から土曜0:00まで動作させたい場合は、起動されるコマンド側で考慮してあげれば特に大きな問題にはならないと思いますが、考慮漏れになりがちな動作なので覚書として情報を掲載しておきます。

スケジュールアイテムを利用したタスクの定期的な実行に関しては、SDNのコンテンツクックブックの"4.4 アイテムのパブリッシュをスケジュールする方法" もしくは Repost: All About Sitecore Scheduling: Agents and Tasks が参考になります。