コンテンツにスキップ

共有モデル

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
  • OWD: Private
  • 共有メカニズム: ObjectTeamMember__Shareを介したカスタム共有
  • RowCause: ManualAccess__c

チームメンバーが追加されると、システムはObjectTeamMember__Shareレコードを作成し、チームメンバーが自分のチームメンバーシップレコードを表示できるようにします。

  • OWD: Public Read Only
  • すべてのユーザーが設定を読み取ることができます(コンポーネントのレンダリングに必要)
  • 管理者のみが設定を変更できます
  • 要件: オブジェクトはPrivateまたはPublic Read OnlyのOWDを持っている必要があります
  • 共有メカニズム: 標準の[Object]Shareテーブル(例:AccountShareCaseShare)を介して
  • RowCause: Manual

チームメンバーがアクセスレベルとともに追加されると、Salesforce共有レコードアクセスにマッピングされます:

ObjectTeamMember__c Access_Level__c[Object]Share AccessLevel説明
Read OnlyReadチームメンバーはレコードを表示できます
Read/WriteEditチームメンバーはレコードを表示および編集できます

共有レコードのライフサイクル

Section titled “共有レコードのライフサイクル”

チームメンバーが追加されたとき:

  1. ObjectTeamMember__cレコードが挿入されます
  2. トリガーが起動し、ShareRecordQueueableをエンキューします
  3. Queueableが2つの共有レコードを作成します:
    • 親共有: ユーザーに親レコードへのアクセスを付与する[Object]Shareレコード
    • チームメンバー共有: ユーザーに自分のチームメンバーシップを表示可能にするObjectTeamMember__Shareレコード

チームメンバーのアクセスレベルが変更されたとき:

  1. ObjectTeamMember__cレコードが更新されます
  2. トリガーが起動し、ShareRecordQueueableをエンキューします
  3. Queueableが古い共有を削除し、更新されたアクセスレベルで新しいものを作成します

チームメンバーが削除されたとき:

  1. ObjectTeamMember__cレコードが削除されます
  2. トリガーが起動し、ShareRecordQueueableをエンキューします
  3. Queueableが両方の共有レコード(親とチームメンバー)を削除します

共有設定がトグルされたとき:

  • 無効化: SharingRecalculationBatchがそのオブジェクトのすべての共有レコードを削除します
  • 再有効化: SharingRecalculationBatchがすべての既存のチームメンバーの共有レコードを再作成します

サポートされている共有オブジェクト

Section titled “サポートされている共有オブジェクト”
オブジェクト共有テーブル
AccountAccountShare
ContactContactShare
CaseCaseShare
LeadLeadShare
OpportunityOpportunityShare
CampaignCampaignShare
OrderOrderShare

カスタムオブジェクトは次のパターンに従います:ObjectName__cObjectName__Share

システムは標準オブジェクトのハードコードされたホワイトリストを使用し、カスタムオブジェクトの共有テーブル名を自動的に導出します。

  • Salesforce Enterprise Edition以上(共有モデルサポートのため)
  • オブジェクトは共有の恩恵を受けるためにPrivateまたはPublic Read OnlyのOWDを持っている必要があります
  • ユーザーには適切なPermission Setが割り当てられている必要があります
  • ユーザーには基本オブジェクトアクセスが必要です(例:アカウントチームを使用するにはアカウントの読み取りアクセス)