Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
sfdcNihonKajinStudyEvent-5-Trigger and Order
Search
SfdcNihonKajinStudy
May 18, 2019
Technology
430
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
sfdcNihonKajinStudyEvent-5-Trigger and Order
salesforce Trigger and Order
SfdcNihonKajinStudy
May 18, 2019
More Decks by SfdcNihonKajinStudy
See All by SfdcNihonKajinStudy
sfdcNihonKajinStudyEvent-5-Mobile
sfdcnihonkajinstudy
0
310
sfdcNihonKajinStudyEvent-5-Salesforce To Salesforce
sfdcnihonkajinstudy
0
410
sfdcNihonKajinStudyEvent-4-DataIntegration-3
sfdcnihonkajinstudy
0
320
sfdcNihonKajinStudyEvent-4-Heroku
sfdcnihonkajinstudy
0
310
sfdcNihonKajinStudyEvent-4-SFDCApex data types and variables
sfdcnihonkajinstudy
0
310
sfdcNihonKajinStudyEvent-3-DataIntegration-2
sfdcnihonkajinstudy
1
370
sfdcNihonKajinStudyEvent-3-TriggerAndOrder
sfdcnihonkajinstudy
0
580
sfdcNihonKajinStudyEvent-2-Multi-tenant architecture
sfdcnihonkajinstudy
1
280
sfdcNihonKajinStudyEvent-2-DataIntegration
sfdcnihonkajinstudy
1
270
Other Decks in Technology
See All in Technology
SQL Server 2025 最適化されたロック
odashinsuke
0
120
企業の現実世界をグラフで写し取る
sansantech
PRO
0
240
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
550
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
510
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
3
21k
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
270
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
800
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
630
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
2
310
Incremental HTTP
kazuho
5
1.9k
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
210
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
220
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
340
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
900
How to make the Groovebox
asonas
2
2.5k
Designing for Performance
lara
611
70k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
250
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
590
KATA
mclloyd
PRO
35
16k
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
私立吹雪学園付属小学校
アンコールはないの? お替わりいかがですか?