Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
sfdcNihonKajinStudyEvent-5-Trigger and Order
Search
SfdcNihonKajinStudy
May 18, 2019
Technology
0
380
sfdcNihonKajinStudyEvent-5-Trigger and Order
salesforce Trigger and Order
SfdcNihonKajinStudy
May 18, 2019
Tweet
Share
More Decks by SfdcNihonKajinStudy
See All by SfdcNihonKajinStudy
sfdcNihonKajinStudyEvent-5-Mobile
sfdcnihonkajinstudy
0
290
sfdcNihonKajinStudyEvent-5-Salesforce To Salesforce
sfdcnihonkajinstudy
0
370
sfdcNihonKajinStudyEvent-4-DataIntegration-3
sfdcnihonkajinstudy
0
290
sfdcNihonKajinStudyEvent-4-Heroku
sfdcnihonkajinstudy
0
290
sfdcNihonKajinStudyEvent-4-SFDCApex data types and variables
sfdcnihonkajinstudy
0
280
sfdcNihonKajinStudyEvent-3-DataIntegration-2
sfdcnihonkajinstudy
1
340
sfdcNihonKajinStudyEvent-3-TriggerAndOrder
sfdcnihonkajinstudy
0
550
sfdcNihonKajinStudyEvent-2-Multi-tenant architecture
sfdcnihonkajinstudy
1
240
sfdcNihonKajinStudyEvent-2-DataIntegration
sfdcnihonkajinstudy
1
240
Other Decks in Technology
See All in Technology
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
2
4.7k
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
1
10k
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
1
10k
無意味な開発生産性の議論から抜け出すための予兆検知とお金とAI
i35_267
2
8.4k
高速なプロダクト開発を実現、創業期から掲げるエンタープライズアーキテクチャ
kawauso
2
6k
一体いつからSRE NEXTがSREだけのカンファレンスだと錯覚していた? / When did you ever get the idea that SRE NEXT was a conference just for SREs?
vtryo
1
140
Understanding_Thread_Tuning_for_Inference_Servers_of_Deep_Models.pdf
lycorptech_jp
PRO
0
160
CI/CD/IaC 久々に0から環境を作ったらこうなりました
kaz29
1
220
OPENLOGI Company Profile
hr01
0
67k
Witchcraft for Memory
pocke
1
710
生成AI活用の組織格差を解消する 〜ビジネス職のCursor導入が開発効率に与えた好循環〜 / Closing the Organizational Gap in AI Adoption
upamune
6
4.8k
製造業からパッケージ製品まで、あらゆる領域をカバー!生成AIを利用したテストシナリオ生成 / 20250627 Suguru Ishii
shift_evolve
PRO
1
160
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
125
52k
Adopting Sorbet at Scale
ufuk
77
9.4k
Practical Orchestrator
shlominoach
188
11k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
680
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Building Adaptive Systems
keathley
43
2.6k
Site-Speed That Sticks
csswizardry
10
680
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Transcript
SFDC在日華人交流会 トリガと実行の順序の再発見 (上級編) 吹雪 真夏 2019/03/30 第3回 吹雪 真夏 2019/05/18
第5回 準備がいいかい? そろそろ始まるよ 第3回 第5回
自己紹介 本名:非公開(国家秘密) 愛称:吹雪真夏、吹雪詩織、吹雪桜梨、 :八神吹雪、四面楚歌…など 問い合わせ:FBI/CIA/MI6にご連絡下さい 所属:株式会社ユエンタジャパン 資格:非公開(地球秘密) 走れ、走れ… 年齢:永遠の17歳(高校2年生)
私立吹雪学園付属小学校 ご入学 おめでとうございます
画面、WF、PBの設定イメージ
WorkFlowについて • 社員マスタに給料項目があります • BeforceTrigger:+10万 • AfterTrigger:+10万 • 入力規則:>=100万 •
WorkFlow:+10万(項目自動更新) • WorkFlow:メールアラート
レベル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年生レベルの問題 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、およびアウトバウンドメッセージの前に実行されます。 項目自動更新は、ケース割り当て、リード割り当て、自動レスポンスの各ルールの後に実行されます。
ProcessBuilderについて • 社員マスタに給料項目があります • BeforceTrigger:+10万 • AfterTrigger:+10万 • 入力規則:>=100万 •
ProcessBuilder:+10万(項目更新) • ProcessBuilder:メールアラート
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)
ProcessBuilderメール設定例
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)
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:小学校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回)
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件レコードを保持する
トリガと実行の順序の纏め 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の送信
実行の順序の注意事項 AfterTriggerには自分自身を更新できません WFのMailAlertの値はWFのFieldUpdate実行前の値です PBのFiledUpdateは自分自身を更新すると、入力規則でシステムエラーが発生する恐れがあ る(5.2の例) PBのFiledUpdateは親項目を更新する時に、参照された子項目の値は、PB実行前の値です
(例:親金額=子金額(PB実行前)+10万) PB更新は一つDMLで更新レコード数の制限が適用(一万件) 結論:TriggerとWF/BFを一緒に使わないでください
親の項目の更新モデル TestChildren TestParent
親の項目の更新モデル(Case1) 子金額1=子金額1 + 10万 子金額2=子金額1 + 5万 親金額1=子金額1+ 6万 親金額2=子金額2+
6万
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
親の項目の更新モデル(Case1の結果) 1-2:結果 1-1:結果 ←左記も同じ結果です
親の項目の更新モデル(Case2) 子金額1=子金額1 + 10万 子金額2=子金額1 + 5万 親金額1=子金額1 + 6万
親金額2=子金額2 + 6万
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
親の項目の更新モデル(Case2の結果) 2-2:結果 2-1:結果
親の項目の更新モデル(Case3) 子金額1=子金額1+ 10万 MailAlert 子金額2=子金額1 + 5万 MailAlert 親金額1=子金額1 +
6万 MailAlert 親金額2=子金額2 + 6万 MailAlert MailAlert
親の項目の更新モデル(Case3の画面) N O 子画面入力 Trigger ProcessBuilder項目更新 結果確認 BF AF 子金額1
子金額2 親金額1 親金額2 金額 メール 1 金額1 20 +10 +10 メール +5 メール +6 メール 金額2 20 +6 メール 実行前 実行後
親の項目の更新モデル(Case3メール) N O 子画面入力 Trigger ProcessBuilder項目更新 結果確認 BF AF 子金額1
子金額2 親金額1 親金額2 金額 メール 1 金額1 20 +10 +10 メール +5 メール +6 メール 金額2 20 +6 メール
子の項目の更新モデル(1万件以上) エラーが発生しました: Too many DML rows: 10001
私立吹雪学園付属小学校
アンコールはないの? お替わりいかがですか?