一括処理ジョブの実行
一括処理クラスは、トリガ、クラス、または開発者コンソールから呼び出すことができます。指定したスケジュールで一括処理ジョブを実行する必要が生じる場合もあります。ここでは、すぐに結果が得られるように、一括処理クラスを開発者コンソールから送信する方法を説明します。さらに、スケジューラクラスも作成して一括処理クラスをスケジュールできるようにします。
まず、品目名が関連付けられていない商品レコードをいくつか組織に作成します。以前にテストで作成したレコードは保持されていないため、新しいレコードを作成して一括処理ジョブで処理するレコードを用意します。
-
[Logs (ログ)] タブをクリックし、[Execute (実行)] ウィンドウで次のコードを実行します。
1Merchandise__c[] ml = new List<Merchandise__c>(); 2for (Integer i=0;i<250;i++) { 3 Merchandise__c m = new Merchandise__c( 4 Name='Merchandise ' + i, 5 Description__c='Some description', 6 Price__c=2, 7 Total_Inventory__c=100); 8 ml.add(m); 9} 10insert ml; -
[Execute (実行)] をクリックします。
これにより 250 件の商品品目が作成されるため、一括処理クラスを最初の 200 レコードに対して 1 回、残りの 50 レコードに対して 1 回、合わせて 2 回実行することになります。
-
では、開発者コンソールから Database.executeBatch をコールして一括処理クラスを送信しましょう。[Execute (実行)] ウィンドウから次のコードを実行します。
1String query = 'SELECT Id,CreatedDate FROM Merchandise__c ' + 2 'WHERE Id NOT IN (SELECT Merchandise__c FROM Line_Item__c)'; 3CleanUpRecords c = new CleanUpRecords(query); 4Database.executeBatch(c);ジョブが完了するとメールで通知されます。メールが到着するまで数分かかる場合があります。メールには、2 つのバッチが実行されたことが記載されています。 -
一括処理ジョブ実行の状況を表示するには、[設定] から [クイック検索] ボックスに「Apex ジョブ」と入力し、[Apex ジョブ] を選択します。ジョブは終了しているため、状況は「Completed」と表示され、2 つのバッチが処理されたことを確認できます。
- 一括処理ジョブをプログラムでスケジュールするには、Schedulable インターフェースを実装するクラスを作成し、そのクラスの execute メソッドから一括処理クラスを呼び出します。まず [設定] から、[クイック検索] ボックスに「Apex」と入力し、[Apex クラス] を選択してから、[新規] をクリックします。
-
コードエディタボックスに、次のクラス定義を追加します。
1global class MyScheduler implements Schedulable { 2 3 global void execute(SchedulableContext ctx) { 4 // The query used by the batch job. 5 String query = 'SELECT Id,CreatedDate FROM Merchandise__c ' + 6 'WHERE Id NOT IN (SELECT Merchandise__c FROM Line_Item__c)'; 7 8 CleanUpRecords c = new CleanUpRecords(query); 9 Database.executeBatch(c); 10 } 11} - 「ジョブのスケジュールとスケジュール済みジョブの監視」と同様の手順に従い、MyScheduler クラスをスケジュールします。