対象と対象間の関係についてですが、及びトリガーでお互いに参照機能実現を紹介させていただきたいんです。
対象と対象間の関係、または表と表間の関係ですね。(table)
一対一
一対多
多対多(今回)
Javaと似合いますね。
多対多の場合は、新しい表を新規しないといけない、
例えば、
表と表はお互いに参照したいです、一対一、一対多の場合は、フローとかプロセスビルダーとかでできますでしょうね。
けれども、多対多はちょっと違いますので、新しい表が作らないと、
Table1表のプライマリキー (primary key)、それはsalesforceのIDです。key1にしよう。
Table2表のプライマリキー (primary key)、それはsalesforceのIDです。key2にしよう。
新しい表Table3の中に、とりあえず、プライマリキーkey3にしよう、あとはkey1とkey2とも必要です。(key1はTable1表のデータと繋がり、key2はTable2表のデータと繋がり)
早速ですが、表と表はお互いに参照とのことでしたので、どういう意味?勝手に”你中有我,我中有你”と呼ばれています。
要望として:
レコードAの中にレコードBを作成してから、レコードBの中にレコードAが存在します(Trigger)。
レコードAの中にレコードCを作成してから、レコードCの中にレコードAが存在します(Trigger)。
レコードAの中にレコードDを作成してから、レコードDの中にレコードAが存在します(Trigger)。
レコードBの中にレコードCを作成してから、レコードCの中にレコードBが存在します(Trigger)。
A⇒B、C、D
B⇒A、C
C⇒A、B
D⇒A
...
...
Table3はTable1とTable2との関連レストとして表示されています。
key1は参照元、(参照Table1)
key2は参照先、(参照Table2)
参照元と参照先が交換処理で以上の問題が解決できます。すべての処理は新しい表Table3の中に処理しています。
ポイントは登録後(after insert)処理ですね、繰り返してinsertのはダメなんです。だから、Flagとしては大丈夫です、一回のみinsertです。
サンプルコードはご参考になれば幸いです。
====*======================================
Table3Trigger.apxt
trigger Table3Trigger onTable3__c (after insert) {
Table3TriggerHandler handler = new Table3TriggerHandler();
if(Trigger.isInsert && Trigger.isAfter){
handler.onAfterInsert(Trigger.new, Trigger.newMap);
}
Table3TriggerHandler .apxc
public class Table3TriggerHandler {
public static boolean m_isExecuting = true;
// 登録後処理
public void onAfterInsert(List<Table3__c> newObjs, Map<ID, Table3__c> newObjMap){
ChangeDetail(newObjs);
}
}
// お互いに参照 共通処理
public void ChangeDetail(List<Table3__c> newObjs){
if(Table3TriggerHandler.m_isExecuting){ //Flagがないと、salesforceの制限で16回を繰り返、エラーになっちゃうから
// if was executed during the same context
// avoid recursion(再帰を避ける)
Table3TriggerHandler.m_isExecuting = false;
List<Table3__c> ts = new List<Table3__c>();
for (Table3__c t : newObjs) {
Table3__c t3 = new Table3__c();
if(String.isNotBlank(t.key2__c)){
//参照元と参照先が交換処理
//参照元=参照先
t3.key1__c = t.key2__c;
//参照先=参照元
t3.key2__c = t.key1__c;
ts.add(t3);
}
}
insert ts;
}
}
======================================*====
以上となります。
もしかしたら、毎日、昨日の自分より今日の自分は良くなるなら、十分だと思います。
何より大事なことは、人生を楽しむこと、幸せを感じること、それだけです。
Latest posts by zchao (see all)
- リストビューのカラムにリンクできるAccount Ownerを追加 - 2020年6月12日
- Salesforce環境構造一覧 - 2020年5月10日
- Salesforce プラットフォーム紹介 - 2020年5月9日
转载请注明:zchao博客之家 » カスタムオブジェクトお互いに参照処理とafter insertの中に自分をinsert処理(一回のみ)ーTriggerHandler