一括処理ジョブの実行
一括処理クラスは、トリガ、クラス、または開発者コンソールから呼び出すことができます。指定したスケジュールで一括処理ジョブを実行する必要が生じる場合もあります。ここでは、すぐに結果が得られるように、一括処理クラスを開発者コンソールから送信する方法を説明します。さらに、スケジューラクラスも作成して一括処理クラスをスケジュールできるようにします。
まず、品目名が関連付けられていない商品レコードをいくつか組織に作成します。以前にテストで作成したレコードは保持されていないため、新しいレコードを作成して一括処理ジョブで処理するレコードを用意します。
-
[Logs (ログ)] タブをクリックし、[Execute (実行)] ウィンドウで次のコードを実行します。
1swfobject.registerObject("clippy.codeblock-0", "9"); 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17Merchandise__c[] ml = new List<Merchandise__c>(); 18for (Integer i=0;i<250;i++) { 19 Merchandise__c m = new Merchandise__c( 20 Name='Merchandise ' + i, 21 Description__c='Some description', 22 Price__c=2, 23 Total_Inventory__c=100); 24 ml.add(m); 25} 26insert 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 つのバッチが実行されたことが記載されています。 -
一括処理ジョブ実行の状況を表示するには、[設定] から、 または をクリックします。ジョブは終了しているため、状況は「Completed」と表示され、2 つのバッチが処理されたことを確認できます。
- 一括処理ジョブをプログラムでスケジュールするには、Schedulable インターフェースを実装するクラスを作成し、そのクラスの execute メソッドから一括処理クラスを呼び出します。[設定] から、 をクリックします。
-
コードエディタボックスに、次のクラス定義を追加します。
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 クラスをスケジュールします。