レコード共有の情報はどこで管理されているのでしょうか?
Shareオブジェクト
Salesforceには、レコードの共有を管理するオブジェクトとして、各オブジェクトごとにShareオブジェクトなるものが存在しています。ShareオブジェクトのAPI名は以下のようにされています。
標準オブジェクトの場合:AccountShare, OpportunityShare, ContactShare, etc...
カスタムオブジェクトの場合:CustomObject名__Share
項目は以下の通りです。詳しくはこちらを参照してください。
項目 データ型 説明
ParentID 参照 共有するレコードのIDです。
UserOrGroupId 参照 共有先のユーザ・グループのIDです。
AccessLevel picklist レコードへどの程度アクセスできるのかを指定します。
値は以下の通りです。
Read:参照可能
Edit:編集可能
All:すべて可能
RowCause picklist 共有の理由です。主な値は以下の通りです。
Manual
Owner
Rule
...
以上の値以外の独自の理由も設定することができるらしいです。(Apex共有の理由)
このオブジェクトのレコードをどうにかして作成すれば、個人に対するレコードの共有ができるわけです。
このレコードを作成する方法はいくつか考えられます。
Data Loaderなどで、Shareオブジェクトのレコードを作成する。
Apexトリガを用いて、Shareオブジェクトのレコードを作成する。(これなら、個人レベルの共有も自動化できます。)
フローを用いて、Shareオブジェクトのレコードを作成する。(後述)
フローを使って共有を自動化する
レコードトリガーフローを使用して、Shareオブジェクトのレコードを作成することで、特定の状況におけるレコードの共有を自動化することができます。
レコード保存後のトリガーフローをします。
トリガー条件としては、「面接官項目が空白ではない・条件に一致する度にトリガ」でいいと思います。
キャンバスに配置する要素は「レコードを作成」要素だけでいいでしょう。面接官の変更とかを考慮すると、他の要素も検討したほうがいいんじゃないかなって思いますが。面倒なので今回はスルーしますが。
実際に作成した要素がこちらです。