Loading

Cómo usar el operador Not In dentro de Flow

Fecha de publicación: Apr 2, 2026
Descripción
En Salesforce, el acceso de los usuarios se puede ampliar mediante la asignación de conjuntos de permisos a usuarios que les proporcionen funciones o capacidades adicionales.

Existen tipos especiales de conjuntos de permisos que son propiedad de un perfil (IsOwnedByProfile). Estos conjuntos de permisos no se pueden quitar sin cambiar el perfil.

En este artículo de conocimiento, lo guiaremos por el proceso de utilizar un flujo para eliminar asignaciones de conjuntos de permisos mientras se garantiza que los conjuntos de propiedad de un perfil permanezcan intactos.

En este ejemplo, se utiliza el operador de flujo No incluido en que se introdujo en la versión Winter '23.
Solución
Modelo de objeto 
Antes de explorar el instructivo incluido en este artículo, consultemos el modelo de objeto para comprender cómo se gestionan las asignaciones de Conjuntos de permisos.

Permission Set Diagram.png

En Salesforce, una Licencia de conjunto de permisos representa una licencia que se puede asignar a un usuario sin cambiar su perfil. Una asignación de licencia de conjunto de permisos representa la relación entre un usuario y una licencia de conjunto de permisos. Un conjunto de permisos representa un grupo de permisos que se asignan a un usuario a través de una asignación de conjunto de permisos.

Debido al modelo de relación entre estos objetos, en específico, los conjuntos de permisos, las asignaciones de conjuntos de permisos y los usuarios en nuestro flujo, debemos eliminar los conjuntos de permisos que no sean de propiedad de un perfil con una asignación de conjunto de permisos relacionada con el usuario actual.

Déjese llevar con los flujos
 
En este caso, eliminaremos todas las asignaciones de conjuntos de permisos cuando un usuario se vuelva inactivo, además de los conjuntos de permisos en los que se cumpla la condición IsOwnedByProfile = TRUE.

En esta solución, los nombres de API, los tipos de flujos y otras opciones de configuración se establecerán de forma previa. Siéntase libre de ajustarlos para su caso de uso y extenderlos a las asignaciones de licencias de conjuntos de permisos. El atributo “IsOwnedByProfile” no existe en las asignaciones de licencias de conjuntos de permisos.
 
Paso 1: Vaya a Configuración de Salesforce, a través de Engranaje de configuración > Configuración.
 
Setup.png
 
Paso 2: Utilice Quick Find para buscar Flujos.
 
Quick Find.PNG
Paso 3: Pulse Flujos y, luego, en Flujo nuevo.
 
New Flow.png
 
Paso 4: Establezca Tipo de flujo como Desencadenado por registros y, luego, haga clic en Crear.
 
Record Trigger.png

Paso 5: Seleccione Usuario como el objeto y la condición como Un registro se encuentra actualizado.
 
Select Object.PNG
 
Paso 6: Establezca el flujo para que se ejecute cuando Se cumplen todas las condiciones (AND) y cuando IsActive es igual que {!$GlobalConstant.False}
           Set Entry.png
 
Paso 7: Establezca el flujo para que se ejecute Solo cuando un registro se actualiza para cumplir con los requisitos de condición y optimice el flujo para lo siguiente: Acciones y registros relacionados. Pulse Listo.
  
When to run the flow.png
Paso 8: Utilizando el botón +, agregue Componente Obtener registro para Obtener asignaciones de conjuntos de permisos para el usuario actual: 
a. Etiqueta: Obtener asignaciones de conjuntos de permisos
b. Nombre de API: Get_Permission_Set_Assignments
c. Descripción: Obtiene asignaciones de conjuntos de permisos para el usuario actual
d. Nombre del objeto: Asignación de conjuntos de permisos
e. Requisitos de condición: Se cumplen todas las condiciones (AND)
f. AssigneeId equals {!$Record.Id}
g. Orden de clasificación: Sin clasificar
h. Cuántos registros se deben almacenar: Todos los registros
i. Cómo almacenar datos de registros: Almacenar automáticamente todos los campos
 
Edit Get record.png
 
Paso 9: Utilice el botón + para agregar un elemento Decisión para que ejecute el próximo conjunto de acciones cuando se encuentren asignaciones de conjuntos de permisos: 
a. Etiqueta: ¿El usuario tiene conjuntos de permisos?
b. Nombre de API: Does_User_have_Permission_Sets
c. Descripción: Determina si implementar una medida en función de si el usuario tiene conjuntos de permisos asignados
d. Detalles de los resultados
i. Etiqueta: Verdadero
ii. Nombre de la API: Verdadero
iii. Requisitos de condición para ejecutar el resultado: Se cumplen todas las condiciones (AND)
iv. Recurso: {!Get_Permission_Set_Assignments} Is Null {!$GlobalConstant.False}
v. Cuándo ejecutar el resultado: Si se cumplen los requisitos de la condición
e. Detalles de los resultados
i. Etiqueta: Falso
 
Edit Decision.PNG
 
Edit Decision 2.png
 
Paso 10: En Ruta TRUE (Resultado) agregue componentes Obtener registros mediante + para que podamos obtener los conjuntos de permisos en los que IsOwnedByProfile = TRUE
a. Etiqueta: Obtener conjuntos de permisos de propiedad del perfil
b. Nombre de API: Get_Permission_Sets_Owned_by_Profile
c. Descripción: Obtiene todos los conjuntos de permisos en los que IsOwnedByProfile = TRUE
d. Nombre del objeto: Conjuntos de permisos
e. Requisitos de condición: Se cumplen todas las condiciones (AND)
f. IsOwnedByProfile Equals {!$GlobalConstant.True}
g. Orden de clasificación: Sin clasificar
h. Cuántos registros se deben almacenar: Todos los registros
i. Cómo almacenar datos de registros: Almacenar automáticamente todos los campos
 
image.png
 
Paso 11: Ahora, utilice el botón + para generar un bucle en torno a los conjuntos de permisos de propiedad del perfil.
a. Etiqueta: Generar un bucle en torno a los conjuntos de permisos de propiedad del perfil
b.  Nombre de la API: Loop_around_Permission_Sets_Owned_by_Profile
c. Descripción: Genera un bucle en torno a los conjuntos de permisos de propiedad del perfil
d. Variable de recopilación: {!Get_Permission_Sets_Owned_by_Profile}
e. Dirección: Del primer elemento al último elemento
 
image.png
 
Paso 12: Cree un recurso para utilizarlo en el bucle con el fin de almacenar Id. de conjuntos de permisos en los que El conjunto de permisos es de propiedad del perfil. Pulse el icono Caja de herramientas y, luego, Recurso nuevo. 
 
 
Paso 13: Configure el recurso de flujo como se muestra a continuación:
a. Tipo de recurso: Variable
b. Nombre de la API: PermissionSetsToKeep
c. Descripción: Almacena los Id. de los conjuntos de permisos que se deben excluir de la eliminación
d. Tipo de datos: Texto
e.  Permitir varios valores (recopilación): Marcado
f. Disponible para entrada: No marcado
g. Disponible para salida: No marcado
 
Edit variable.png
 
Paso 14: Utilice el botón + en el bucle para agregar un elemento de asignación:
a. Etiqueta: Agregar elemento actual a la recopilación de texto
b. Nombre de la API: Add_Current_Item_to_Text_Collection
c. Descripción: Agrega el elemento actual a la recopilación de texto
b. {!PermissionSetsToRemove} Add {!Loop_around_Permission_Sets_Owned_by_Profile.Id}
 
Edit assignment.png
 
Paso 15: Fuera del bucle, utilice el botón + para agregar un componente Eliminar registros:
a. Etiqueta: Eliminar asignaciones de conjuntos de permisos
b. Nombre de API: Delete_Permission_Set_Assignments
c. Descripción: Elimina las asignaciones de conjuntos de permisos que no son de propiedad del perfil
d. Cómo buscar registros para su eliminación: Especificar condiciones
e. Objeto: Asignación de conjuntos de permisos
f. Requisitos de condición para los registros que se deben eliminar: Se cumplen todas las condiciones (AND)
i. AssigneeId Equals {!$Record.Id}
ii. PermissionSetId Not In {!PermissionSetsToKeep}

image.png
 
Paso 16: Pulse Guardar
a. Etiqueta de flujo: Eliminar asignaciones de conjuntos de permisos
b. Nombre de API del flujo: Delete_Permission_Set_Assignments
c. Descripción: Elimina asignaciones de conjuntos de permisos cuando un usuario se vuelve inactivo
 
Save the Flow.png
 
Paso 17: Pulse Activar
 
Activate Flow.png
 
 
El flujo final debería verse de la siguiente manera una vez completado.




___________________________________


Escrito por: Tom Bassett | Líder de Respuestas de Salesforce
Tom Bassett es arquitecto de soluciones en Trigg Digital y cuenta con más de cinco años de experiencia en Salesforce Platform. Su objetivo es que los clientes saquen el máximo partido de sus soluciones de CRM, y transmite la cultura Ohana al ayudar a la Trailblazer Community con ideas de nuevas funciones y proporcionar respuestas a las preguntas publicadas. Dirige junto con otras personas el grupo London Architect Community y también contribuye en Salesforce Ben como autor experto.

Los envíos reflejan solo la opinión del usuario que hizo que el envío estuviera disponible y no las opiniones de Salesforce, independientemente de si el usuario está afiliado a Salesforce, y pueden contener o constituir productos, servicios, información, datos, contenido y otros materiales que pone a disposición un tercero u otro individuo en representación del tercero ("materiales de terceros"). Salesforce no controla ni respalda los materiales de terceros, incluidas su veracidad, validez, puntualidad, completitud, fiabilidad, integridad, calidad, legalidad, utilidad o seguridad, así como ninguno de los derechos de propiedad intelectual aplicables, ni se hace responsable de los elementos mencionados anteriormente. Los envíos realizados a través de tablones de mensajes o foros en respuesta a las preguntas publicadas, o que, de otra manera, pretenden servir de respuesta a alguna pregunta, incluidas las preguntas sobre Salesforce o los Programas, solo se publican a modo de conocimientos generales y nunca deben entenderse como respuestas a preguntas específicas (aunque una respuesta esté marcada como la "mejor" respuesta o de alguna otra forma similar). Deberá ponerse en contacto con el servicio de atención al cliente de Salesforce para obtener respuestas a sus preguntas específicas. Salesforce no tiene ningún control sobre los envíos, y no se hace responsable del uso o el mal uso (incluida su distribución) que de ellos hagan otras partes. 

Si tiene alguna duda, sumérjase en la sabiduría de nuestra Trailblazer Community aquí: 
https://trailhead.salesforce.com/es/trailblazer-community/feed
Número del artículo de conocimiento

000394118

 
Cargando
Salesforce Help | Article