Upgrade to Pro — share decks privately, control downloads, hide ads and more …

sfdcNihonKajinStudyEvent-5-Trigger and Order

sfdcNihonKajinStudyEvent-5-Trigger and Order

salesforce Trigger and Order

SfdcNihonKajinStudy

May 18, 2019
Tweet

More Decks by SfdcNihonKajinStudy

Other Decks in Technology

Transcript

  1. レベル1:小学校1年生レベルの問題 N O 画面 入力 Trigger カスタム 入力規則 WorkFlow 結果確認

    BF AF 項目 更新 メール アラート 画面 メール 1 100 >=100 ? 2 95 +10 >=100 ? 3 85 +10 >=100 ? 給料項目に金額を入力して、保存ボタンを押す 結果確認:画面の表示とメールの金額 1.1:画面(エラーメッセージ ※入力規則で指定したエラーメッセージ) 1.2:画面(エラーメッセージ ※入力規則で指定したエラーメッセージ) 1.3:画面(95)
  2. レベル2:小学校2年生レベルの問題 N O 画面 入力 Trigger カスタム 入力規則 WorkFlow 結果確認

    BF AF 項目 更新 メール アラート 画面 メール 1 85 +10 ? 2 85 +10 >=100 +10 ? 3 85 +10 >=100 +10 • ? ? 給料項目に金額を入力して、保存ボタンを押す 結果確認:画面の表示とメールの金額 2.1:画面(システムエラー ※AFには自身を更新できません) 2.2:画面(115 ) 2.3:画面(115)、メール(95 ※項目自動更新前の値)、何で?? ※課題:検証方法が間違いか、それとも、バグ? 公式サイト(https://help.salesforce.com/articleView?id=workflow_field_update_considerations.htm&type=5) 項目自動更新は、メールアラート、ToDo、およびアウトバウンドメッセージの前に実行されます。 項目自動更新は、ケース割り当て、リード割り当て、自動レスポンスの各ルールの後に実行されます。
  3. N O 画面 入力 Trigger カスタム 入力規則 ProcessBuilder 結果確認 BF

    AF メール アラート 項目 更新 メール アラート 画面 メール 1 85 +10 >=100 +10 ? 2 75 +10 >=100 +10 ? 3 60 +10 >=100 +10 ? レベル3:小学校3年生レベルの問題 給料項目に金額を入力して、保存ボタンを押す 結果確認:画面の表示とメールの金額 3.1:画面(システムエラー ※入力規則エラー) 3.2:画面(システムエラー ※入力規則エラー) 3.3:画面(90)
  4. N O 画面 入力 Trigger カスタム 入力規則 ProcessBuilder 結果確認 BF

    AF メール アラート 項目 更新 メール アラート 画面 メール 1 60 +10 >=100 • +10 ? ? 2 60 +10 >=100 +10 • ? ? 3 60 +10 >=100 • +10 • ? ? レベル4:小学校4年生レベルの問題 給料項目に金額を入力して、保存ボタンを押す 結果確認:画面の表示とメールの金額 4.1:画面(90)、メール(70) 4.2:画面(90)、メール(90) 4.3:画面(90)、メール(70) 、メール(90)
  5. N O 画面 入力 Trigger カスタム 入力規則 WorkFlow ProcessBuilder 結果確認

    BF AF 項目 更新 メール アラート メール アラート 項目 更新 メール アラート 画面 メール 1 95 +10 >=100 +10 • • +10 • ? ? 2 50 +10 >=100 +10 • • +10 • ? ? 3 20 +10 >=100 +10 • • +10 • ? ? レベル5:小学校5年生レベルの問題 給料項目に金額を入力して、保存ボタンを押す 結果確認:画面の表示とメールの金額 5.1:画面(エラーメッセージ ※入力規則で指定したエラーメッセージ) 5.2:画面(システムエラー ※PB入力規則エラー) ※課題:回避方法は? 5.3:画面(70)、メール(30) 、メール(50) 、メール(70)
  6. Q1:Trigger.Newについて List<Account> actListに5件Accountがある (内訳【:新規:2件、更新:3件】) Upsert actList; Trigger(Before Insert, Before Update)

    { system.debug(Trigger.new); } 問題:Triggerが何回実行するか? :Trigger.Newには何件Accountがあるか? :DML実行回数? 答え:Trigger(2回 ※insert、Update) :Trigger.New(新規2件 ※InsertTrigger) 、Trigger.New(更新3件 ※UpdateTrigger) :DML(1回)
  7. Q2:DML実行回数について List<Account> actListに210件新規Accountがある Insert actList; Trigger(After Insert) { List<Contact> contactList

    = new List<Contact> (); for (Account act :Trigger.New) { contactList.add(new Contact(name=‘責任者’, accountid=act.di)); } insert contactList; } 問題:Triggerが何回実行するか? :DML実行回数は? 答え:Trigger(2回 ※200件と10件)、DML(3回) 説明:Triggerには最大200件レコードを処理する、つまり、Trigger.Newには最大200件レコードを保持する
  8. トリガと実行の順序の纏め 2.3.WorkFlow: 画面入力→BfTrigger→カスタム入力規則→AfTrigger→WF処理(MailAlertの作成→項目自動更新→ BfTrigger → AfTrigger )→DBCommit→ MailAlertの送信 4.1.ProcessBuilder (MailAlert→項目更新):

    画面入力→BfTrigger →入力規則→ AfTrigger →PB処理( MailAlertの作成→項目更新→ BfTrigger →カスタム入力規則 → AfTrigger ) →DBCommit→ MailAlertの送信 4.2.ProcessBuilder (項目更新→ MailAlert) : 画面入力→BfTrigger →入力規則→ AfTrigger →PB処理( 項目更新→ BfTrigger →カスタム入力規則→ AfTrigger → MailAlertの作成 ) →DBCommit→ MailAlertの送信 4.3.ProcessBuilder (MailAlert→項目更新→ MailAlert) : 画面入力→BfTrigger →入力規則→ AfTrigger →PB処理( MailAlertの作成→項目更新→ BfTrigger →カスタム入力規則 → AfTrigger → MailAlertの作成) →DBCommit→ MailAlertの送信 5.3.WorkFlow とProcessBuilder (MailAlert→項目更新→ MailAlert) : 画面入力→BfTrigger→カスタム入力規則→AfTrigger→WF処理(MailAlertの作成→項目自動更新→ BfTrigger → AfTrigger )→PB処理( MailAlertの作成→項目更新→ BfTrigger →カスタム入力規則→ AfTrigger → MailAlertの作 成) →DBCommit→ MailAlertの送信
  9. N O 子画面入力 Trigger ProcessBuilder項目更新 結果確認 BF AF 子金額1 子金額2

    親金額1 親金額2 金額 メール 1 金額1 20 +10 +5 子金1+6 金額2 20 子金2+6 2 金額1 20 +10 +10 +5 子金1+6 金額2 20 子金2+6 親の項目の更新モデル(Case1) 答え 子金額1 子金額2 親金額1 親金額2 備考 1 30 25 26 26 2 50 35 36 26
  10. N O 子画面入力 Trigger ProcessBuilder項目更新 結果確認 BF AF 子金額1 子金額2

    親金額1 親金額2 金額 メール 1 金額1 20 +10 +5 子金1+6 金額2 20 子金2+6 2 金額1 20 +10 +10 +5 子金1+6 金額2 20 子金2+6 親の項目の更新モデル(Case2) 答え 子金額1 子金額2 親金額1 親金額2 備考 1 30 25 26 26 2 60 35 36 26
  11. 親の項目の更新モデル(Case3の画面) N O 子画面入力 Trigger ProcessBuilder項目更新 結果確認 BF AF 子金額1

    子金額2 親金額1 親金額2 金額 メール 1 金額1 20 +10 +10 メール +5 メール +6 メール 金額2 20 +6 メール 実行前 実行後
  12. 親の項目の更新モデル(Case3メール) N O 子画面入力 Trigger ProcessBuilder項目更新 結果確認 BF AF 子金額1

    子金額2 親金額1 親金額2 金額 メール 1 金額1 20 +10 +10 メール +5 メール +6 メール 金額2 20 +6 メール