Administrator

【レコードトリガフロー】 取引開始時にリードに紐づいたオブジェクトを受け継ぐ

Administrator
この記事は約3分で読めます。

こんにちは、アンダーソンです。
めちゃくちゃタイトル長いんですが、リードに何かしらのオブジェクトを関連させていて、取引開始する時に明示的に取引先責任者に引き継ぐとかすることがあるかもしれないですよね。

Apexだとそこまで難しくなくサクッとやってしまえる処理だったんですが、
これをフローを使って実現してみました。

スポンサーリンク

事前準備

まずはオブジェクトを準備します。

単純にリードと取引先を参照しているオブジェクトです。
特にこのオブジェクト自体に役割とかはないです。

フローを作成する

今回の要件ですが、取引開始したというのを取得する場合に下記の『取引開始済み』という項目を参照する必要があります。ちなみに取引開始に関する項目は下記の通りです。

ラベル名API参照名説明
取引開始済みIsConverted取引が開始されたかどうか。Boolean型で判定される。
取引開始日ConvertedDate取引開始をした日
取引開始済みの取引先 IDConvertedAccountId取引開始後の取引先ID
取引開始済みの取引先責任者 IDConvertedContactId取引開始後の取引先責任者ID
取引開始済みの商談 IDConvertedOpportunityId取引開始後の商談ID

さてではフローを作成していくのですが、この場合はレコードトリガフローでOKです。

条件などは下記の設定でOK。

で、まずはリードに紐づいているオブジェクトのレコードを全て取得します。
この際に注意しないといけないのが、このオブジェクトのレコードは単一ではなく複数ある可能性がある点ですね。

レコードトリガフローは処理が始まったレコードが『$Record』というグローバル変数に格納されていますのでそのIdを参照しているレコードを全部取得します。

この時に複数レコードあることを想定して、保存するレコードは全てのレコードにしておきましょう。

ループを使う

では先ほど取得したレコードを順番に更新していく必要がありますが、
フローでは複数のレコードに対して値を当てはめていくにはループ処理を使う必要があります。

先ほど取得に使ったコンポーネントを指定します。

次にループ内で順番に値を割り当てていきます。
その前にまず更新用の変数を用意します、単一と複数の変数を用意しておきましょう。

割り当ての際に単一のレコードにIdを割り当て、取引先責任者を割り当てて、コレクションに単一のレコードを追加するって流れでやっていきます。

ではループ内に割り当てを追加しましょう。

こんな感じですね。次にこの単一のレコードをコレクションに追加します。

これでOKです。

レコードを更新する

ではループを出たところで先ほど格納したレコードコレクションを更新します。

なぜこんなことをするのかですが、基本的にはフローはApexと同じく
ガバナ制限の影響を受けます。(ガバナ制限がわからない人はここをチェック!)
ループ内でレコード取得をしたり(SOQLの発行)、レコードの作成更新(DML)などは
レコードの数によってはガバナ制限にかかりエラーで落ちる可能性がありますので、基本的に避けます。

なので、ループ内では変数に対して割り当てをしてコレクション変数に対して割り当てたレコードを追加していきました。
最後にこのコレクションを更新するだけでいい状態にしておいた感じですね。

これでOKです。

最終的なフローはこんな感じ。

では実際に動かしてみましょう。

テストしました

リードにTest3というレコードが3つ紐づいています。
この状態で取引の開始をします。

成功!

作成された取引先責任者の関連リストをみてみると。。

引き継がれてますね!
成功です!

まとめ

レコードトリガフローができるようになったおかげで簡単に
上記のようなことができるようになりました。

やってみると簡単にいろんなことができるフローはほんとにおすすめですね!