共有モデル
共有アーキテクチャ
Section titled “共有アーキテクチャ”flowchart TB
subgraph SHARING["SHARING ARCHITECTURE"]
subgraph OTM["ObjectTeamMember__c"]
OTM1["OWD: Private"]
OTM2["Sharing: Custom via ObjectTeamMember__Share"]
OTM3["RowCause: ManualAccess__c"]
end
subgraph TSC["Team_Sharing_Config__c"]
TSC1["OWD: Public Read Only"]
TSC2["All users can read, admins modify"]
end
subgraph PARENT["Parent Objects<br/>(Account, Case, etc.)"]
P1["Requires: Private or Public Read Only OWD"]
P2["Sharing: Via [Object]Share"]
P3["RowCause: Manual"]
end
end
共有の仕組み
Section titled “共有の仕組み”ObjectTeamMember__c
Section titled “ObjectTeamMember__c”- OWD: Private
- 共有メカニズム:
ObjectTeamMember__Shareを介したカスタム共有 - RowCause:
ManualAccess__c
チームメンバーが追加されると、システムはObjectTeamMember__Shareレコードを作成し、チームメンバーが自分のチームメンバーシップレコードを表示できるようにします。
Team_Sharing_Config__c
Section titled “Team_Sharing_Config__c”- OWD: Public Read Only
- すべてのユーザーが設定を読み取ることができます(コンポーネントのレンダリングに必要)
- 管理者のみが設定を変更できます
親オブジェクト
Section titled “親オブジェクト”- 要件: オブジェクトはPrivateまたはPublic Read OnlyのOWDを持っている必要があります
- 共有メカニズム: 標準の
[Object]Shareテーブル(例:AccountShare、CaseShare)を介して - RowCause: Manual
アクセスレベルマッピング
Section titled “アクセスレベルマッピング”チームメンバーがアクセスレベルとともに追加されると、Salesforce共有レコードアクセスにマッピングされます:
| ObjectTeamMember__c Access_Level__c | [Object]Share AccessLevel | 説明 |
|---|---|---|
| Read Only | Read | チームメンバーはレコードを表示できます |
| Read/Write | Edit | チームメンバーはレコードを表示および編集できます |
共有レコードのライフサイクル
Section titled “共有レコードのライフサイクル”チームメンバーが追加されたとき:
ObjectTeamMember__cレコードが挿入されます- トリガーが起動し、
ShareRecordQueueableをエンキューします - Queueableが2つの共有レコードを作成します:
- 親共有: ユーザーに親レコードへのアクセスを付与する
[Object]Shareレコード - チームメンバー共有: ユーザーに自分のチームメンバーシップを表示可能にする
ObjectTeamMember__Shareレコード
- 親共有: ユーザーに親レコードへのアクセスを付与する
チームメンバーのアクセスレベルが変更されたとき:
ObjectTeamMember__cレコードが更新されます- トリガーが起動し、
ShareRecordQueueableをエンキューします - Queueableが古い共有を削除し、更新されたアクセスレベルで新しいものを作成します
チームメンバーが削除されたとき:
ObjectTeamMember__cレコードが削除されます- トリガーが起動し、
ShareRecordQueueableをエンキューします - Queueableが両方の共有レコード(親とチームメンバー)を削除します
バルク再計算
Section titled “バルク再計算”共有設定がトグルされたとき:
- 無効化:
SharingRecalculationBatchがそのオブジェクトのすべての共有レコードを削除します - 再有効化:
SharingRecalculationBatchがすべての既存のチームメンバーの共有レコードを再作成します
サポートされている共有オブジェクト
Section titled “サポートされている共有オブジェクト”標準オブジェクト
Section titled “標準オブジェクト”| オブジェクト | 共有テーブル |
|---|---|
| Account | AccountShare |
| Contact | ContactShare |
| Case | CaseShare |
| Lead | LeadShare |
| Opportunity | OpportunityShare |
| Campaign | CampaignShare |
| Order | OrderShare |
カスタムオブジェクト
Section titled “カスタムオブジェクト”カスタムオブジェクトは次のパターンに従います:ObjectName__c → ObjectName__Share
システムは標準オブジェクトのハードコードされたホワイトリストを使用し、カスタムオブジェクトの共有テーブル名を自動的に導出します。
デプロイ要件
Section titled “デプロイ要件”- Salesforce Enterprise Edition以上(共有モデルサポートのため)
- オブジェクトは共有の恩恵を受けるためにPrivateまたはPublic Read OnlyのOWDを持っている必要があります
ユーザー要件
Section titled “ユーザー要件”- ユーザーには適切なPermission Setが割り当てられている必要があります
- ユーザーには基本オブジェクトアクセスが必要です(例:アカウントチームを使用するにはアカウントの読み取りアクセス)