Usted está aquí:
Modificar el flujo de datos basándose en la seguridad a nivel de filas.
Ahora es el momento de modificar el archivo de definición de flujo de datos para tener en cuenta el predicado.
Ediciones necesarias
| Disponible en Salesforce Classic y Lightning Experience. |
| Disponible con CRM Analytics, que está disponible por un costo adicional en Enterprise Edition, Performance Edition y Unlimited Edition. Está disponible además en Developer Edition. |
En este escenario tiene que realizar cambios en el flujo de datos basándose en el predicado.
- Agregue una columna en el conjunto de datos que almacene una lista separada por comas de los Id. de funciones de todos los principales de cada propietario de oportunidad. Cuando definió el predicado en el paso anterior, hizo referencia temporalmente a esta columna como “ParentRoleIDs”. Para agregar la columna, rediseñe el flujo de datos como se muestra en el siguiente diagrama:

El nuevo diseño de flujo de datos contiene los siguientes cambios:
- Extrae los Id. de funciones del objeto UserRole.
- Utilice la transformación Flatten para generar una columna que almacena una lista separada por comas de los Id. de funciones de todos los principales de cada usuario. Cuando determinó el predicado en el paso anterior, hizo referencia temporalmente a esta columna como “ParentRoleIDs”.
- Vincule la nueva columna al conjunto de datos OppRoles.
- Agregue el predicado a la transformación Register que registra el conjunto de datos OppRoles.
El flujo de datos se modifica como se muestra a continuación.
{
"Extract_Opportunity": {
"action": "sfdcDigest",
"parameters": {
"object": "Opportunity",
"fields": [
{ "name": "Id" },
{ "name": "Name" },
{ "name": "Amount" },
{ "name": "StageName" },
{ "name": "AccountId" },
{ "name": "OwnerId" }
]
}
},
"Extract_User": {
"action": "sfdcDigest",
"parameters": {
"object": "User",
"fields": [
{ "name": "Id" },
{ "name": "Username" },
{ "name": "LastName" },
{ "name": "FirstName" },
{ "name": "Name" },
{ "name": "CompanyName" },
{ "name": "Division" },
{ "name": "Department" },
{ "name": "Title" },
{ "name": "Alias" },
{ "name": "CommunityNickname" },
{ "name": "UserType" },
{ "name": "UserRoleId" }
]
}
},
"Extract_UserRole": {
"action": "sfdcDigest",
"parameters": {
"object": "UserRole",
"fields": [
{ "name": "Id" },
{ "name": "ParentRoleId" },
{ "name": "RollupDescription" },
{ "name": "OpportunityAccessForAccountOwner" },
{ "name": "CaseAccessForAccountOwner" },
{ "name": "ContactAccessForAccountOwner" },
{ "name": "ForecastUserId" },
{ "name": "MayForecastManagerShare" },
{ "name": "LastModifiedDate" },
{ "name": "LastModifiedById" },
{ "name": "SystemModstamp" },
{ "name": "DeveloperName" },
{ "name": "PortalAccountId" },
{ "name": "PortalType" },
{ "name": "PortalAccountOwnerId" }
]
}
},
"Flatten_UserRole": {
"action": "flatten",
"parameters": {
"multi_field": "Roles",
"parent_field": "ParentRoleId",
"path_field": "RolePath",
"self_field": "Id",
"source": "Extract_UserRole"
}
},
"Augment_User_FlattenUserRole": {
"action": "augment",
"parameters": {
"left": "Extract_User",
"left_key": [
"UserRoleId"
],
"relationship": "Role",
"right": "Flatten_UserRole",
"right_key": [
"Id"
],
"right_select": [
"Roles",
"RolePath"
]
}
},
"Augment_Opportunity_UserWithRoles": {
"action": "augment",
"parameters": {
"left": "Extract_Opportunity",
"left_key": [
"OwnerId"
],
"right": "Augment_User_FlattenUserRole",
"relationship": "Owner",
"right_select": [
"Name",
"Role.Roles",
"Role.RolePath"
],
"right_key": [
"Id"
]
}
},
"Register": {
"action": "sfdcRegister",
"parameters": {
"alias": "OppRoles",
"name": "OppRoles",
"source": "Augment_Opportunity_UserWithRoles",
"rowLevelSecurityFilter": "'Owner.Role.Roles' == \"$User.UserRoleId\" || 'OwnerId' == \"$User.Id\""
}
}
}Nota En este ejemplo, el conjunto de datos tiene columnas Owner.Role.Roles y OwnerId. Un usuario puede ver los valores de estas columnas de todos los registros a los que tienen acceso.
¿Resolvió este artículo su problema?
¡Háganos saber cómo podemos mejorar!

