<DAY217>トリガーなのか、プロセスビルダーなのか(使い分け)
●9/26(木)
●学習日数 217日
●学習時間(本日)4時間
●累計学習時間 922.0時間
●一日あたりの平均学習時間 4.28時間
プロセスビルダーとAPEXトリガーの使い分け
基本、プロセスビルダーでできる事はプロセスビルダーで設定する。
できない事はAPEXでコードを書く。
何ができて、できないのかを整理して把握する必要がある。
プロセスビルダーでできる事
(例)
Account checkbox__cがtureの時に
Accountの郵便番号(請求先)のデーターを郵便番号(納入先)とコピーする。
trailheadでAPEXで実行させたトリガーはわざわざコード書かなくても実行できる。
コードで書くとこんな感じになる。
trigger TestAccount1 on Account (before insert,before update) { for(Account a :trigger.new){ if(a.checkbox__c==true){ a.ShippingPostalCode = a.BillingPostalCode; } } }
プロセスビルダーでできない事
(例)
Accountとひもづくopportunityがない時に、
商談結果にAccountのnameと文字列の結合した表題の表示
そのほか項目を追加し、レコードを作成する。
(1)Accountとひもづくopportunityの数を探すのはできない。(親→子)の参照。レコードがない
(2)Accountの名前を参照し、商談の表題に書き込むのはできるが,文字列も追加して書き込むのはできない。
このような場合はAPEXのコードをかく。
trigger TestAccount2 on Account (after insert,after update) { List<Opportunity> opps = new List<Opportunity>(); List<Account> accs = [SELECT Id,(SELECT Id FROM Opportunities) FROM Account WHERE Id IN :Trigger.New AND Id NOT IN (SELECT AccountId FROM Opportunity)]; for(Account a : accs){ opps.add(new Opportunity( Name=a.Name + '商談', StageName='Prospecting', CloseDate=System.today().addMonths(1), AccountId=a.Id )); } if(opps.size() > 0){ insert opps; } }
結論
SOQLを用いて、関連するデーターのみを更新するなどができない。
関連するデーターと同じのを入力ならできるが、同じもの+’文字列’はできない。