この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

一括処理ジョブの実行

一括処理クラスは、トリガ、クラス、または開発者コンソールから呼び出すことができます。指定したスケジュールで一括処理ジョブを実行する必要が生じる場合もあります。ここでは、すぐに結果が得られるように、一括処理クラスを開発者コンソールから送信する方法を説明します。さらに、スケジューラクラスも作成して一括処理クラスをスケジュールできるようにします。

まず、品目名が関連付けられていない商品レコードをいくつか組織に作成します。以前にテストで作成したレコードは保持されていないため、新しいレコードを作成して一括処理ジョブで処理するレコードを用意します。

  1. [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;
  2. [Execute (実行)] をクリックします。

    これにより 250 件の商品品目が作成されるため、一括処理クラスを最初の 200 レコードに対して 1 回、残りの 50 レコードに対して 1 回、合わせて 2 回実行することになります。

  3. では、開発者コンソールから 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 つのバッチが実行されたことが記載されています。
  4. 一括処理ジョブ実行の状況を表示するには、[設定] から [クイック検索] ボックスに「Apex ジョブ」と入力し、[Apex ジョブ] を選択します。ジョブは終了しているため、状況は「Completed」と表示され、2 つのバッチが処理されたことを確認できます。
    一括処理ジョブの状況の監視
  5. 一括処理ジョブをプログラムでスケジュールするには、Schedulable インターフェースを実装するクラスを作成し、そのクラスの execute メソッドから一括処理クラスを呼び出します。まず [設定] から、[クイック検索] ボックスに「Apex」と入力し、[Apex クラス] を選択してから、[新規] をクリックします。
  6. コードエディタボックスに、次のクラス定義を追加します。
    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}
  7. ジョブのスケジュールとスケジュール済みジョブの監視と同様の手順に従い、MyScheduler クラスをスケジュールします。