Última actualización el 8 de mayo de 2022 por Rakesh Gupta
Gran idea o pregunta duradera:
¿Cómo puede eliminar automáticamente las tareas abiertas relacionadas con la oportunidad y la(s) cotización(es) cuando una oportunidad está marcada como cerrada perdida?
Objetivos:
Después de leer esta publicación de blog, el lector podrá:
- Comprender @InvocableMethod e InvocableVariable Anotación
- Obtenga el tipo de sObject en el código Apex
- Pase la lista de recordIds al vértice invocable
- Llame a la clase de Apex invocable que toma una lista de ID
- Eliminar registros de forma permanente mediante Apex
- Llamar al método invocable desde el flujo
Arda Turan trabaja como administradora de sistemas en Gurukul on Cloud (GoC). Ha recibido un requisito de la gerencia de que cada vez que se actualice una oportunidad con etapa cerrada perdida, haga lo siguiente:
- Eliminar tareas abiertas en la oportunidad actual
- Eliminar tareas abiertas de presupuestos relacionados
Enfoque de Campeón de Automatización (I-do):
- El flujo activado por registro no admite la cláusula IN en el elemento get
- El flujo activado por registros no nos permite eliminar registros de forma definitiva
- y mucho más
para llamar a un
Apex , agregue la acción Llamar a Apex a su proceso y seleccione una clase de Apex con una anotación de método @invocable . Significa que nos permiten extender el Flujo de Salesforce al escribir código Apex que cumple con ciertos criterios y luego invocar el Apex desde nuestros Flujos . Si la clase contiene una o más variables invocables , ingrese valores manualmente o valores de campo de referencia de un registro relacionado. La anotación @InvocableMethod admite operaciones masivas.Antes de discutir la solución, permítame mostrarle un diagrama de un flujo de proceso de alto nivel. Dedique unos minutos a repasar el siguiente diagrama de flujo y compréndalo.
Comencemos a construir este proceso de automatización.Práctica guiada (nosotros hacemos):
Hay 2 pasos para resolver el requisito empresarial de Arda mediante el flujo activado por registro . Debemos:- Crear clase de Apex y clase de prueba
- Pasos de flujo de Salesforce:
- Definir propiedades de flujo para el flujo desencadenado por registro
- Agregue una variable de colección de texto para almacenar los ID de registro
- Agregue un elemento de decisión para validar que la etapa de oportunidad es igual a cerrada perdida
- Agregue un elemento de asignación para agregar el ID de oportunidad a la variable de colección (creado en el paso 1.2)
- Agregue un elemento de obtener registros para encontrar las cotizaciones relacionadas
- Agregue un elemento de decisión para verificar si se encontraron cotizaciones o no
- Agregue un elemento de bucle para recuperar registros de la variable de colección de registros (desde el paso 1.5)
- Agregue un elemento de asignación para agregar quoteId a la variable de colección (Creado en el paso 1.2)
- Agregar acción: llame a una clase de Apex para eliminar las tareas abiertas para las identificaciones dadas
Paso 1: Cree una clase de Apex y una clase de prueba
- Haga clic en Configuración .
- En el cuadro Búsqueda rápida, escriba Clases de Apex .
- Da clic en el botón Nuevo .
- Copie el código de GitHub y péguelo en su clase de Apex.
- Haga clic en Guardar.
- El método getSObjectType se usa para obtener un token sObject de una ID.
- La papelera de reciclaje vacía se utiliza para eliminar registros de la papelera de reciclaje inmediatamente.
Paso 2.1: Definir propiedades de flujo
- Haga clic en Configuración .
- En el cuadro Búsqueda rápida, escriba Flujos .
- Seleccione Flujos y luego haga clic en Nuevo flujo .
- Seleccione el flujo activado por registro opción, haga clic en Crear
- Objeto : Oportunidad
- Activar flujo de oportunidad cuando : se crea o actualiza un registro
- Establecer criterios de entrada
- Requisitos de condición: Ninguno
- Optimice el flujo para la acción y los registros relacionados
- Haga clic en Listo .
Paso 2.2: agregue un texto de variable de colección para almacenar ID de registro
- En Caja de herramientas , seleccione Administrador y, a continuación, haga clic en Nuevo recurso para almacenar los ID de oportunidades o cotizaciones.
- Ingrese la siguiente información:
- Tipo de recurso : Variable
- Nombre de la API : varT_recordIds
- Tipo de datos : Texto
- Valor predeterminado: {!$GlobalConstant.EmptyString}
- Marque Permitir múltiples valores (colección)
- Comprobar disponible para entrada
- Comprobar disponible para la salida
- Haga clic en Listo .
Paso 2.3: uso del elemento de decisión para verificar si la oportunidad está cerrada, perdida o no
- En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
- Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
- Fila 1 :
- Recurso : {!$Record.StageName}
- Operador : Igual
- Valor : Cerrado Perdido
- Fila 1 :
La razón por la que seleccionaríamos la casilla de verificación Sí para la pregunta (Solo si el registro que activó la ejecución del flujo se actualiza para cumplir con los requisitos de la condición) es para permitir que el flujo ejecute las acciones solo si el registro cumple los criterios ahora, pero los valores que tenía el registro inmediatamente antes de que se guardara no cumplían con los criterios. Esto significa que estas acciones no se ejecutarán cuando se realicen cambios irrelevantes.
Paso 2.4: agregar un elemento de asignación para asignar el Id. de oportunidad a la variable de colección
- En Flow Designer, debajo del nodo Cerrado perdido , haga clic en el ícono + y seleccione el elemento Asignación .
- Ingrese un nombre en la etiqueta , el nombre de la API se completará automáticamente.
- Establecer valores de variables
- Fila 1:
- Campo: {!varT_Ids}
- Operador: Agregar
- Valor: {!$Record.Id}
- Fila 1:
- Haga clic en Listo .
Paso 2.5: agregue un elemento Obtener registro para encontrar las cotizaciones relacionadas
El siguiente paso es utilizar el Obtenga el elemento Registros para encontrar las cotizaciones relacionadas.- En Flow Designer, haga clic en el icono + y seleccione el elemento Obtener elemento.
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Seleccione el objeto Cotización de la lista desplegable.
- Seleccione Se cumplen todas las condiciones (Y) .
- Establecer condiciones de filtro
- Fila 1:
- Campo: ID de oportunidad
- Operador: Igual
- Valor: {!$Record.Id}
- Fila 1:
- Cuántos registros almacenar:
- seleccione Todos los registros
- Cómo almacenar datos de registro:
- Elija la opción para Almacenar automáticamente todos los campos
- Haga clic en Listo .
Paso 2.6: uso del elemento de decisión para verificar si se encontraron cotizaciones o no
Ahora, usará el elemento Decisión para verificar si el elemento Decisión anterior devuelve registros de cotización o no.
- En Flow Designer, haga clic en el icono + y seleccione el elemento Decisión .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- En Detalles del resultado , ingrese la etiqueta que el nombre de la API se completará automáticamente.
- Requisitos de condición para ejecutar el resultado : se cumplen todas las condiciones (Y)
- Fila 1:
- Recurso: {!Get_Quotes}
- Operador: es nulo
- Valor: {!$ConstanteGlobal.Falso}
- Fila 1:
- Cuándo ejecutar Resultado : Si se cumplen los requisitos de la condición .
- Haga clic en Listo .
Paso 2.7: agregue un elemento de bucle para recuperar registros de la variable de recopilación de registros
- En Flow Designer, debajo del nodo Sí , haga clic en el icono + y seleccione el elemento Bucle .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Para Variable de colección, seleccione {!Get_Quotes} .
- Para especificar la dirección para iterar sobre la colección seleccione la opción Del primer elemento al último elemento.
- Haga clic en Listo .
Paso 2.8: agregar un elemento de asignación para asignar el Id. de cotización a la variable de colección
- En Flow Designer, haga clic en el icono + y seleccione el elemento Asignación .
- Ingrese un nombre en la etiqueta , el nombre de la API se completará automáticamente.
- Establecer valores de variables
- Fila 1:
- Campo: {!varT_Ids}
- Operador: Agregar
- Valor: {!Loop_through.Id}
- Fila 1:
- Haga clic en Listo .
Paso 2.9: Agregar acción: llamar a una clase de Apex
- En Flow Designer, haga clic en el icono + y seleccione el elemento Acción .
- Busque y seleccione la clase apex DeleteOpenTasks en el menú desplegable
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Establecer valores de entrada:
- Campo : ID de registro
- Valor : {!varT_Ids}
- Haga clic en Listo .
Al final, Arda's Flow se verá como la siguiente captura de pantalla:
Una vez que todo se vea bien, realice los siguientes pasos:
- Haga clic en Guardar .
- Ingrese la etiqueta de flujo , el nombre de la API se completará automáticamente.
- Haga clic en Mostrar avanzado .
- Versión de API para ejecutar el flujo : 55
- Etiqueta de entrevista : Consulta de registros por lista de Id. en el flujo {!$Flow.CurrentDateTime}
- Haga clic en Guardar .
¡Casi ahí! Una vez que todo se vea bien, haga clic en el botón Activar .
Prueba de concepto
A partir de ahora, si un usuario comercial actualiza la Etapa de oportunidad a Cerrada perdida, Record-Trigger eliminará automáticamente todas las tareas abiertas de Oportunidad y cotizaciones relacionadas.
- Actualmente, hay dos Cotizaciones adjuntas al Letrero de Oportunidad West Mountain. Cada uno de ellos tiene una tarea abierta , como se muestra en la siguiente captura de pantalla:
- Ahora, actualizamos la Etapa de Oportunidad a Cerrado Perdido .
- Vuelva a la Oportunidad y Cotizar la lista relacionada con la actividad disponible en el detallado página.
Evaluación formativa:
¡Quiero saber de ti!
¿Qué es una cosa que aprendiste de esta publicación? ¿Cómo imagina aplicar este nuevo conocimiento en el mundo real? Siéntase libre de compartir en los comentarios a continuación.
…
Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://automationchampion.com/2022/05/08/query-records-by-list-of-ids-in-flow-3/