Apexトリガと
標準自動化プロセスの違い
Kyoto Salesforce Developers Group
桑山 佳也
2019 - 06 - 07
[Kyoto]
Salesforce Developers
Meetup #1
自己紹介
インフォニック株式会社
桑山 佳也 (@kuwayama_inf)
製造業からITサービス業に転職
Salesforce エンジニア歴:2年
自己紹介
趣味
音楽制作・動画制作
本題
自動化プロセス
自動化プロセスとは?
ビジネスプロセスを
自動化したツール
自動化プロセスツール
LightningフローApexトリガ ワークフロー
プロセスビルダー Flow Builder
開発
コーディング
標準ツール
ノンプログラミング
- ToDo
- メールアラート
- 項目自動更新
→ 自身のオブジェクトのみ
※主従の場合は親も対象
- アウトバウンドメッセージ
ワークフロー
- レコード作成
- レコード更新 → 自身、親、子オブジェクトが対象
- メール送信
- クイックアクションの起動
- Chatter投稿
- フロー起動
- 他プロセスビルダーの起動
- Apexコール
プロセスビルダー
- レコード作成
- レコード更新 → 全て対象
- レコード削除
- メール送信
- クイックアクションの起動
- Chatter投稿
- フロー起動
- 他プロセスビルダーの起動
- Apexコール
Flow Builder
- 大体なんでもOK
Apexトリガ
- 中でも特に他のツールにはない機能
Apexトリガ
削除・復元時に
処理実行が可能
なんでもできるよ!
でも
なんでもできるからってさ。
決してベストではない
コーディング
大抵Sandboxで開発
Apexテスト&リリース
↓
メンテナンス。。
やること多い
簡単な機能は
標準機能でやるほうが早い
処理が複雑になればなるほど
トリガのほうが管理しやすい
↓
エラー処理やデバグ
条件分岐やテストやバッチ処理など。。
実現したい自動化プロセス機能
によって分ける
システムの拡張性
1. 古いレコードをデータベースからロード(または、新しい挿入の初期化)
2. 新しいレコードの値で古い値を上書き
3. システムの入力規則(商談商品を挿入する場合、システムの入力規則に加えてカスタム入力規則が実行されます)
4. すべての before トリガを実行(EE / UE のみ)
5. カスタム入力規則
6. レコードをデータベースに保存(しかし、コミットされていない)
7. レコードをデータベースから再ロード
8. すべての after トリガを実行(EE / UE のみ)
9. 割り当てルール
10.自動応答ルール
11.ワークフロー ルール
12.プロセス
13.エスカレーション ルール
14.積み上げ集計数式の値の更新(存在する場合)
15.データベースのコミット
16.コミット後のロジック(メールの送信)
処理順
beforeトリガ
↓
afterトリガ
↓
ワークフロー
↓
プロセスビルダー
処理順
同じオブジェクトで
複数の自動化ツール
使った場合どう処理されるの?
いっぱい実行されます
トリガで更新
↓
ワークフローで更新
↓
トリガで更新
↓
プロセスビルダーで更新
↓
トリガリレーで処理爆発
実際に作ってみた
カスタム項目で5つチェックボックス作成
ワークフロー作成
フラグ1が☑なら
フラグ2を☑にする
プロセスビルダー作成
条件:フラグ3が☑なら
プロセスビルダー作成
条件:フラグ3が☑なら
更新:フラグ4を☑にする
trigger DevObjectTrigger on DevObject__c (before update) {
for(DevObject__c d : Trigger.New) {
if (d.Flag2__c) {
d.Flag3__c = True;
}
if (d.Flag4__c) {
d.Flag5__c = True;
}
}
}
Apexトリガ作成
フラグ2が☑なら
フラグ3を☑にする
フラグ4が☑なら
フラグ5を☑にする
フラグ1☑→2☑ → ワークフロー
フラグ2☑→3☑ → トリガ
フラグ3☑→4☑ → プロセスビルダー
フラグ4☑→5☑ → トリガ
処理まとめ
フラグ1□ を ☑ にON!
実行
1周目
beforeトリガ
↓
afterトリガ
↓
ワークフロー
↓
プロセスビルダー
処理順
処理まとめ
フラグ1☑→2☑ → ワークフロー
フラグ2☑→3☑ → トリガ
フラグ3☑→4☑ → プロセスビルダー
フラグ4☑→5☑ → トリガ
2周目
beforeトリガ
↓
afterトリガ
↓
ワークフロー
↓
プロセスビルダー
3周目
beforeトリガ
↓
afterトリガ
↓
ワークフロー
↓
プロセスビルダー
trigger DevObjectTrigger on DevObject__c (before update) {
system.debug(‘てすと’);
for(DevObject__c d : Trigger.New) {
if (d.Flag2__c) {
d.Flag3__c = True;
}
if (d.Flag4__c) {
d.Flag5__c = True;
}
}
}
デバグ追加してみる
1周目
beforeトリガ
↓
afterトリガ
↓
ワークフロー
↓
プロセスビルダー
処理順
2周目
beforeトリガ
↓
afterトリガ
↓
ワークフロー
↓
プロセスビルダー
3周目
beforeトリガ
↓
afterトリガ
↓
ワークフロー
↓
プロセスビルダー
無駄にいっぱい処理される
↓
ガバナ制限やら、動き重たいやら
いろいろ問題
処理はなるべく
標準ツール or トリガ
どっちかでまとめる!
- どちらのほうが良いという訳ではない
- 標準機能をしっかり熟知した上で最適な選択を行う
- なるべく処理をどちらかにまとめる
まとめ
以上
ありがとうございました
資料参考
Salesforce Developer Group
ルーキー会 様
めっちゃ参考にさせてもらいました。
ありがとうございました!!
改めてコミュニティのご挨拶
京都の開発者向け
デベロッパーグループ
立ち上げました
Kyoto Salesforce
Developers Group[ ]
- -
京都以外の方でも大歓迎
開発者以外でも大歓迎
Salesforceに興味がある人なら
誰でも大歓迎
グループ立ち上げやイベント開催において、
どちらも初めてで、右も左もわからない状態ですが、
今後京都にてSalesforceを盛り上げていきたいと思います!!
みなさまのご助力を頂くこともあるかとございますが、
どうぞよろしくお願いいたします。
Kyoto Salesforce Developers Group
桑山 佳也
Trailblazerコミュニティに参加
Kyoto Salesforce Developers
Group で検索!
「参加」よろしくお願いします!!
質疑応答
本日は
ありがとうございました
Apexトリガと標準自動化プロセスの違い

Apexトリガと標準自動化プロセスの違い