Skip to main content

無料の花束プロモーションを実行するオートメーションを作成する

メモ

メモ

日本語で受講されている方へ
このバッジの Trailhead ハンズオン Challenge は英語で受講していただく必要があります。英語の意味についてはかっこ内の翻訳をご参照ください。必ず英語の値をコピーして貼り付けてから、Trailhead Playground の言語を [English] に、ロケールを [United States] に切り替えてください。こちらの指示に従ってください。

翻訳版の Trailhead を活用する方法については、自分の言語の Trailhead バッジをご覧ください。

このステップでは、すべての注文の状況を確認するための新しいクラスと新しいメソッドを作成します。注文が有効化されると、注文にボーナス花束を自動的に追加します。

コードを見るときは、// で始まるテキストはコードのコメントであることを忘れないでください。コードでは、コメントでコードブロック (1 行以上のコード) の目的を説明します。コメントは、記述すべきコード、既存のコードの処理、失敗したコードが実行するはずだった処理を開発者が理解するのに役立ちます。

クラスとメソッドを作成する

  1. 設定 をクリックして、[Developer Console (開発者コンソール)] を選択します。
  2. [File (ファイル)] | [New (新規)] | [Apex Class (Apex クラス)] をクリックします。
  3. このクラスに OrderItemUtility という名前を付けて、[OK] をクリックします。
  4. 既存のコードを次のコードに置き換えます。
    //Create the class
    public class OrderItemUtility {
        
        //Create the method that will add free bonus bouquet when order is activated
        public static void addBonusBouquet(List<Order> ordersFromTrigger) {
      
            //TO DO 3.1: Determine if we have a bonus product and get its ID to add to the order
            
                //TO DO 2.1: Create a list to store any new bouquets we'll insert later
      
                //TO DO 2.2: Loop over orders in ordersFromTrigger, for each order (called currentOrder) do something
      
                    //TO DO 2.3: Verify the order status is 'Activated'
      
                        //TO DO 2.4: Create a new bouquet and set values
      
                        //TO DO 2.5: Add the freeBouquet sObject to your list
      
                    //TO DO 2.6: Close the "if" and "for loop" sections
      
                //TO DO 3.2: Use DML to add the new list of newBouquets
      
            //TO DO 3.3: Close the if section
      
        } //end method
    } //end class
  5. [File (ファイル)] | [Save (保存)] をクリックして、クラスを保存します。

新しい花束を作成するためのオートメーションを追加する

次に、オートメーションをクラスに追加します。コードに追加の行を貼り付けると、コードコメント (//) が空白行に追加されます。コードを貼り付けるときには、余分なコメントを忘れずに削除してください。

  1. 新しいボーナス花束を格納するためのリストを作成します。

    クラスの //TO DO 2.1 のヘッダーの下に次のコードを貼り付けます。

    List<OrderItem> newBouquets = new List<OrderItem>();
  2. for ループを使用して、トリガーから送られる注文を反復処理します。(トリガーは後で作成します。)

    クラスの //TO DO 2.2 のヘッダーの下に次のコードを貼り付けます。

    for(Order currentOrder : ordersFromTrigger) {

    これは for ループの最初の部分です。トリガーからすべての注文を取得して、ordersFromTrigger リストに追加します。for ループは各注文を評価して、注文に currentOrder という名前を付けます。

    メモ

    ここでは開き中括弧 ( { ) しか指定されていませんが、これはまだ注文の処理が終わっていないためです。for ループはこのステップの後のほうで閉じます。

  3. 次に各注文を (作成した currentOrder 変数を使用して) 調べ、その注文が有効化されているかどうかを確認します。有効化されていれば、他の処理を行います。有効化されていなければ、次の注文で同じ確認を行います。

    クラスの //TO DO 2.3 のヘッダーの下に次のコードを貼り付けます。

    if(currentOrder.Status == 'Activated') {

    for ループのコードと同じように、開き中括弧しかありません。有効化されている各注文の処理が完了した後で、閉じ中括弧を追加します。

  4. 有効化されている注文を見つけたら、新しい OrderItem (注文品目) の sObject を作成します。

    クラスの //TO DO 2.4 のヘッダーの下に次のコードを貼り付けます。

    OrderItem freeBouquet = new OrderItem(
        OrderId = currentOrder.id, //this is the order we're linking the bouquet to
        //PricebookEntryId = entry.id,
        numberOfFlowers__c = 3,
        description = 'FREE Bouquet',
        Quantity = 1,
        colorTheme__c = 'Spectacular Sunset',
        percentOfOpening__c = 0,
        UnitPrice = 0.00
    );

    ここでは freeBouquet という OrderItem (注文品目) sObject を作成し、その項目に値を割り当てます。

  5. //TO DO 2.1 で作成したリストに sObject を追加します。

    クラスの //TO DO 2.5 のヘッダーの下に次のコードを貼り付けます。

    newBouquets.add(freeBouquet);

    Apex に組み込まれている add メソッドを使用して、リストに項目を追加しやすいようにします。

    newBouquets.add(freeBouquet);

    このステートメントでは、newBouquets はリストの名前、add はメソッド、freeBouquet (括弧内) は newBouquets リストに追加する sObject です。

  6. 最後に if ステートメント (有効化されている注文に対してのみ実行されるコード) と for ループ (ループが有効化されているすべての注文を処理する際に書く注文に対して実行されるコード) を完成させます。

    クラスの //TO DO 2.6 のヘッダーの下に次のコードを貼り付けます。

        } //end if
    } //end for loop

    クラスファイルは次のようになります。

    //Create the class
    public class OrderItemUtility {
      
        //Create the method that will add free bonus bouquet when order is activated
        public static void addBonusBouquet(List<Order> ordersFromTrigger) {
        
            //TO DO 3.1: Determine if we have a bonus product and get its ID to add to the order
      
                //TO DO 2.1: Create a list to store any new bouquets we'll insert later
                List<OrderItem> newBouquets = new List<OrderItem>();
            
                //TO DO 2.2: Loop over orders in ordersFromTrigger, for each order (called currentOrder) do something
                for(Order currentOrder : ordersFromTrigger) {
                
                    //TO DO 2.3: Verify the order status is 'Activated'
                    if(currentOrder.Status == 'Activated') {
                    
                        //TO DO 2.4: Create a new bouquet and set values
                        OrderItem freeBouquet = new OrderItem(
                            OrderId = currentOrder.id, //this is the order we're linking the bouquet to
                            //PricebookEntryId = entry.id,
                            numberOfFlowers__c = 3,
                            description = 'FREE Bouquet',
                            Quantity = 1,
                            colorTheme__c = 'Spectacular Sunset',
                            percentOfOpening__c = 0,
                            UnitPrice = 0.00
                        );
                    
                        //TO DO 2.5: Add the freeBouquet sObject to your list
                        newBouquets.add(freeBouquet);
                    
                    //TO DO 2.6: Close the "if" and "for loop" sections
                    } //end if
                } //end for loop
                
                //TO DO 3.2: Use DML to add the new bouquet to the Order
                
            //TO DO 3.3: Close the if section
            
        } //end method
    } //end class
  7. [File (ファイル)] | [Save (保存)] をクリックして、OrderItemUtility クラスを保存します。

次の単元では、Salesforce からデータを取得したり Salesforce にデータを送信したりする方法を学習し、トリガーを作成します。そしていよいよコードをテストします。

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる