1. SitecoreAIの開発

スケジュールされたタスク

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

SitecoreAIの組み込みスケジューラにより、設定ファイルを編集せずに定期的なバックグラウンド操作を実行できます。タスクはコンテンツツリー(データベース)内の項目として定義されるため、管理、バージョン変更、デプロイが容易です。

スケジュールされたタスク実行には2種類のSitecoreアイテムタイプが関与しています:

  • コマンド アイテム
  • スケジュール 項目

コマンドアイテム

Command項目は実行すべきコードを定義します。この学校は/sitecore/system/Tasks/Commandsに位置しています。

Command項目は実行可能コードを指し、以下のフィールドを含みます。

  • タイプ - アセンブリ認定クラス名。
  • メソッド - Sitecoreが呼び出すべきメソッド。
A Command item with Type and Method fields.

スケジュール項目

スケジュール項目は、コマンドがいつどのくらいの頻度で実行されるかを定義します。/sitecore/system/Tasks/Schedulesに位置しています。

スケジュール項目には以下の項目が含まれます:

  • コマンド - 関連する コマンド 項目を参照。
  • Items - コマンドに渡されたアイテムを取得するためのクエリです。
  • スケジュール - 実行タイミングを定義するパイプ分離された文字列。
  • 非同期 - 有効にすれば、Sitecoreジョブとしてバックグラウンドスレッドでタスクを実行します。
  • 自動削除 - 期限切れ後にスケジュールを自動的に削除します。
  • 直近の実行 - 直近の実行のタイムスタンプ。
A Scheduled item with Command, Schedule, Items, Async, Auto remove, and Last run fields.

スケジュールフィールド形式

Sitecoreスケジュール項目のScheduleフィールドは、パイプ分離(|)4部構成構文を使用しています。

|||

例:

20231125|99990101|127|12.00

フィールド内訳

以下の表は 、スケジュール 項目構文の各フィールドを説明します。

フィールド名

概要

フォーマット

スタートデートタイム

スケジュールがいつ有効になるかを定義します。

はああ、ちっと

20260220T000000

意味:

2026年2月20日 00:00

エンドデートタイム

スケジュールの期限を定めています。

はああ、ちっと

99990101

意味:

この値はスケジュールが失効しないことを示すために一般的に使われます。

曜日

タスクを実行する日を指定する数値ビット マスク

各日には割り当てられたビット値があります:

日曜日 = 1

月曜日 = 2

火曜日 = 4

水曜日 = 8

木曜日 = 16

金曜日 = 32

土曜日 = 64

複数の日を組み合わせるには、それらのビット値を合計します。

127 = 1 + 2 + 4 + 8 + 16 + 32 + 64

意味:

この課題は週の毎日実施されます。

インターバル

タスクがどれくらいの頻度で実行されるかを定義します。

注記
Sitecoreはクロック時間の実行ではなく 、間隔ベースのポーリング を使用しています。

d.HH:MM

1.02:05

意味:

この課題は1日2時間5分10秒ごとに行われます。

Sitecoreがタスクの実行タイミングを判定する方法

Sitecoreはcronスタイル(絶対時間型)スケジューラを使用していません。代わりに、間隔ベースの実行を用います。

スケジューリングの手順は以下の通りです。

  • システムは定期的に(デフォルトは10分ごと)データベースをポーリングします。
  • スケジュールが提出される場合は、対応するコマンドが実行されます。
  • タスクは正確な1分で起動できません。

「最後の実行」フィールドに値がある場合、次の実行はそのタイムスタンプと設定されたIntervalから計算されます。

!重要繰り返し行うタスクを修正または再スケジュールする際:

  • システムは最終実行フィールドを自動的にリセット しません

  • 現在のLastrun値と新たにスケジューリングされたStartDateTimeの間の時間がIntervalより短い場合、再スケジューリング後の最初の実行はスキップされます。

新たに設定された開始時刻での実行を確保するために:

ラストランフィールドをクリアしなければならない。

スケジュールされたタスクを作成する

次の手順を使ってスケジュールされたタスクを作成します。

  1. タスクコードを書く

    自動化したいロジックを含むクラスを作成します。

    簡単な例:

    public class MySimpleTask { public void Execute() { // Custom logic goes here } }

    パラメータ付きの例:

    public class MyComplexTask { public void Execute(Item items, CommandItem command, ScheduleItem schedule) { // Custom logic } }

  2. コマンドアイテムを作成する

    新しい コマンド アイテムの作成:

    • 経路 - /sitecore/system/Tasks/Commands/
    • テンプレート - /sitecore/templates/System/Tasks/Command - {58119A3E-560E-4DA6-97C6-1ACE8A5B1219}

    フィールドの設定:

    • タイプ - Namespace.ClassName, Assembly
    • 方法 - Execute
  3. スケジュール項目を作成する

    以下の詳細を含む新しい スケジュール 項目を作成します:

    • 経路 - /sitecore/system/Tasks/Schedules/
    • テンプレート - /sitecore/templates/System/Tasks/Schedule - {70244923-FA84-477C-8CBD-62F39642C42B}

    フィールドの設定:

    • コマンド - 新しい コマンド アイテムへのリンク。
    • スケジュール - タイミングを定義する文字列。
    • アイテム - 任意のクエリ
    • 非同期 - バックグラウンド実行が取得された場合に有効化します。

タスク実行の検証

スケジュールされたタスクが実行されたかどうかは以下の方法で確認できます:

  • ラストランフィールドの確認

    最新のタイムスタンプが更新されているか必ず確認してください。

  • ログのレビュー

    タスク実行エントリのためSitecoreAIのログを確認してください。以下のようなエントリーを探してください:

    ManagedPoolThread #3 27 Jun 2025 06:58

    INFO Examining schedules (count
    ) ManagedPoolThread #3 27 Jun 2025 06:58
    INFO Starting: Task Schedule ManagedPoolThread #3 27 Jun 2025 06:58
    INFO Ended: Task Schedule ManagedPoolThread #3 27 Jun 2025 06:58
    INFO Starting: TaskScheduleForPublishingComponentBuilderDemoPage

この記事を改善するための提案がある場合は、 お知らせください!