Loading
Automatizar processos comerciais
Índice
Selecionar filtros

          Sem resultados
          Sem resultados
          Aqui estão algumas dicas de pesquisa

          Verifique a grafia das palavras-chave.
          Tente utilizar termos mais genéricos.
          Selecione menos filtros para ampliar sua pesquisa.

          Pesquisar em toda a Ajuda do Salesforce
          Solucionar erros do Apex_CPU_TIME_LIMIT_EXCEEDED em fluxos

          Solucionar erros do Apex_CPU_TIME_LIMIT_EXCEEDED em fluxos

          Quando uma transação consome muito tempo de CPU, o Salesforce gera um erro do Apex_CPU_TIME_LIMIT_EXCEEDED. Os fluxos compartilham esse limite com todas as outras automações na mesma transação, incluindo acionadores do Apex.

          Edições obrigatórias

          Exibir edições com suporte.
          Permissões de usuário necessárias
          Para abrir, editar, criar, ativar ou desativar um fluxo usando todos os tipos de fluxo, elementos e recursos disponíveis no Flow Builder, incluindo Einstein e Agentforce para Fluxo: Gerenciar fluxo
          Para visualizar Configuração e acessar logs de depuração: Visualizar configuração
          Para visualizar, reter e excluir logs de depuração e definir sinalizadores de rastreamento: Exibir todos os dados

          O Salesforce impõe um único limite de tempo de CPU de 10 milissegundos (10 segundos) por transação síncrona. Todas as automações nessa transação, como acionadores do Apex, fluxos, regras de fluxo de trabalho e processos, utilizam o mesmo orçamento. Se outra automação consumir a maior parte do orçamento primeiro, até mesmo um fluxo otimizado poderá falhar. A ordem de execução depende do tipo de fluxo. Para o pedido completo, consulte Acionadores e Ordem de Execução.

          • Fluxos antes de salvar são executados mais cedo no pedido que fluxos após salvar.
          • Acionadores do Apex são executados antes ou depois de fluxos, dependendo do tipo de acionador.

          Para solucionar problemas e otimizar fluxos que atingem os limites de tempo de CPU:

          • Entenda os padrões comuns que causam erros de limite de CPU
          • Identifique quais elementos consomem mais tempo de CPU
          • Aplicar técnicas de otimização para reduzir o consumo de CPU
          • Implementar diretrizes de prevenção para evitar erros de limite de CPU

          Problemas, soluções e técnicas de prevenção para erros de limite de CPU

          Identifique problemas comuns de limite de CPU, aplique soluções e siga técnicas de prevenção para evitar erros do Apex_CPU_TIME_LIMIT_EXCEEDED.

          Esta tabela fornece uma referência para solucionar erros de limite de CPU. Cada linha descreve um problema comum, a solução para corrigi-lo e as técnicas para evitá-lo em fluxos futuros. Comece determinando se algum desses problemas se aplica ao seu fluxo. Se nenhuma se aplicar, outra automação na mesma transação, como um acionador do Apex, outro fluxo ou uma regra de fluxo de trabalho, será extraída do mesmo orçamento de CPU e poderá ser o culpado. Para identificar o que está consumindo a CPU em toda a transação, revise os logs de depuração do Apex. Para obter mais detalhes, consulte Registros de depuração.

          Problema Solução Técnica de prevenção

          Linguagem de manipulação de dados (DML) operações dentro de loops

          Realizar as operações Criar registros, Atualizar registros ou Excluir registros em um caminho de loop consome tempo de CPU com cada iteração. Processar vários registros um por vez pode rapidamente esgotar o limite.

          Exemplo: Um fluxo faz um loop por 100 oportunidades e usa um elemento Criar registros dentro do loop para criar uma tarefa para cada oportunidade, resultando em 100 operações DML separadas.

          Usar operações de Linguagem de manipulação de dados (DML) baseadas em coleta

          Dentro do loop, use elementos de Atribuição para adicionar registros a uma variável de coleção de registros. Depois que o loop for concluído, use um único elemento Criar registros, Atualizar registros ou Excluir registros para processar toda a coleção de uma só vez. Essa abordagem é chamada de massificação.

          Exemplo: Faça um loop nas oportunidades e use um elemento de atribuição para criar uma tarefa para cada oportunidade. Em seguida, use outro elemento de atribuição para adicionar cada tarefa a uma variável de coleção. Após o loop, use um elemento Criar registros para criar todas as tarefas de uma só vez.

          Para obter mais informações, consulte Massificação de fluxo em transações.

          Nunca coloque operações DML dentro de loops. Sempre projete fluxos para coletar registros em uma variável de coleção durante o loop e execute DML após a conclusão do loop.

          Múltiplas consultas dentro de loops

          Os elementos Obter registros dentro de um loop consomem tempo de CPU significativo, especialmente ao consultar objetos grandes ou usar filtros complexos.

          Exemplo: Um fluxo faz um loop nas contas e usa Obter registros dentro do loop para obter contatos relacionados para cada conta, resultando em uma consulta por conta.

          Dados de consulta antes de loops

          Antes do loop, use um único elemento Obter registros e use a funcionalidade Obter registros relacionados para obter todos os dados necessários com filtros adequados. Durante o loop, use os dados coletados em vez de consultar em cada iteração. Se você não puder usar um único elemento Obter registros, use um elemento Obter registros para obter os registros principais. Em seguida, use outro elemento Obter registros para obter os registros secundários. Filtre os registros secundários usando um campo de registro, o operador In e a primeira coleção Obter registros. Por exemplo, ID da conta > In > Contas de Obter contas.

          Exemplo: Primeiro, obtenha todos os contatos relacionados com um elemento Obter registros que filtre pelos IDs da conta e, em seguida, faça referência à coleção de contatos durante o loop.

          Evite consultas dentro de loops. Obtenha todos os dados necessários antes de entrar no loop.

          Fórmulas complexas em loops

          Elementos de atribuição que executam cálculos de fórmula complexos em cada iteração de loop acumulam tempo de CPU, particularmente com manipulação de string, cálculos de data ou funções aninhadas.

          Exemplo: Um fluxo faz um loop por 500 registros e cada iteração realiza vários cálculos de fórmula para derivar valores de campo.

          Simplificar fórmulas

          Divida fórmulas complexas em etapas mais simples. Calcule valores que não mudam fora do loop. Evite funções aninhadas quando possível. Considere usar campos de fórmula no objeto em vez de fórmulas de fluxo.

          Para operações em coleções inteiras, como filtragem, mapeamento ou classificação, um elemento Transformação tem um desempenho mais eficiente do que um loop. Para obter todos os registros relacionados em uma única consulta, em vez de uma consulta por iteração de loop, use um elemento Obter registros com o operador IN.

          Para obter mais informações, consulte Elemento de transformação.

          Simplifique fórmulas e mova cálculos que não mudam fora do loop. Teste o desempenho da fórmula com volumes de dados realistas.

          Processando grandes coleções de registros

          Fluxos agendados ou operações em lote que processam milhares de registros em uma única transação, mesmo com a massificação adequada, podem consumir muito tempo de CPU.

          Exemplo: Um fluxo agendado obtém 5.000 registros de conta e realiza transformações complexas nos dados de cada registro antes de atualizá-los.

          Usar abordagens alternativas

          Para grandes volumes de dados, considere:

          • Divida o trabalho em vários fluxos agendados que processam um subconjunto de registros
          • Usar processamento em lote do Apex para volumes de dados extremos
          • Processar registros incrementalmente ao longo do tempo
          • Usar eventos de plataforma para distribuir o processamento entre várias transações

          Filtre os dados com antecedência para reduzir o número de registros processados. Use os filtros Obter registros para obter apenas os registros necessários. Teste com volumes de dados realistas antes de implementar na produção.

          Múltiplos fluxos em uma transação

          Quando um fluxo aciona outros fluxos (por meio de alterações de registro ou subfluxos), o tempo de CPU cumulativo de todos os fluxos na transação conta para o limite.

          Exemplo: Um fluxo acionado por registro em atualizações de conta executa vários subfluxos e também aciona outros fluxos acionados por registro em objetos relacionados.

          Reduzir cadeias de fluxo

          Consolide a automação relacionada em menos fluxos. Revise os critérios do acionador de fluxo para garantir que os fluxos sejam executados apenas quando necessário. Considere usar condições de entrada para limitar quando fluxos acionados por registro são executados.

          Revise o impacto cumulativo de todas as automações (fluxos, processos, fluxos de trabalho, acionadores) que podem ser executadas na mesma transação. Monitore e otimize toda a cadeia de automação.

          Carregamentos de dados em massa

          Fluxos acionados por registro que são executados durante importações de dados em massa ou atualizações em massa exigem o processamento eficiente de todos os registros. Fluxos ineficientes atingem os limites de CPU durante operações em massa mesmo que funcionem bem para registros individuais.

          Exemplo: Um usuário importa 200 registros de conta. O fluxo acionado por registro antes de salvar realiza várias pesquisas e cálculos para cada conta.

          Otimizar para operações em massa

          • Usar DML e consultas baseadas em coleção
          • Considere fluxos após salvar para operações não críticas (eles são executados de modo assíncrono e têm limites de CPU maiores)
          • Use elementos de transformação (filtro, mapa, classificação) que operam em coleções inteiras com mais eficiência que loops

          Para obter mais informações, consulte Elemento de transformação.

          Sempre presuma que fluxos acionados por registro processem vários registros simultaneamente. Teste com carregamentos de dados em massa (usando o Data Loader ou atualizações em massa) antes de implementar na produção. Se não for projetado adequadamente, um fluxo que funcione perfeitamente para registros individuais poderá falhar durante operações em massa se não for projetado adequadamente.

          Diretrizes gerais de prevenção

          • Desempenho do fluxo do monitor: Revise os registros de depuração do Apex regularmente para identificar fluxos que se aproximam dos limites de CPU, mesmo que ainda não tenham falhado. O monitoramento regular ajuda você a otimizar os fluxos antes que causem problemas de produção.
          • Teste com dados realistas: Teste fluxos com volumes de dados realistas para descobrir problemas de desempenho antes da ativação. O modo de depuração geralmente testa com um registro, o que não revela problemas de operação em massa.
          • Decisões de otimização de documento: Use as descrições do elemento para anotar onde você aplicou a massificação ou outras otimizações. Essa documentação ajuda os futuros manuais a entender o design e impede a introdução acidental de problemas de desempenho.
          • Iniciar simples e otimizar: Crie fluxos em pequenos incrementos, testando o desempenho em cada etapa. Otimizar um fluxo de trabalho é mais fácil do que corrigir um complexo quebrado.

          Identificar elementos com uso intensivo de CPU em um fluxo

          Use os registros de depuração do Apex para detectar quais elementos em seu fluxo consomem mais tempo de CPU.

          1. Vá para Configuração e insira Registros de depuração na caixa Busca rápida.
          2. Configure o registro de depuração para o usuário que está com o erro ou execute o fluxo no modo Depuração.
          3. Reproduza o erro executando o fluxo.
          4. Abra o registro de depuração gerado.
          5. Pesquise estes eventos-chave no registro de depuração.
            • FLOW_CREATE_INTERVIEW_BEGIN – Mostra quando cada fluxo começa
            • FLOW_ELEMENT_LIMIT_USAGE – mostra o consumo de tempo de CPU para cada elemento de fluxo
            • CUMULATIVE_LIMIT_USAGE - Mostra totais de tempo de CPU em execução
          6. Identifique elementos com valores de tempo de CPU altos.
            Culpados comuns incluem:
            • Elementos de loop com grandes coleções.
            • Obtenha elementos de Registros com filtros complexos.
            • Operações DML com vários registros (Criar registros, Atualizar registros, Excluir registros).
            • Elementos de atribuição com fórmulas complexas.

          Agora você sabe quais elementos estão consumindo mais tempo de CPU. Use estas informações para aplicar otimizações direcionadas.

          Para obter mais informações sobre registros de depuração, consulte Trabalhar com registros no Developer Console.

           
          Carregando
          Salesforce Help | Article