2021.06.07

レコードトリガフローでレコード共有を自動化しよう

  • このエントリーをはてなブックマークに追加
  • follow us in feedly
gettyimages (20902)

はじめに

レコードアクセス制御について、Salesforceフローの一種であるレコードトリガフローを使ったレコード共有を紹介します。

ロール階層や共有ルールでは対応できない場合の選択肢の一つとして、参考になればと思います。

目次

  • 作成するレコードトリガフローの要件(想定)
  • レコードトリガフローを作ってみよう①環境準備
  • レコードトリガフローを作ってみよう②フロー作成~レコード共有
  • レコードトリガフローを作ってみよう③動作確認
  • レコードトリガフローを作ってみよう④エラー対応
  • 終わりに

作成するレコードトリガフローの要件(想定)

以下要件があったと想定してレコードトリガフローを作成します。

 1. 取引先に納入した部品を管理するカスタムオブジェクト「納入部品」を追加する

 2. 納入部品は非公開とし、特定の公開グループに対して参照させる

 3. 対象となる公開先グループは、グループ名が納入部品に関連する取引先.公開先グループ名(カスタム項目)と一致するものとする

 4. アクセス権の付与タイミングはレコードが新規作成されたタイミングとする


納入部品オブジェクトに「公開先グループ名」があれば共有ルールで対応できますが、別オブジェクトを参照する必要があるためレコードトリガフローを使います。

1.カスタムオブジェクト(納入部品)

2.公開グループ(サンプルデータ)

3-1.公開先グループ名(カスタム項目)

3-2.取引先(サンプルデータ)

レコードトリガフローを作ってみよう①環境準備

今回は開発環境としてTrailheadのハンズオン組織を使用します。

TrailheadはSaleceforce社が提供している無償のe-learningサービスなので、まだ作成されていない場合はぜひハンズオン組織を作成してみてください。

レコードトリガフローを作ってみよう②フロー作成

設定画面のフローから新規フローを作成していきます。

フロー新規作成


最初にフローの種類(コア)を指定します。

レコードが作成されたタイミングで実行したいので、レコードトリガフローを選びます。

コア選択画面


フローの記述方法は自由形式と自動レイアウトがありますが、今回は自動レイアウトを使用します。

(後から変更できます)

レイアウト選択


「オブジェクトを選択」をクリックします

フロー(オブジェクト選択)


「オブジェクト」を納入部品に指定し、「条件の要件」をなしに変更します。

オブジェクト選択


共有先の公開グループを取得する処理を追加していきましょう

フローの開始と終了の間にある「+」から、「レコードを取得」をクリックします

要素追加(レコード取得)


表示ラベル、API参照名を入力した後に取得したいオブジェクトを選択します。

公開グループのオブジェクト名はグループ(Group)になります。

レコード取得(オブジェクト選択)


公開グループ名を条件項目とするので、「項目」はNameとします。

検索値となる公開先グループ名は以下の順で選択します。

  • $Record(DeliverredParts__c)
    • Account__r(取引先)
      • PublishedGroupName__c(公開先グループ名)

絞り込み条件追加①


入力後、表示名が$Record > 取引先 > 公開先グループ名となることを確認して完了をクリックします

絞り込み条件追加②


公開グループが取得できたので、次に納入部品へのレコード共有を行います。

先ほど追加したレコード取得の下にある「+」から、「レコードを作成」をクリックします。

要素追加(レコード作成)


レコード作成と同様に表示ラベル、API参照名を入力します。

レコード項目の設定方法「個別のリソースおよびリテラル値を使用」に変更し、作成するオブジェクトを選択します。

「納入部品」と入力すると、納入部品の共有オブジェクトに該当する共有:納入部品が候補に出るので選択します。

新規レコード作成(オブジェクト選択)

Tips:共有オブジェクトについて

各オブジェクトの共有設定はそれぞれ対応する共有オブジェクトで管理されています。

共有オブジェクトの詳細についてはApex を使用したレコードの共有を参照してください。


次に設定値を登録します。

全部で4項目あるので「項目を追加」で入力欄を追加し、項目名・設定値を入力します。

項目名 説明 設定値
ParentId 共有を行う対象となる納入部品レコードのIdを設定します $Record > カスタムオブジェクトID
UserOrGroupId 共有先のユーザIdまたは公開グループIdを設定します GetPublicGroupId(※) グループ > グループID
※作成したレコード取得のAPI参照名
RowCause アクセス権の付与理由を設定します Manual
AccessLevel 付与するアクセスレベルを設定します。
参照のみ(Read)または参照・更新(Edit)を指定します
Read

新規レコード作成(項目設定)

レコードトリガフローを作ってみよう③動作確認

これで取得した公開グループをもとに共有レコードを作成するフローが作成できました。

これから動作テストを行いますが、レコードトリガフローではデバッグ機能が使えないため、実際にレコードを登録して確認します。

フロー(要素追加後)

フローを保存し、有効化することで動作可能になります。

フロー保存

フロー有効化


納入部品レコードを作成し、レコードトリガフローが動作するか確認します。

動作確認①

納入部品レコード登録後、共有画面を表示します。

動作確認②

取引先「株式会社テラスカイ」に登録されている公開先グループ名「SH001」が共有先として登録されています。

レコード共有画面

レコードトリガフローを作ってみよう④エラー対応

次はエラー発生時の回避処理を実装していきます。

レコードトリガフローは処理中にエラーが発生した場合にレコードの登録も中断されてしまうため、エラー対策は必須になります。

レコードトリガフローでエラー


先ほど作成したレコードトリガフローを修正していきましょう。

既にフローを有効化している場合、そのままでは修正できないため、一度「別名で保存」を行います。

フロー修正(別名保存)


別名保存することで、新しいバージョンとして修正ができます。

別名保存


既に作成している「レコード取得」から「障害パスを追加」をクリックします。

障害パス追加


赤い点線で障害発生時のフローが追加されました。

障害パス追加後


エラーが発生したことを通知するChatter投稿を追加します。

追加した障害パスにアクション要素を追加し、「Chatterに投稿」のアクションを選択します。

Chatter通知追加

障害パスを追加したことで、フローでエラーが発生してもレコード登録は中断することなく登録されます。


同様に「納入部品のレコード」作成に対しても障害パスとChatter通知を追加し、保存と有効化を行います。

フロー(エラー対応後)

おわりに

レコード共有をレコードトリガフローで実装してみました。

今回はシンプルな要件でしたが、条件分岐やループ処理を追加することでより複雑な要件にも対応することができます。

  • 納入部品レコード更新時にレコード共有を再設定する
  • 条件分岐でより複雑な条件に基づいたレコード共有に対応する
  • ループ処理による複数の共有レコードを作成する

Salesforceフローについては別記事【Salesforce フロー】とは?初心者なら知っておきたい5つのテクでもまとめていますので、そちらもご覧いただければと思います。

ロール階層、共有ルールでは対応できない場合に、レコードトリガフローを一度試してみてください。

72 件
     
  • banner
  • banner

関連する記事