Salesforceのバッチスケジュールとは?バッチスケジュール概要や使い方をご紹介
IT・技術関連
更新日:2024.09.05


バッチとは?
バッチとは、一定量のまとまったデータを一括で実行する処理のことです。
バッチは英語の「Batch」のことで、「一束(たば)」や「一団」と訳します。例えば、データが一定量蓄積された後に一括して計算処理を行うような処理をバッチ処理と言います。
また、パソコン起動時にもバッチ処理が動作しています。環境構築や自動設定などの命令が1つのファイルにまとめて記述されており、バッチ処理はパソコン起動時にこの命令を実行しています。
Salesforce のバッチスケジュールとは?

Apexスケジューラ
指定した時間にApexクラスを実行する処理をApexスケジューラと呼びます。 Apexスケジューラでは、一度にスケジュールできるジョブ数は100です。現在設定しているジョブ数を確認するには、Salesforceの「スケジュール済みジョブ」ページを表示し、検索条件を「スケジュール済みApex」にすれば確認ができます。 Apexクラスをトリガからスケジュールする場合、注意する必要があります。制限を超えるスケジュールクラスをトリガで追加しないようにしてください。 特にAPI の一括更新、インポートウィザード、ユーザインターフェースからのレコード一括変更、複数レコードを一括更新するすべての処理は十分な考慮が必要です。Schedulableインターフェースの実装
Apexクラスを一定間隔で実行するスケジュールを設定する場合は、Salesforceが提供するSchedulableインターフェースを実装する必要があります。 スケジューラの起動はシステムが行います。つまり、ユーザが起動するクラスの権限を持っているかどうかに関係なく、すべてのクラスが実行できます。 Salesforceユーザインターフェースを使用して、スケジュール済みApexジョブの実行を停止したり監視したりする場合は、「設定」から「クイック検索」で「スケジュール済みジョブ」を検索します。 Schedulableインターフェースには、1つのメソッドが含まれます。global void execute(SchedulableContext sc){}
実装されたメソッドは global または public として宣言する必要があり、スケジュールを設定するクラスをインスタンス化するために使用します。
サンプル1
Schedulableインターフェースの実装例です。 mergeNumbersと呼ばれるクラスのSchedulableインターフェースを実装しています。global class scheduledMerge implements Schedulable {
global void execute(SchedulableContext SC) {
mergeNumbers M = new mergeNumbers();
}
}
このクラスを実装する場合、開発者コンソールで以下のコードを実装します。
scheduledMerge m = new scheduledMerge();
String sch = '20 30 8 10 2 ?';
String jobID = system.schedule('Merge Job', sch, m);
サンプル2
Apexの一括処理クラスでSchedulableインターフェースを実装する例です。 以下は、batchable一括処理クラスのSchedulableインターフェースを実装しています。global class scheduledBatchable implements Schedulable {
global void execute(SchedulableContext sc) {
batchable b = new batchable();
database.executebatch(b);
}
}
一括処理をスケジュールする簡単な方法は、System.scheduleBatchメソッドを使用することです。この場合は、Schedulableインターフェースを実装する必要はありません。
スケジュール済みジョブの追跡と停止
スケジュール済みジョブを追跡したり停止したりすることが可能です。 スケジュール済みジョブを追跡する場合は、SchedulableContextオブジェクトを使用します。 SchedulableContextのgetTriggerIDメソッドは、スケジュール済みジョブに関連付けられている CronTriggerオブジェクトの ID を文字列として返すので、CronTriggerを照会すると、スケジュール済みジョブの進行状況を追跡できます。 スケジュール済みジョブを停止するには、getTriggerIDメソッドで取得したIDとSystem.abortJobメソッドを使用します。クエリを使用した進捗状況の追跡
SalesforceのApexジョブがスケジュールされた後に、CronTriggerに対してSOQLクエリを実行すれば、進捗状況が取得できます。 以下の例のように、CronTrigger に対して SOQL クエリを実行することで、ジョブの実行回数、ジョブの再実行日時など、いくつかの詳細情報を取得することができます。CronTrigger ct =
[SELECT TimesTriggered, NextFireTime
FROM CronTrigger WHERE Id = :jobID];
この例は、変数jobIDにジョブIDが保存されていることが前提です。
現在のジョブIDを取得するサンプル
現在のジョブIDを取得する場合は次のような例になります。 System.scheduleメソッドは、ジョブIDを返します。スケジュール可能なクラスのexecuteメソッド内で、SchedulableContext引数の変数scに対してのgetTriggerIdをコールすれば、現在のジョブIDを取得することができます。CronTrigger ct =
[SELECT TimesTriggered, NextFireTime
FROM CronTrigger WHERE Id = :sc.getTriggerId()];
スケジュール済みジョブ件数を取得するサンプル
Apexスケジュール済みジョブの合計件数を取得する場合は次のような例になります。 ジョブ種別には、Apexスケジュール済みジョブ種別に対応した「7」を設定します。SELECT COUNT() FROM CronTrigger WHERE CronJobDetail.JobType = '7'
Apexスケジューラのテスト
スケジュールされた Apexをテスト場合は、テストする前にスケジュール済みジョブが終了している必要があります。 これは、System.scheduleメソッドが、匿名プロセスを開始するためです。System.scheduleメソッドを実行する個所で、テストメソッドstartTestとstopTestを使用し、テストを続行する前にスケジュール済みジョブが終了するようにします。System.Scheduleメソッドの使用
Schedulableインターフェースでクラスを実装した後は、System.Schedule メソッドを使用して実行します。 Apexスケジューラはシステム権限で実行されますのですべてのクラスが実行されます。 System.Scheduleメソッドは、ジョブ名称、ジョブ実行予定日時を表す式、クラス名称という 3 つの引数を使用します。次のような構文になります。Seconds Minutes Hours Day_of_month Month Day_of_week Optional_year
System.Scheduleメソッドでは、スケジュールの基準としてユーザのタイムゾーンを使用します。ただし、実際の実行がサービスの使用可能状態によって遅れる場合もあります。
System.scheduleBatchメソッドの使用
System.scheduleBatchメソッドを使用すれば、一括処理ジョブをスケジュールすることができます。 System.scheduleBatchメソッドは、一括処理クラスでのみ使用可能です。また、Schedulableインターフェースを実装する必要はありません。これによって、一括処理ジョブが 1回実行されるスケジュールを簡単に設定することができます。Salesforceのバッチスケジュールを活用しよう!

この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
ITエンジニアの派遣を利用したい企業様へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。