スーパーバッジ攻略 Advanced Apex Specialist ハンズオン編1

前回は長い英文を翻訳して終わりになりました。
今回から、ハンズオンに入ります。
チャレンジは前後半の2回に分けようと思います。

スポンサーリンク

ハンズオン実施前の準備作業

Trailhead Playground環境の作成

必須ではありませんが、スーパーバッジ用に使い分けた方がいいです。

パスワードのリセット

後述するパッケージのインストールに必要です。

ユーザ言語をEnglishにする

ラベル名なども指定されているため、Englishsにした方が無難です。

アンマネージドパッケージのインストール

今までのスーパーバッチと同じで、必要なクラスやページが入っていますので、インストールしましょう。

Salesforce Classicへの切り替え

これも必須ではないですが、このモジュールはSalesforce Classic用に設計されているため、切り替えた方がベターでしょう。

Step1 ベストプラクティスを使用するようにコードベースを更新する

課題翻訳

PackageTestsという名前のApexクラスを削除します。
新しいラベル、定数、新しいカスタムメタデータ型、および新しいカスタムメタデータレコードを作成します。

このステップでのタスク

ここは問題文にしたがって各種設定作業をすれば、特に問題ないと思います。

商品ファミリの選択リスト値変更

課題文にはありませんがEntree, Side, Dessert, Beverageの4値に変更しておきましょう
商品ファミリに選択リスト項目を追加

カスタムラベルの作成

設定内容はビジネス要件に記載済みなのでその通りに作成すればOKです。

定数クラスConstantsの作成

定数の内容はビジネス要件に記載済みなのでその通りに作成しましょう。
STANDARD_PRICEBOOK_IDには標準価格表のSalesforceIDを入れます。
価格表のSalesforceIDを定数クラスに記載

補足事項ですが、価格表のIDはテスト時は、Test.getStandardPricebookId()メソッドを使用することが良しとされています。
ただし、ここではテストメソッド以外でも使用するため、あえて定数クラスとして切っているみたいです。
テスト以外でTest.getStandardPricebookId()メソッドを使用するとエラーになります。

定数クラスConstantsの作成

  • 新しいカスタムメタデータ型、および新しいカスタムメタデータレコードを作成
    →設定内容はビジネス要件に記載済みなのでその通りに作成

Step2 注文トリガーを更新する

課題翻訳

在庫レベルを計算するビジネスロジックを修正し、関連するコードがスリムで効率的であることを確認します。
ベストプラクティスを使用し、関連性のある必要なトリガーイベントに基づいてのみ実行するようにOrderTriggerを変更します。
OrderHelperのコードを更新します。

このステップでのタスク

  • orderTriggerトリガの修正
    →起動トリガを修正(必要最低限のトリガイベントで動作するようにする)し、OrderHelperクラスAfterUpdateメソッドを呼び出す
  • OrderHelperクラスの修正
    →ポイントは2つ。
    AfterUpdateメソッド内のステータスのハードコードされている部分を定数クラスで定義したものに置き換える。
    RollUpOrderItemsメソッドの実装。実装内容はコメントが記載されているのでそれに従う。

Step3 新製品のVisualforceページを更新する

課題翻訳

ビジネス要件を満たすように、Product2New VisualforceページとProduct2Extensionクラスを更新します。

このステップでのタスク

Product2Extensionクラスの修正

  • 拡張クラスのため、コンストラクタを修正
  • クラス内のリストをProduct2からProductWrapperクラスへ置き換え
  • getFamilyOptionsメソッドの作成。内容はビジネス要件の通り
  • 数字や文字列でハードコードされているところは定数クラス使用
  • Saveメソッドでは、リストをProductWrapperクラスへ置き換えたので、分解処理を入れる

Product2Newページの修正

  • apex:chartタグを使用して円グラフの作成
  • リストをProductWrapperクラスに変更したため、プロパティを使用して分解する
  • apex:columnのヘッダは$ObjectTypeを使用してラベル名を参照
  • 新規、編集で割り当てができるように、standardControllerを使用する

ChartHelperクラスの修正

GetInventoryメソッドを実装。ChartDataクラスを内部に持ち、ファミリ単位での集計処理を行う。

商品の新規、編集でProduct2Newページが割り当てられるようにする

設定メニューのProduct→Buttons, Links, and Actionsから、新規、編集、追加をProduct2Newページでオーバーライドします。

Step4 テストデータファクトリを作成する

課題翻訳

TestDataFactory Apexクラスを完成させます。このクラスのメソッドは、単体テストのサンプルデータを生成します。 メソッドはインスタンスメソッドではいけません。

このステップでのタスク

TestDataFactoryクラスの修正

ひたすたテストデータの作成です。内容はコメントに記載があるのでそれに従えばOKです。

コメント