SalesforceにおけるWebサービスコールアウトのテスト完全ガイド

Salesforceで15分ごとにスケジュールジョブを実行する方法


Salesforceで15分ごとにスケジュールジョブを実行する方法

Salesforceでは、`System.schedule`メソッドを使用してジョブをスケジュールすることができます。ただし、Salesforceのデフォルトでは1つのスケジュールジョブは最大1時間に1回しか実行できません。そのため、15分ごとにジョブを実行するには以下のいずれかの方法を採用する必要があります。


方法1: 4つのスケジュールジョブを設定

1時間に4回実行するには、4つのジョブをそれぞれ15分おきにスケジュールする方法です。

例: スケジュールクラスの作成

以下はスケジュール可能なクラスの例です。

global class MyScheduledJob implements Schedulable {
    global void execute(SchedulableContext sc) {
        // 実行したいロジックを記述
        System.debug('15分ごとのスケジュールジョブが実行されました。');
    }
}

4つのスケジュールジョブを作成

以下のように4回スケジュールします。

// 0分スタート
System.schedule('Job1', '0 0,15,30,45 * * * ?', new MyScheduledJob());

このコードでは、1つのスケジュールジョブが15分間隔で動作するように設定されています。


方法2: コールチェーンで実行

1つのスケジュールジョブが終了した際に、次のジョブを再度15分後にスケジュールする方法です。このアプローチでは、1つのジョブだけで制御可能です。

コールチェーンクラス例

global class MyChainedJob implements Schedulable {
    global void execute(SchedulableContext sc) {
        // 実行したいロジック
        System.debug('15分ごとのジョブが実行されました。');

        // 次のジョブを15分後にスケジュール
        Datetime nextRunTime = Datetime.now().addMinutes(15);
        String cronExp = nextRunTime.format('s m H d M ? yyyy');
        System.schedule('ChainedJob_' + nextRunTime.getTime(), cronExp, new MyChainedJob());
    }
}

この方法では、ジョブが終了するたびに次のジョブが自動的にスケジュールされます。


方法3: Platform Eventを使用

プラットフォームイベントを使用して、イベントベースで15分間隔の実行をシミュレートする方法です。この方法は、より高度なカスタマイズが可能で、複数のイベントをトリガーできます。


注意点

  • Governor Limits: Salesforceの制限(同時スケジュールジョブ数など)に注意してください。
  • メンテナンス性: 方法1は直感的で分かりやすいですが、複数のジョブを個別に管理する必要があります。方法2は単一のジョブで管理が容易ですが、エラー処理に工夫が必要です。
  • 実行時間: 各ジョブの実行時間が15分以内で完了することを確認してください。

コメント