Salesforce nous permet de traiter ou d'exécuter un nombre particulier de déclarations / enregistrements à la fois. Il y a quelques limites pour les instructions DML, les classes Apex, etc., Pour exécuter ou traiter. Ces limites sont appelées limites de gouverneur. Dans ce tutoriel, nous verrons quelles sont les limites du gouverneur et comment elles peuvent être manipulées. En outre, Salesforce Apex fournit la classe «Limite» pour connaître les limites liées aux appels, aux classes Apex, aux composants Web Lightning, SOSL et SOQL.
Limites du gouverneur
Considérez un scénario où Alish et Subash sont deux personnes utilisant l'organisation Salesforce. Alice veut traiter ou exécuter 1000 instructions DML dans une seule transaction. En parallèle, Subash veut charger 5000 enregistrements à la fois. S'ils le font en parallèle, Salesforce n'acceptera pas et devient mouvementé. Par conséquent, les limites du gouverneur entrent en photo. Dans ce cas, Alish peut traiter 100 DML à la fois et Subash peut traiter 500 enregistrements à la fois. Ils peuvent utiliser l'apex AsynchronousBatch pour effectuer chaque transaction sur un fil séparé sans déranger chacun d'eux et terminer leur tâche.
Fondamentalement, les limites du gouverneur dans Salesforce limitent le traitement et l'exécution dans plusieurs transactions. Les dénombrements «par transaction Apex Limits» pour chaque transaction et «Limite Apex spécifique à la taille» traite de la taille du code. Salesforce prend en charge deux processus: les processus synchrones et asynchrones. Dans le processus synchrone, le script Apex est exécuté en un seul coup dans le processus asynchrone, le script Apex est exécuté en divisant en plusieurs travaux.
Limites autorisées
Discutons du nombre de limites pour différents scénarios:
Exemple de classe limite:
Apex peut spécifier les limites du gouverneur dans la classe «limite». Cette classe fournit des méthodes qui indiquent aux limites du gouverneur. Examinons l'exemple suivant qui affiche certaines limites du gouverneur:
Système.débogage ('Le nombre de requêtes agrégées peut être traitée:' + Limites.getLIMITAGGREGATEQUERIES ());Sortir:
Il peut également être possible de vérifier le nombre de instructions / lignes DML peut être renvoyée en utilisant les méthodes «dôme» qui sont présentes dans la classe «limite».
Exemple d'utilisation:
Écrivons une requête SOQL qui renvoie les deux enregistrements de l'objet «Workorder». Après cela, supprimez ces deux enregistrements à l'aide de «supprimer» DML.
Système.débogage ('instructions DML:' + limites.getDmlStatements ());Sortir:
Dans l'exemple donné, il n'y a pas de déclarations DML et 0 lignes. Le temps de processeur existant est de 1 milliseconde. Après avoir retourné 2 lignes de la requête SOQL et supprimé ces deux lignes, le nombre total d'instructions DML qui est renvoyée par les limites.getDmlStaté () est 1, les lignes totales renvoyées par les limites.getdmlRows () est 2, et le temps de processeur nécessaire pour exécuter cette transaction est de 51 millisecondes.
Best Practice Exemple: «N'utilisez jamais DML à l'intérieur de la boucle»
Voyons comment nous pouvons exécuter le code sans obtenir la limite du gouverneur. Nous créons d'abord un enregistrement sur l'objet «Produit» (API - Product2) à partir de l'objet «Workorder» en attribuant le «Workorder» soumis au «nom du produit» dans la boucle «For» elle-même. Voyons le code suivant:
Product2 prod_obj;Nous pouvons le faire mieux en déclarant une liste (prod_s), puis en stockant le prod_obj dans la liste. Nous pouvons insérer cette liste dans le produit en dehors de la boucle.
List prod_s = new list ();Conclusion
Nous avons maintenant appris quelles sont les limites Apex dans Salesforce avec une explication détaillée. Il est préférable de suivre le processus Apex asynchrone pour obtenir de meilleures limites de gouverneur par rapport à l'apex synchrone. Nous avons également appris les limites du gouverneur pour différents scénarios et avons fait une démonstration d'échantillon concernant le nombre de limites de la classe «limite». Nous avons également vérifié le nombre de déclarations DML, de lignes et de temps de CPU en exécutant une instruction DML. Nous avons conclu ce guide en discutant d'un exemple de meilleures pratiques.