Pular para o conteúdo

Modelo de Compartilhamento

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
  • Mecanismo de compartilhamento: Compartilhamento personalizado via ObjectTeamMember__Share
  • RowCause: ManualAccess__c

Quando um membro da equipe é adicionado, o sistema cria um registro ObjectTeamMember__Share para que o membro da equipe possa ver seu próprio registro de associação de equipe.

  • OWD: Public Read Only
  • Todos os usuários podem ler a configuração (necessário para renderização do componente)
  • Apenas administradores podem modificar configurações
  • Requisito: Objetos devem ter OWD Private ou Public Read Only
  • Mecanismo de compartilhamento: Via tabelas [Object]Share padrão (ex: AccountShare, CaseShare)
  • RowCause: Manual

Quando um membro da equipe é adicionado com um nível de acesso, ele mapeia para o acesso do registro de compartilhamento do Salesforce:

ObjectTeamMember__c Access_Level__c[Object]Share AccessLevelDescrição
Read OnlyReadMembro da equipe pode visualizar o registro
Read/WriteEditMembro da equipe pode visualizar e editar o registro

Quando um membro da equipe é adicionado:

  1. Registro ObjectTeamMember__c é inserido
  2. Trigger dispara e enfileira ShareRecordQueueable
  3. Queueable cria dois registros de compartilhamento:
    • Parent share: Registro [Object]Share dando ao usuário acesso ao registro pai
    • Team member share: Registro ObjectTeamMember__Share dando ao usuário visibilidade de sua associação de equipe

Quando o nível de acesso de um membro da equipe muda:

  1. Registro ObjectTeamMember__c é atualizado
  2. Trigger dispara e enfileira ShareRecordQueueable
  3. Queueable exclui o compartilhamento antigo e cria um novo com nível de acesso atualizado

Quando um membro da equipe é removido:

  1. Registro ObjectTeamMember__c é excluído
  2. Trigger dispara e enfileira ShareRecordQueueable
  3. Queueable exclui ambos os registros de compartilhamento (pai e membro da equipe)

Quando uma configuração de compartilhamento é alternada:

  • Desativada: SharingRecalculationBatch remove todos os registros de compartilhamento para esse objeto
  • Reativada: SharingRecalculationBatch recria registros de compartilhamento para todos os membros da equipe existentes
ObjetoTabela Share
AccountAccountShare
ContactContactShare
CaseCaseShare
LeadLeadShare
OpportunityOpportunityShare
CampaignCampaignShare
OrderOrderShare

Objetos personalizados seguem o padrão: ObjectName__cObjectName__Share

O sistema usa uma whitelist codificada para objetos padrão e deriva o nome da tabela share para objetos personalizados automaticamente.

  • Salesforce Enterprise Edition ou superior (para suporte ao modelo de compartilhamento)
  • Objetos devem ter OWD Private ou Public Read Only para se beneficiar do compartilhamento
  • Usuários precisam de permission set apropriado atribuído
  • Usuários precisam de acesso ao objeto base (ex: acesso de leitura Account para usar equipes Account)