Última actualización el 7 de abril de 2023 por Rakesh Gupta
Gran idea o pregunta duradera:
No queremos trabajar los fines de semana o días festivos, ¡todos lo entendemos! Si es así, ¿cree que nuestros clientes o prospectos lo hacen ?
Si tiene dudas, intente enviar un correo electrónico a sus prospectos para comprar una casa en Navidad. ¿O qué tal enviar un correo electrónico de renovación de contrato a sus clientes el fin de semana? Tasa de éxito si estas acciones no es demasiado difícil de estimar, ¿verdad?
Entiendes mi punto.
Este blog es una continuación de mi blog anterior, Omitir el flujo programado en fines de semana y días festivos , donde discutimos cómo averiguar si la fecha objetivo especificada ocurre dentro del horario comercial. Este artículo irá un paso más allá y explicará cómo determinar el siguiente día hábil a partir de la fecha indicada teniendo en cuenta el horario comercial y los días festivos.
Comencemos con un caso de uso comercial.
Objetivos:
En este artículo, el lector aprenderá lo siguiente:
- Cuándo usar la acción Invocable de Apex con Flow
- Comprender la clase BusinesshHours y sus métodos asociados
- Comprender la anotación @InvocableMethod
- Cómo llamar a un método de Apex usando Flow para averiguar la próxima fecha en que el horario comercial está abierto
Warren Mason es administrador de sistemas en Gurukul on Cloud (GoC). Creó la automatización para enviar la notificación automática por correo electrónico al cliente después de la creación de la oportunidad.
El proceso funciona a las mil maravillas hasta que Warren recibe una solicitud de mejora para enviar alertas por correo electrónico sobre el horario laboral de la empresa. ¡¡Ay!! Ayudaremos a Warren a averiguar el siguiente día hábil y lo almacenaremos en un campo personalizado Next_workday__c en el objeto de oportunidad .
Enfoque de Campeón de Automatización (I-do):
En este artículo, utilizaremos la clase de base de datos call BusinessHours . Asegúrate de revisarlo. Utilice el método nextStartDate que devuelve la próxima fecha cuando el horario comercial está abierto. Si la fecha objetivo especificada se encuentra dentro del horario comercial, se devuelve esta fecha objetivo. A partir del lanzamiento de Spring'23 , no es posible acceder directamente al método BusinessHours desde Flow, por eso estamos usando la clase Apex Invocable.
Antes de discutir la solución, permítame mostrarle un diagrama del proceso a un alto nivel. Dedique unos minutos a revisar el siguiente diagrama de flujo para comprenderlo.
Práctica guiada (nosotros hacemos):
Hay 4 pasos para resolver el requisito empresarial de Warren utilizando el flujo activado por registro después de guardar . Debemos:
- Establecer horario comercial y días festivos
- Cree un campo personalizado en el objeto Oportunidad para almacenar el próximo día laboral
- Crear clase de Apex y clase de prueba
- Flujo de fuerza de ventas
- Definir propiedades de flujo para el flujo desencadenado por registro
- Agregar acción: llame a NextStartDate Invocable Apex Class
- Agregue el elemento Actualizar registros para actualizar la oportunidad
Paso 1: Configuración del horario comercial y días festivos
- Haga clic en Configuración .
- En el cuadro Búsqueda rápida, escriba Horario comercial .
- Establezca el horario comercial y los días festivos , como se muestra en la siguiente captura de pantalla:
Paso 2: cree un campo personalizado en el objeto de oportunidad para almacenar el próximo día laboral
- Haga clic en Configuración .
- En el Administrador de objetos, escriba Oportunidad .
- Seleccione Campos y relaciones , luego haga clic en Nuevo .
- Seleccione Fecha/Hora como Tipo de datos, luego haga clic en Siguiente .
- Ingrese Etiqueta de campo y haga clic en la tecla de tabulación, se completará el Nombre de campo .
- Ingrese los detalles:
- Como práctica recomendada, introduzca siempre una descripción y un texto de ayuda .
- Haga clic en el botón Siguiente .
- Ingrese los detalles:
- Establezca la seguridad a nivel de campo para los perfiles .
- Agregue este campo a Diseño de página .
- Haga clic en Guardar .
Paso 3: Cree una clase de Apex y una clase de prueba
Ahora, tenemos que entender una nueva anotación de Apex, es decir , . @MétodoInvocable . Esta anotación nos permite usar un método de Apex como algo que se puede llamar desde Flow y Apex. Los métodos invocables se llaman con la API REST y se usan para invocar un solo método de Apex. Los métodos invocables tienen valores de entrada y salida dinámicos y admiten llamadas de descripción.
La clase NextStartDate contiene un único método que pasa la Fecha/Hora para encontrar si la fecha objetivo está dentro del horario comercial dado, se devuelve la fecha objetivo. La hora devuelta está en la zona horaria local. Cree la siguiente clase en su organización.
- Haga clic en Configuración .
- En el cuadro Búsqueda rápida, escriba Clases de Apex .
- Haga clic en el botón Nuevo .
- Copie el código de GitHub y péguelo en su clase de Apex.
- Haga clic en Guardar.
público sin compartir clase NextStartDate { @InvocableMethod(label = 'Encuentra la próxima fecha a partir de la fecha objetivo cuando se reabre el horario comercial' iconName='slds:custom:custom63') public static List<response> calculeNextStartDate(List<Request> requestList) { List<response> finalList = new List<response>(); BusinessHours bh = [SELECCIONE Id FROM BusinessHours WHERE IsDefault=true]; para (Solicitud de solicitud: lista de solicitudes){ respuesta resp = nueva respuesta(); resp.nextStart=Horarios.nextStartDate(bh.id, req.targetDate); finalList.add(resp); } volver listafinal; } Solicitud de clase pública{ @InvocableVariable(etiqueta = 'Fecha objetivo' requerido = verdadero) fecha y hora pública fecha de destino; } Respuesta de clase pública { @InvocableVariable (etiqueta='Siguiente Inicio') fecha y hora pública nextStart; } }
Paso 4.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 y configure el flujo de la siguiente manera:
- Objeto : Oportunidad
- Activar el flujo cuando : se crea 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 4.2: Adición de una acción para llamar a una clase de Apex invocable
- En Flow Designer, haga clic en el icono + y seleccione el elemento Acción .
- Seleccione la clase de Apex invocable NextStartDate .
- Ingrese un nombre en el campo Etiqueta : el nombre de la API se completará automáticamente.
- Establecer valores de entrada:
- Campo : Fecha objetivo
- Valor : {!$Record.CreatedDate}
- Campo : Fecha objetivo
- Almacenar valores de salida
- Campo : Siguiente inicio
- Valor : {!$Record.Next_Workday__c}
- Campo : Siguiente inicio
- Haga clic en Listo .
Paso 4.3: Adición de un elemento Actualizar registros para actualizar la oportunidad
El siguiente paso es actualizar el campo siguiente día laborable de la oportunidad. Usaremos los registros de actualización elemento.
- En Flow Designer, haga clic en el icono + y seleccione el elemento Actualizar registros .
- Introduzca un nombre en el campo Etiqueta ; el nombre de la API se completará automáticamente.
- Para obtener información sobre cómo encontrar registros para actualizar y establecer sus valores, seleccione Usar los ID y todos los valores de campo de un registro o colección de registros.
- Seleccionar registro(s) para actualizar
- Registro o colección de registros: {!$Record}
- Haga clic en Listo.
Al final, Warren'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 : 57
- Etiqueta de entrevista : Próxima fecha de inicio {!$Flow.CurrentDateTime}
- Haga clic en Guardar .
¡Casi llegamos! Una vez que todo se vea bien, haga clic en Activar .
Prueba de concepto
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/2023/04/07/find-next-business-day-from-a-specified-date-2/