Loading
Automatisation de vos processus métier
Table des matières
Sélectionner des filtres

          Aucun résultat
          Aucun résultat
          Voici quelques conseils de recherche

          Vérifiez l'orthographe de vos mots-clés.
          Utilisez des termes de recherche plus généraux.
          Sélectionnez moins de filtres pour élargir votre recherche.

          Recherchez dans toute l’aide de Salesforce
          Dépannage des erreurs Apex_CPU_TIME_LIMIT_EXCEEDED dans les flux

          Dépannage des erreurs Apex_CPU_TIME_LIMIT_EXCEEDED dans les flux

          Lorsqu'une transaction consomme trop de temps processeur, Salesforce renvoie une erreur Apex_CPU_TIME_LIMIT_EXCEEDED. Les flux partagent cette limite avec une automatisation sur deux dans la même transaction, y compris les déclencheurs Apex.

          Éditions requises

          Afficher les éditions prises en charge.
          Autorisations utilisateur requises
          Pour ouvrir, modifier, créer, activer ou désactiver un flux en utilisant tous les types, éléments et fonctionnalités de flux disponibles dans Flow Builder, y compris Einstein et Agentforce pour flux : Gérer les flux
          Pour afficher Configuration et accéder aux journaux de débogage : Afficher la configuration
          Pour afficher, conserver et supprimer les journaux de débogage, et définir des indicateurs de trace : Afficher toutes les données

          Salesforce applique une limite de temps processeur unique de 10 000 millisecondes (10 secondes) par transaction synchrone. Chaque élément de l'automatisation dans cette transaction, tels que les déclencheurs Apex, les flux, les règles de workflow et les processus, puise dans le même budget. Si une autre automatisation consomme d'abord la majeure partie du budget, même un flux optimisé peut échouer. L'ordre d'exécution dépend du type de flux. Pour la commande complète, consultez Déclencheurs et ordre d'exécution.

          • Les flux avant la sauvegarde sont exécutés plus tôt dans l'ordre que les flux après la sauvegarde.
          • Les déclencheurs Apex sont exécutés avant ou après les flux selon leur type de déclencheur.

          Pour dépanner et optimiser les flux qui atteignent les limites en temps processeur :

          • Comprendre les modèles courants qui entraînent des erreurs de limitation du processeur
          • Identifier les éléments qui consomment le plus de temps processeur
          • Appliquer des techniques d'optimisation pour réduire la consommation de processeur
          • Implémenter des consignes de prévention pour éviter les erreurs de limitation du processeur

          Problèmes, solutions et techniques de prévention des erreurs de limitation du processeur

          Identifiez les problèmes courants de limitation du processeur, appliquez des solutions et suivez des techniques de prévention pour éviter les erreurs Apex_CPU_TIME_LIMIT_EXCEEDED.

          Le tableau ci-dessous fournit une référence pour le dépannage des erreurs de limitation du processeur. Chaque ligne décrit un problème commun, la solution pour le résoudre et les techniques pour l'éviter dans les futurs flux. Commencez par déterminer si l'un de ces problèmes s'applique à votre flux. Si aucune ne s'applique, une autre automatisation dans la même transaction, par exemple un déclencheur Apex, un autre flux ou une règle de workflow, puise dans le même budget processeur et peut être la coupable. Pour identifier ce qui consomme du processeur pendant toute la transaction, consultez les journaux de débogage Apex. Pour plus d'informations, consultez Journaux de débogage.

          Problème Solution Technique de prévention

          Opérations DML (Data Manipulation Language) dans des boucles

          L'exécution d'opérations Créer des enregistrements, Mettre à jour des enregistrements ou Supprimer des enregistrements dans un parcours en boucle consomme du temps processeur à chaque itération. Le traitement de plusieurs enregistrements individuellement peut rapidement épuiser la limite.

          Exemple : Un flux tourne en boucle sur 100 opportunités et utilise un élément Créer des enregistrements dans la boucle afin de créer une tâche pour chaque opportunité, ce qui entraîne 100 opérations DML distinctes.

          Utilisation des opérations DML (Collection-Based Data Manipulation Language)

          Dans la boucle, utilisez des éléments Attribution pour ajouter des enregistrements à une variable de collection d'enregistrement. Une fois la boucle terminée, utilisez un seul élément Créer des enregistrements, Mettre à jour les enregistrements ou Supprimer des enregistrements pour traiter la collection complète en même temps. Cette approche est appelée traitement en masse.

          Exemple : Bouclez sur les opportunités, utilisez un élément Attribution pour élaborer une tâche pour chaque opportunité. Utilisez ensuite un autre élément d'attribution pour ajouter chaque tâche à une variable de collection. Après la boucle, utilisez un élément Créer des enregistrements pour créer toutes les tâches en même temps.

          Pour plus d'informations, reportez-vous à Traitement en masse de flux dans les transactions.

          Ne placez jamais les opérations DML dans des boucles. Concevez toujours des flux pour collecter des enregistrements dans une variable de collection pendant la boucle, puis exécutez le DML une fois la boucle terminée.

          Requêtes multiples dans des boucles

          Les éléments Obtenir des enregistrements dans une boucle consomment un temps processeur important, notamment lors de l'interrogation d'objets volumineux ou de l'utilisation de filtres complexes.

          Exemple : Un flux tourne en boucle à travers les comptes et utilise Obtenir des enregistrements dans la boucle pour récupérer les contacts associés de chaque compte, ce qui entraîne une requête par compte.

          Interrogation des données avant les boucles

          Avant la boucle, utilisez un seul élément Obtenir des enregistrements et utilisez la fonctionnalité Obtenir les enregistrements associés pour récupérer toutes les données nécessaires avec les filtres appropriés. Pendant la boucle, utilisez les données collectées au lieu d'interroger à chaque itération. Si vous ne pouvez pas utiliser un seul élément Obtenir des enregistrements, utilisez un élément Obtenir des enregistrements pour obtenir les enregistrements principaux. Utilisez ensuite un autre élément Obtenir des enregistrements pour récupérer les enregistrements secondaires. Filtrez les enregistrements secondaires en utilisant un champ d'enregistrement, l'opérateur Dans, et la première collection Obtenir des enregistrements. Par exemple, ID de compte > Dans > Comptes de Obtenir des comptes.

          Exemple : Récupérez d'abord tous les contacts associés avec un élément Obtenir des enregistrements qui filtre par les ID de compte, puis référencez la collection de contacts pendant la boucle.

          Évitez les requêtes dans les boucles. Récupérez toutes les données nécessaires avant d'entrer dans la boucle.

          Formules complexes en boucles

          Les éléments d'attribution qui exécutent des calculs de formule complexes à chaque itération de boucle accumulent du temps processeur, en particulier avec la manipulation de chaîne, des calculs de date ou des fonctions imbriquées.

          Exemple : Un flux tourne en boucle sur 500 enregistrements, et chaque itération effectue plusieurs calculs de formule pour dériver des valeurs de champ.

          Simplification des formules

          Divisez les formules complexes en étapes plus simples. Calculez les valeurs qui ne changent pas hors de la boucle. Évitez les fonctions imbriquées dans la mesure du possible. Vous pouvez utiliser des champs de formule dans l'objet au lieu de formules de flux.

          Pour des opérations sur des collections entières, telles que le filtrage, le mappage ou le tri, un élément Transformer est plus efficace qu'une boucle. Pour récupérer tous les enregistrements associés dans une seule requête au lieu d'une requête par itération de boucle, utilisez un élément Obtenir des enregistrements avec l'opérateur IN.

          Pour plus d'informations, consultez Élément Transformer.

          Simplifiez les formules et déplacez les calculs qui ne changent pas hors de la boucle. Testez les performances des formules avec des volumes de données réalistes.

          Traitement des grandes collections d'enregistrements

          Les flux planifiés ou les opérations par lot qui traitent des milliers d'enregistrements dans une seule transaction, même avec un traitement en masse approprié, peuvent consommer trop de temps processeur.

          Exemple : Un flux planifié récupère 5000 enregistrements de compte et effectue des transformations complexes sur les données de chaque enregistrement avant de les mettre à jour.

          Utilisation d'approches alternatives

          Pour des volumes de données importants, tenez compte des points suivants :

          • Séparation du travail en plusieurs flux planifiés qui traitent chacun un sous-ensemble d'enregistrements
          • Utilisation du traitement par lot Apex pour des volumes de données extrêmes
          • Traitement incrémentiel des enregistrements au fil du temps
          • Utilisation d'événements de plate-forme pour distribuer le traitement entre plusieurs transactions

          Filtrez les données à l'avance afin de réduire le nombre d'enregistrements traités. Utilisez les filtres Obtenir des enregistrements pour récupérer uniquement les enregistrements dont vous avez besoin. Testez avec des volumes de données réalistes avant de les déployer en production.

          Flux multiples dans une transaction

          Lorsqu'un flux déclenche d'autres flux (par des changements d'enregistrement ou des flux secondaires), le temps processeur cumulé de tous les flux de la transaction est pris en compte dans la limite.

          Exemple : Un flux déclenché par un enregistrement dans les mises à jour de Compte exécute plusieurs flux secondaires et déclenche également d'autres flux déclenchés par un enregistrement dans des objets associés.

          Réduire les chaînes de flux

          Consolidez les automatisations associées en moins de flux. Vérifiez vos critères de déclencheur de flux pour vous assurer que les flux sont exécutés uniquement lorsque nécessaire. Vous pouvez utiliser des conditions d'entrée pour limiter l'exécution des flux déclenchés par un enregistrement.

          Examinez l'impact cumulé de toutes les automatisations (flux, processus, workflows, déclencheurs) qui peuvent être exécutées dans la même transaction. Surveillez et optimisez toute la chaîne d'automatisation.

          Chargements de données en masse

          Les flux déclenchés par un enregistrement exécutés lors d'importations de données en masse ou de mises à jour en masse nécessitent un traitement efficace de tous les enregistrements. Les flux inefficaces atteignent les limites du processeur pendant les opérations en masse, même s'ils fonctionnent correctement pour des enregistrements individuels.

          Exemple : Un utilisateur importe 200 enregistrements de compte. Le flux déclenché par un enregistrement avant la sauvegarde effectue plusieurs références et calculs pour chaque compte.

          Optimiser pour les opérations en masse

          • Utiliser le DML basé sur la collection et les requêtes
          • Prendre en compte les flux après la sauvegarde pour les opérations non critiques (ils sont exécutés de façon asynchrone et ont des limites en processeur plus élevées)
          • Utiliser des éléments Transformer (Filtre, Carte, Tri) qui fonctionnent sur des collections entières plus efficacement que des boucles

          Pour plus d'informations, consultez Élément Transformer.

          Les flux déclenchés par un enregistrement traitent toujours plusieurs enregistrements simultanément. Testez avec des chargements de données en masse (en utilisant Data Loader ou des mises à jour en masse) avant de les déployer en production. S'il n'est pas correctement conçu, un flux qui fonctionne parfaitement pour des enregistrements individuels peut échouer pendant des opérations en masse s'il n'est pas correctement conçu.

          Consignes générales de prévention

          • Surveiller les performances du flux : Consultez régulièrement les journaux de débogage Apex pour identifier les flux qui approchent les limites en processeur, même s'ils n'ont pas encore échoué. Un suivi régulier permet d'optimiser les flux avant qu'ils ne génèrent des problèmes de production.
          • Essai avec des données réalistes : Testez les flux avec des volumes de données réalistes afin de détecter les problèmes de performance avant l'activation. Généralement, le mode de débogage teste avec un seul enregistrement, ce qui ne révèle aucun problème d'opération en masse.
          • Décisions relatives à l'optimisation des documents : Utilisez des descriptions d'éléments pour noter l'emplacement où vous avez appliqué le traitement en masse ou d'autres optimisations. Cette documentation aide les futurs responsables à comprendre la conception et empêche l'introduction accidentelle de problèmes de performance.
          • Commencez simplement et optimisez : Élaborez des flux par petits incréments, en testant les performances à chaque étape. L'optimisation d'un flux de travail est plus facile que la correction d'un flux complexe rompu.

          Identification des éléments gourmands en processeur dans un flux

          Utilisez les journaux de débogage Apex pour identifier les éléments de votre flux qui consomment le plus de temps processeur.

          1. Accédez à Configuration, puis saisissez Journaux de débogage dans la case Recherche rapide.
          2. Configurez la consignation de débogage pour l'utilisateur qui rencontre l'erreur, ou exécutez le flux en mode Débogage.
          3. Reproduisez l'erreur en exécutant le flux.
          4. Ouvrez le journal de débogage généré.
          5. Recherchez ces événements clés dans le journal de débogage.
            • FLOW_CREATE_INTERVIEW_BEGIN : affiche le démarrage de chaque flux
            • FLOW_ELEMENT_LIMIT_USAGE : affiche la consommation de temps processeur pour chaque élément de flux
            • CUMULATIVE_LIMIT_USAGE : affiche les totaux en cours d'exécution du temps processeur
          6. Identifiez les éléments qui ont des valeurs de temps processeur élevées.
            Les coupables courants comprennent :
            • Bouclez les éléments avec de grandes collections.
            • Obtenir des éléments Enregistrements avec des filtres complexes.
            • Opérations DML avec plusieurs enregistrements (Création d'enregistrements, Mise à jour d'enregistrements, Supprimer des enregistrements).
            • Éléments Attribution avec des formules complexes.

          Vous savez maintenant quels éléments consomment le plus de temps processeur. Utilisez ces informations pour appliquer des optimisations ciblées.

          Pour plus d'informations sur les journaux de débogage, consultez Utilisation de journaux dans la Developer Console.

           
          Chargement
          Salesforce Help | Article