Loading
Automatizar sus procesos comerciales
Índice de materias
Seleccionar filtros

          No hay resultados
          No hay resultados
          Estas son algunas sugerencias de búsqueda

          Compruebe la ortografía de sus palabras clave.
          Utilice términos de búsqueda más generales.
          Seleccione menos filtros para ampliar su búsqueda.

          Buscar en toda la Ayuda de Salesforce
          Solucionar errores Apex_CPU_TIME_LIMIT_EXCEEDED en flujos

          Solucionar errores Apex_CPU_TIME_LIMIT_EXCEEDED en flujos

          Cuando una transacción consume demasiado tiempo de CPU, Salesforce arroja un error Apex_CPU_TIME_LIMIT_EXCEEDED. Los flujos comparten este límite con cualquier otra automatización en la misma transacción, incluyendo desencadenadores Apex.

          Ediciones necesarias

          Ver ediciones compatibles.
          Permisos de usuario necesarios
          Para abrir, modificar, crear, activar o desactivar un flujo utilizando todos los tipos de flujo, elementos y funciones disponibles en Flow Builder, incluyendo Einstein y Agentforce for Flow: Gestionar flujo
          Para ver la configuración y acceder a registros de depuración: Ver parámetros y configuración
          Para ver, retener y eliminar registros de depuración y establecer marcas de rastreo: Ver todos los datos

          Salesforce aplica un límite de tiempo de CPU único de 10.000 milisegundos (10 segundos) por transacción síncrona. Cada elemento de automatización en esa transacción, como desencadenadores, flujos, reglas de flujo de trabajo y procesos de Apex, se extrae del mismo presupuesto. Si otra automatización consume la mayor parte del presupuesto primero, incluso un flujo optimizado puede fallar. El orden de ejecución depende del tipo de flujo. Para obtener el pedido completo, consulte Desencadenadores y Orden de ejecución.

          • Los flujos anteriores al guardado se ejecutan antes en el orden que los flujos posteriores al guardado.
          • Los desencadenadores Apex se ejecutan antes o después de flujos dependiendo de su tipo de desencadenador.

          Para solucionar y optimizar flujos que alcanzan los límites de tiempo de CPU:

          • Comprender los patrones comunes que causan errores de límite de CPU
          • Identificar qué elementos consumen más tiempo de CPU
          • Aplicar técnicas de optimización para reducir el consumo de CPU
          • Implementar directrices de prevención para evitar errores de límite de CPU

          Problemas, soluciones y técnicas de prevención para errores de límite de CPU

          Identifique problemas comunes de límite de CPU, aplique soluciones y siga técnicas de prevención para evitar errores Apex_CPU_TIME_LIMIT_EXCEEDED.

          Esta tabla proporciona una referencia para solucionar errores de límite de CPU. Cada fila describe un problema común, la solución para solucionarlo y técnicas para evitarlo en flujos futuros. Comience por determinar si cualquiera de estos problemas se aplica a su flujo. Si no se aplica ninguna, otra automatización en la misma transacción, como un desencadenador Apex, otro flujo o una regla de flujo de trabajo, se extrae del mismo presupuesto de CPU y puede ser el culpable. Para identificar qué está consumiendo CPU en toda la transacción, revise los registros de depuración de Apex. Para obtener más detalles, consulte Registros de depuración.

          Problema Solución Técnica de prevención

          Operaciones de lenguaje de manipulación de datos (DML) dentro de bucles

          La realización de operaciones Crear registros, Actualizar registros o Eliminar registros dentro de una ruta de bucle consume tiempo de CPU con cada iteración. El procesamiento de múltiples registros uno por uno puede agotar rápidamente el límite.

          Ejemplo: Un flujo atraviesa 100 oportunidades en bucle y utiliza un elemento Crear registros dentro del bucle para crear una tarea para cada oportunidad, dando como resultado 100 operaciones DML separadas.

          Utilizar operaciones de lenguaje de manipulación de datos basado en recopilación (DML)

          Dentro del bucle, utilice elementos Asignación para agregar registros a una variable de colección de registros. Tras completar el bucle, utilice un único elemento Crear registros, Actualizar registros o Eliminar registros para procesar toda la recopilación a la vez. Este enfoque se denomina masificación.

          Ejemplo: Atraviese oportunidades en bucle, utilice un elemento de asignación para crear una tarea para cada oportunidad. A continuación utilice otro elemento de asignación para agregar cada tarea a una variable de recopilación. Después del bucle, utilice un elemento Crear registros para crear todas las tareas a la vez.

          Para obtener más información, consulte Masificación de flujos en transacciones.

          Nunca coloque operaciones DML dentro de bucles. Diseñe siempre flujos para recopilar registros en una variable de recopilación durante el bucle, luego realice DML después de que se complete el bucle.

          Múltiples consultas dentro de bucles

          Los elementos Obtener registros dentro de un bucle consumen mucho tiempo de CPU, especialmente cuando se consultan objetos de gran tamaño o se utilizan filtros complejos.

          Ejemplo: Un flujo atraviesa cuentas y utiliza Obtener registros dentro del bucle para obtener contactos relacionados para cada cuenta, dando como resultado una consulta por cuenta.

          Consultar datos antes de bucles

          Antes del bucle, utilice un único elemento Obtener registros y utilice la función Obtener registros relacionados para obtener todos los datos necesarios con filtros apropiados. Durante el bucle, utilice los datos recopilados en vez de consultar cada iteración. Si no puede utilizar un único elemento Obtener registros, utilice un elemento Obtener registros para obtener los registros principales. A continuación, utilice otro elemento Obtener registros para obtener los registros secundarios. Filtre los registros secundarios utilizando un campo de registro, el operador En y la primera recopilación Obtener registros. Por ejemplo, Id. de cuenta > En > Cuentas desde Obtener cuentas.

          Ejemplo: Primero obtenga todos los contactos relacionados con un elemento Obtener registros que filtra por los Id. de cuenta, luego haga referencia a la recopilación de contactos durante el bucle.

          Evite consultas dentro de bucles. Obtenga todos los datos necesarios antes de entrar en el bucle.

          Fórmulas complejas en bucles

          Los elementos de asignación que ejecutan cálculos de fórmula complejos en cada iteración de bucle acumulan tiempo de CPU, particularmente con manipulación de cadenas, cálculos de fechas o funciones anidadas.

          Ejemplo: Un flujo atraviesa 500 registros en bucle y cada iteración realiza múltiples cálculos de fórmula para derivar valores de campo.

          Simplificar fórmulas

          Divida fórmulas complejas en pasos más sencillos. Calcule valores que no cambian fuera del bucle. Evite funciones anidadas cuando sea posible. Considere utilizar campos de fórmula en el objeto en vez de fórmulas de flujo.

          Para operaciones en recopilaciones completas, como filtrado, asignación u ordenación, un elemento Transformación tiene un rendimiento más eficiente que un bucle. Para obtener todos los registros relacionados en una única consulta en vez de una consulta por iteración de bucle, utilice un elemento Obtener registros con el operador IN.

          Para obtener más información, consulte Transformar elemento.

          Simplifique fórmulas y mueva cálculos que no cambian fuera del bucle. Pruebe el rendimiento de fórmulas con volúmenes de datos realistas.

          Procesamiento de grandes colecciones de registros

          Los flujos programados u operaciones por lotes que procesan miles de registros en una sola transacción, incluso con la masificación apropiada, pueden consumir demasiado tiempo de CPU.

          Ejemplo: Un flujo programado obtiene 5000 registros de cuenta y realiza transformaciones complejas en los datos de cada registro antes de actualizarlos.

          Utilizar enfoques alternativos

          Para grandes volúmenes de datos, considere:

          • Dividir el trabajo en múltiples flujos programados que procesan cada uno un subconjunto de registros
          • Uso de procesamiento por lotes Apex para volúmenes de datos extremos
          • Procesamiento de registros de forma incremental a lo largo del tiempo
          • Uso de eventos de plataforma para distribuir el procesamiento entre múltiples transacciones

          Filtre los datos antes para reducir el número de registros procesados. Utilice filtros Obtener registros para obtener solo los registros que necesita. Pruebe con volúmenes de datos realistas antes de implementar en producción.

          Múltiples flujos en una transacción

          Cuando un flujo desencadena otros flujos (a través de cambios de registro o subflujos), el tiempo acumulado de CPU de todos los flujos en la transacción cuenta en el límite.

          Ejemplo: Un flujo desencadenado por registro en actualizaciones de Cuenta ejecuta múltiples subflujos y también desencadena otros flujos desencadenados por registro en objetos relacionados.

          Reducir cadenas de flujo

          Consolide la automatización relacionada en menos flujos. Revise sus criterios de desencadenador de flujos para garantizar que los flujos se ejecutan solo cuando es necesario. Considere utilizar condiciones de entrada para limitar cuándo se ejecutan flujos desencadenados por registros.

          Revise la repercusión acumulativa de toda la automatización (flujos, procesos, flujos de trabajo, desencadenadores) que se puede ejecutar en la misma transacción. Supervise y optimice toda la cadena de automatización.

          Cargas de datos masivas

          Los flujos desencadenados por registros que se ejecutan durante importaciones de datos masivas o actualizaciones masivas requieren un procesamiento eficiente de todos los registros. Los flujos ineficientes alcanzan los límites de CPU durante operaciones masivas incluso si funcionan bien para registros individuales.

          Ejemplo: Un usuario importa 200 registros de cuenta. El flujo desencadenado por registro antes de guardar realiza múltiples búsquedas y cálculos para cada cuenta.

          Optimizar para operaciones masivas

          • Utilizar consultas y DML basados en recopilación
          • Considere flujos posteriores al guardado para operaciones no críticas (se ejecutan de forma asíncrona y tienen límites de CPU más altos)
          • Utilizar elementos Transformación (Filtro, Mapa, Clasificación) que funcionan en colecciones completas de forma más eficiente que los bucles

          Para obtener más información, consulte Transformar elemento.

          Siempre asuma que los flujos desencadenados por registros procesan múltiples registros de forma simultánea. Pruebe con cargas de datos masivas (utilizando Cargador de datos o actualizaciones masivas) antes de implementar en producción. Si no se diseña correctamente, un flujo que funciona perfectamente para registros individuales puede fallar durante operaciones masivas si no se diseña correctamente.

          Directrices generales de prevención

          • Supervisar el rendimiento del flujo: Revise los registros de depuración Apex regularmente para identificar flujos que se acercan a los límites de CPU, incluso si no fallaron aún. La supervisión regular le ayuda a optimizar flujos antes de que causen problemas de producción.
          • Pruebe con datos realistas: Pruebe flujos con volúmenes de datos realistas para descubrir problemas de rendimiento antes de la activación. El modo de depuración normalmente se prueba con un registro, lo que no revela problemas de operación masiva.
          • Decisiones de optimización de documentos: Utilice descripciones de elementos para anotar dónde aplicó masificación u otras optimizaciones. Esta documentación ayuda a los futuros mantenedores a comprender el diseño y evita la introducción accidental de problemas de rendimiento.
          • Comience de forma sencilla y optimice: Cree flujos en pequeños incrementos, probando el rendimiento en cada paso. Optimizar un flujo de trabajo es más fácil que solucionar uno dañado complejo.

          Identificar elementos intensivos en CPU en un flujo

          Utilice registros de depuración Apex para precisar qué elementos de su flujo consumen más tiempo de CPU.

          1. Vaya a Configuración e introduzca Registros de depuración en el cuadro Búsqueda rápida.
          2. Configure el registro de depuración para el usuario que experimente el error o ejecute el flujo en modo Depuración.
          3. Reproduzca el error ejecutando el flujo.
          4. Abra el registro de depuración generado.
          5. Busque estos eventos clave en el registro de depuración.
            • FLOW_CREATE_INTERVIEW_BEGIN: Muestra cuándo se inicia cada flujo
            • FLOW_ELEMENT_LIMIT_USAGE: Muestra el consumo de tiempo de CPU para cada elemento de flujo
            • CUMULATIVE_LIMIT_USAGE: Muestra totales de ejecución de tiempo de CPU
          6. Identifique elementos con valores de tiempo de CPU altos.
            Los culpables comunes incluyen:
            • Elementos de bucle con grandes colecciones.
            • Obtener elementos Registros con filtros complejos.
            • Operaciones DML con múltiples registros (Crear registros, Actualizar registros, Eliminar registros).
            • Elementos de asignación con fórmulas complejas.

          Ahora sabe qué elementos consumen más tiempo de CPU. Utilice esta información para aplicar optimizaciones dirigidas.

          Para obtener más información acerca de los registros de depuración, consulte Trabajar con registros en Developer Console.

           
          Cargando
          Salesforce Help | Article