Modelo de Uso Compartido
Cómo Flexible Team Share gestiona el uso compartido de registros y los niveles de acceso.
Arquitectura de Uso Compartido
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
Cómo Funciona el Uso Compartido
ObjectTeamMember__c
- OWD: Private
- Mecanismo de uso compartido: Uso compartido personalizado mediante
ObjectTeamMember__Share - RowCause:
ManualAccess__c
Cuando se agrega un miembro del equipo, el sistema crea un registro ObjectTeamMember__Share para que el miembro del equipo pueda ver su propio registro de membresía de equipo.
Team_Sharing_Config__c
- OWD: Public Read Only
- Todos los usuarios pueden leer la configuración (necesario para la renderización del componente)
- Solo los administradores pueden modificar las configuraciones
Objetos Padre
- Requisito: Los objetos deben tener OWD Private o Public Read Only
- Mecanismo de uso compartido: Mediante tablas estándar
[Object]Share(por ejemplo,AccountShare,CaseShare) - RowCause: Manual
Mapeo de Nivel de Acceso
Cuando se agrega un miembro del equipo con un nivel de acceso, se mapea al acceso del registro compartido de Salesforce:
| ObjectTeamMember__c Access_Level__c | [Object]Share AccessLevel | Descripción |
|---|---|---|
| Read Only | Read | El miembro del equipo puede ver el registro |
| Read/Write | Edit | El miembro del equipo puede ver y editar el registro |
Ciclo de Vida del Registro Compartido
Crear Usos Compartidos
Cuando se agrega un miembro del equipo:
- Se inserta el registro
ObjectTeamMember__c - Se dispara el trigger y se encola
ShareRecordQueueable - Queueable crea dos registros compartidos:
- Parent share: Registro
[Object]Shareque otorga al usuario acceso al registro padre - Team member share: Registro
ObjectTeamMember__Shareque otorga al usuario visibilidad de su membresía de equipo
- Parent share: Registro
Actualizar Usos Compartidos
Cuando cambia el nivel de acceso de un miembro del equipo:
- Se actualiza el registro
ObjectTeamMember__c - Se dispara el trigger y se encola
ShareRecordQueueable - Queueable elimina el uso compartido antiguo y crea uno nuevo con el nivel de acceso actualizado
Eliminar Usos Compartidos
Cuando se elimina un miembro del equipo:
- Se elimina el registro
ObjectTeamMember__c - Se dispara el trigger y se encola
ShareRecordQueueable - Queueable elimina ambos registros compartidos (padre y miembro del equipo)
Recálculo Masivo
Cuando se alterna una configuración de uso compartido:
- Desactivado:
SharingRecalculationBatchelimina todos los registros compartidos para ese objeto - Reactivado:
SharingRecalculationBatchrecrea registros compartidos para todos los miembros del equipo existentes
Objetos Share Soportados
Objetos Estándar
| Objeto | Tabla Share |
|---|---|
| Account | AccountShare |
| Contact | ContactShare |
| Case | CaseShare |
| Lead | LeadShare |
| Opportunity | OpportunityShare |
| Campaign | CampaignShare |
| Order | OrderShare |
Objetos Personalizados
Los objetos personalizados siguen el patrón: ObjectName__c → ObjectName__Share
El sistema usa una lista blanca codificada para objetos estándar y deriva el nombre de la tabla share para objetos personalizados automáticamente.
Requisitos de Implementación
Requisitos de Organización
- Salesforce Enterprise Edition o superior (para soporte del modelo de uso compartido)
- Los objetos deben tener OWD Private o Public Read Only para beneficiarse del uso compartido
Requisitos de Usuario
- Los usuarios necesitan el Permission Set apropiado asignado
- Los usuarios necesitan acceso al objeto base (por ejemplo, acceso de lectura de Account para usar equipos de Account)