Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

Trailhead モジュール:非同期 Apex

※この内容は2018/4時点のものです。

非同期処理の基本

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_introduction

  • 説明:日本語
  • Challenge:日本語選択問題

future メソッドの使用

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_future_methods

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • 取引先オブジェクトにAPI参照名が「Number_of_Contacts__c」となるカスタム数値項目を作成してください。この項目には取引先オブジェクトに紐づく取引先責任者の数を保存します。
  • クラス名が「AccountProcessor」のApexクラスを作成してください。このApexクラスには取引先レコードIDのリストを引数とする「countContacts」メソッドを含めてください。また、「countContacts」メソッドには @future アノテーションを必ず使用してください。
  • 「countContacts」メソッドでは、引数の取引先レコードIDのリストに対して、各取引先レコードに関連付けられた取引先責任者レコードの数をカウントし、「Number_of_Contacts__c」項目をカウントした値で更新するロジックを記述してください。
  • Apexテストクラス「AccountProcessorTest」を作成してください。
  • 単体テストでは、Apexクラスに含まれるコードすべての行のシナリオをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Apex 一括処理の使用

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_batch

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Database.Batchable インターフェースを使ったApexクラス「LeadProcessor」を作成してください。
  • startメソッドに、QueryLocatorを使用して組織内の全てのリード(Lead)レコードを収集するロジックを記述してください。
  • executeメソッドに、組織内の全てのリード(Lead)レコードのリードソース(LeadSource)項目の値を 「Dreamforce」に更新するロジックを記述してください。
  • Apexテストクラス「LeadProcessorTest」を作成してください。
  • Apexテストクラス「LeadProcessorTest」に、以下のロジックを記述してください。
    • リードのレコードを200個作成する。
    • Apexクラス「LeadProcessor」のBatchメソッドを実行する。
    • 全てのリード(Lead)レコードが正しく更新されていることをテストする。
  • 単体テストでは、Apexクラス「LeadProcessor」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Queueable Apex を使用したプロセスの制御

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_queueable

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Queueableインターフェースを実装したApexクラス「AddPrimaryContact」を作成してください。
  • Apexクラス「AddPrimaryContact」のコンストラクタの引数は、以下としてください。
    • 1番目:取引先責任者(Contact) sObject
    • 2番目:米国の州の省略形を表す文字列
  • Apexクラス「AddPrimaryContact」のexecuteメソッドに、以下ロジックを記述してください。
    • コンストラクタの引数として渡される米国の州の省略形を表す文字列と「都道府県(請求先)」(BillingState)項目が一致する最大200個の取引先(Account)レコードに対し、各取引先レコードに関連付けられた取引先責任者(Contact) sObjectレコードを挿入する。
    • sObjectクラスのclone()メソッドも参考にしてください。
  • Apexテストクラス「AddPrimaryContactTest」を作成してください。
  • Apexテストクラス「AddPrimaryContactTest」に、以下のロジックを記述してください。
    • 「都道府県(請求先)」(BillingState)項目が「NY」の取引先(Account)レコードを50個作成する。
    • 「都道府県(請求先)」(BillingState)項目が「CA」の取引先(Account)レコードを50個作成する。
    • Apexクラス「AddPrimaryContact」のインスタンスを作成し、ジョブとしてキューに追加し、「都道府県(請求先)」(BillingState)項目が「CA」の取引先レコード50個それぞれに対して取引先責任者(Contact)レコードが挿入されていることを確認する。
  • 単体テストでは、Apexクラス「AddPrimaryContact」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

Apex スケジューラを使用したジョブのスケジュール

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_scheduled

  • 説明:日本語
  • Challenge:英語ハンズオン

Challenge要約

  • Schedulable インターフェースを実装したApexクラス「DailyLeadProcessor」を作成してください。
  • Apexクラス「DailyLeadProcessor」のexecuteメソッドにて、リードソース(LeadSource)項目の値が空白であるリード(Lead)のうち最初の200個のレコードに対し、リードソース(LeadSource)項目の値を 「Dreamforce」に更新するロジックを記述してください。
  • Apexテストクラス「DailyLeadProcessorTest」を作成してください。
  • Apexテストクラス「DailyLeadProcessorTest」に、以下のロジックを記述してください。
    • リード(Lead)レコードを200個作成する。
    • DailyLeadProcessorクラスを実行するようスケジュールする。
    • 全てのリード(Lead)レコードが正しく更新されたことをテストする。
  • 単体テストでは、Apexクラス「DailyLeadProcessor」に含まれる全ての行のコードをカバーする必要があります。結果としてコードカバレッジが100%になります。
  • このChallengeを確認する前に、テストクラスを少なくとも1回(開発者コンソールの[Run All]で)実行してください。

非同期 Apex の監視

https://trailhead.salesforce.com/ja/modules/asynchronous_apex/units/async_apex_monitoring

  • 説明:日本語
  • Challenge:日本語選択問題