こんにちは、にいるです。
今日は、Trailheadのモジュール「一括 Apex トリガ」について、解答と解説をまとめたいと思います。
1.チャレンジ内容
チャレンジ内容です。
1-1.原文
-
Create an Apex trigger for Opportunity that adds a task to any opportunity set to ‘Closed Won’.
- The Apex trigger must be called ‘ClosedOpportunityTrigger’
- With ‘ClosedOpportunityTrigger’ active, if an opportunity is inserted or updated with a stage of ‘Closed Won’, it will have a task created with the subject ‘Follow Up Test Task’.
- To associate the task with the opportunity, fill the ‘WhatId’ field with the opportunity ID.
- This challenge specifically tests 200 records in one operation.
To complete this challenge, you need to add a trigger for Opportunity. The trigger will add a task to any opportunity inserted or updated with the stage of ‘Closed Won’. The task’s subject must be ‘Follow Up Test Task’.
1-2.和訳
-
‘ClosedWon’に設定された任意の商談にタスクを追加する商談のApexトリガーを作成します。
- Apexトリガーは「ClosedOpportunityTrigger」と呼ばれる必要があります
- 「ClosedOpportunityTrigger」がアクティブな状態で、「Closed Won」のステージで商談が挿入または更新されると、「Follow UpTestTask」という件名で作成されたタスクが作成されます。
- タスクを商談に関連付けるには、「WhatId」フィールドに商談IDを入力します。
- このチャレンジでは、1回の操作で200レコードを具体的にテストします。
このチャレンジを完了するには、オポチュニティのトリガーを追加する必要があります。 トリガーは、「クローズドウォン」のステージで挿入または更新されたすべての商談にタスクを追加します。 タスクの件名は「フォローアップテストタスク」である必要があります。
2.解答と解説
解答と解説です。
2-1.Apexクラス
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
trigger ClosedOpportunityTrigger on Opportunity (before insert,before update) { List<Task> taskList = new List<Task>(); for ( Opportunity o : Trigger.new ) { if ( o.StageName =='Closed Won' ) { taskList.add(new Task( subject = 'Follow Up Test Task', whatId = o.id) ); } } if ( taskList.size() > 0 ) { insert taskList; } } |
Apexクラスを書き慣れている方からすれば簡単かと思います。
入ってきた商談レコードをトリガコンテキスト変数「Trigger.new」で拾って、それをfor文で回しているだけですね。
for文の中で、商談のフェーズが’Closed Won’であれば、Taskを作成して関連先にその商談IDを指定しているだけです。
3.まとめ
いかがでしたでしょうか。
トリガは単一レコードだけでなく複数レコードが入ってくることを想定して作成する必要があります。
最初は構文やデータの流れ、実行順序、トリガコンテキスト変数などApexクラスにないものを学習する必要があります。
ただそこを学んでしまえばトリガはもう終わりです。
是非頑張ってください!
他にも色々と標準機能やSalesforce機能について紹介していますので、ご覧ください。
ではでは!