Méthode future vs. Apex pouvant être mis en file d'attente dans Salesforce
Publié: 2023-11-20Dans le monde trépidant du développement Salesforce, il est crucial de comprendre les meilleurs outils et méthodes pour un codage efficace et efficient. Cet article aborde deux concepts clés : Future Method et Queueable Apex. Les deux sont des techniques puissantes utilisées dans Salesforce pour gérer les opérations asynchrones, mais elles ont des fonctionnalités et des cas d'utilisation distincts.
Nous explorerons les nuances de Future Method et Queueable Apex, en comparant leurs fonctionnalités, leurs avantages et quand les utiliser dans vos projets Salesforce. Que vous soyez un développeur chevronné ou nouveau sur Salesforce, cette comparaison vous fournira des informations précieuses, vous aidant à prendre des décisions éclairées pour optimiser votre code.
Restez à l’écoute pendant que nous démêlons les complexités et révélons le potentiel de Future Method et Queueable Apex dans Salesforce !
Table des matières
Pourquoi la méthode Future ?
Si vous souhaitez exécuter des processus dans un thread séparé, ultérieurement et que vous souhaitez exécuter le code de manière asynchrone, nous devons utiliser les méthodes futures.
Quand est-il utilisé ?
Ceux-ci sont utilisés pour les opérations de longue durée telles que les appels vers des services Web externes ou toute opération que vous souhaitez exécuter dans son propre thread.
Pourquoi Apex en file d'attente ?
Like the future est également utilisé pour exécuter le code asynchrone, et il vous permet d'ajouter des travaux dans une file d'attente et d'améliorer la manière d'exécuter du code asynchrone par rapport à la méthode future.
Quand est-il utilisé ?
Pour les processus Apex qui s'exécutent sur une longue période, tels que les opérations de base de données étendues ou les appels de services Web externes, vous pouvez les exécuter de manière asynchrone en implémentant l'interface Queueable.
Lisez également : Comment implémenter Salesforce SSO à l’aide d’OAuth ?
Différences entre les Apex futurs et en file d'attente :
Méthode future | Apex pouvant être mis en file d'attente |
---|---|
1. Future n'utilisera jamais pour travailler sur des SObjects ou des types d'objets. 2. Lorsque nous utilisons la méthode future, nous ne pouvons pas surveiller les tâches en cours. 3. La méthode future ne peut pas être appelée à l'intérieur de la classe future ou batch. 4. La future méthode ne sera jamais mise en file d'attente. | 1. Les tâches pouvant être mises en file d'attente peuvent contenir la variable membre sous forme de SObjects ou de types Apex personnalisés. 2. Lors de l'utilisation de tâches pouvant être mises en file d'attente, l'AsyncApexJob que nous pouvons surveiller sera créé comme des tâches planifiées. 3. Queueable Apex peut être appelé à partir de la classe future et par lots. 4. L'utilisation de Queueable Apex enchaînera les tâches pouvant être mises en file d'attente et dans Developer Edition, il n'y a que 5 tâches. |
Apex pouvant être mis en file d'attente
La classe Queueable est une classe créée en implémentant l'interface prédéfinie « Queueable ». Cette interface permet d'exécuter vos travaux asynchrones ou votre code de travail par rapport à la future méthode. Il vous permettra de surveiller les travaux qui sont dans la file d'attente (cette file d'attente est créée par l'interface Queueable afin que les travaux puissent s'exécuter de manière asynchrone).
Syntaxe:
la classe publique <Nom de la classe Queueable> implémente Queueable { // Il s'agit de la seule méthode contenue par l'interface Queueable et requise pour hériter de cette méthode dans la classe Queueable. public void exécuter (contexte QueueableContext) { //Code qui doit être exécuté } }
Tout processus Apex dont l'exécution prend beaucoup de temps, tel que des opérations de base de données étendues ou des appels de services Web externes, vous pouvez les exécuter de manière asynchrone en implémentant l'interface Queueable et en ajoutant une tâche à la file d'attente des tâches Apex.
Votre tâche Apex asynchrone s'exécute en arrière-plan dans son propre thread et ne retarde pas l'exécution de votre logique Apex principale. Chaque tâche en file d'attente s'exécute lorsque les ressources système deviennent disponibles. L'un des avantages de l'utilisation des méthodes d'interface est que certaines limites du gouverneur sont plus élevées que pour Apex synchrone, comme les limites de taille de segment.
Future méthode Apex
Le futur apex est utilisé pour exécuter des processus dans un thread séparé, plus tard lorsque les ressources système seront disponibles. Pour utiliser le futur apex, nous n'avons pas besoin de créer de classe, nous avons juste besoin d'utiliser l'annotation « @future » pour identifier les méthodes qui s'exécutent de manière asynchrone et pour indiquer que la méthode décrite sous cette annotation est une méthode future.
Lors de l'utilisation du traitement synchrone, tous les appels de méthode sont effectués à partir du même thread qui exécute le code Apex, et aucun traitement supplémentaire ne peut avoir lieu tant que le processus n'est pas terminé. Vous pouvez utiliser les méthodes futures pour toute opération que vous souhaitez exécuter de manière asynchrone dans son propre thread. Cela offre l'avantage de ne pas empêcher l'utilisateur d'effectuer d'autres opérations et de fournir des limites de régulation et d'exécution plus élevées pour le processus.
Syntaxe:
classe globale <ClassName> { // Vous trouverez ci-dessous une future annotation qui définit la méthode donnée comme étant la méthode future. @avenir public static void <FutureMethodName>(List<Id> recordIds) { List<Contact> comptes = [Sélectionnez l'ID, le Prénom, le Nom du contact Où Id IN :recordIds] ; // traite les enregistrements de contacts pour faire des choses géniales } }
Lisez également : Comment connecter l'intégration de Pipedrive et de Salesforce ?
Les méthodes futures sont généralement utilisées pour
Appels vers des services Web externes. Si vous effectuez des appels à partir d'un déclencheur ou après avoir effectué une opération DML, vous devez utiliser une méthode future ou pouvant être mise en file d'attente. Une légende dans un déclencheur maintiendrait la connexion à la base de données ouverte pendant toute la durée de vie de la légende.
Opérations que vous souhaitez exécuter dans leur propre thread lorsque le temps le permet, comme une sorte de calcul gourmand en ressources ou de traitement d'enregistrements
Remarque : La raison des objets ne peut pas être transmise comme arguments à la future méthode car l'objet peut changer entre le moment où vous appelez la méthode et le moment où elle s'exécute réellement. Les méthodes futures s'exécuteront lorsque les ressources système seront disponibles. Lorsqu'une future méthode est exécutée, elle peut avoir une ancienne valeur d'objet, ce qui peut provoquer toutes sortes de mauvaises choses.
Choses dont il faut se rappeler
- La future méthode doit être statique
- Le type de retour doit être nul
- Les paramètres spécifiés doivent être des types de données primitifs, des tableaux de types de données primitifs ou des collections de types de données primitifs.
- Vous pouvez appeler les méthodes futures de la même manière que n’importe quelle autre méthode. Cependant, une méthode future ne peut pas appeler une autre méthode future
- Pas plus de 50 appels de méthode par appel Apex
- Les appels asynchrones, tels que @future ou executeBatch, appelés dans un bloc startTest, stopTest, ne sont pas pris en compte dans vos limites de nombre de tâches en file d'attente.
Exemple pour la méthode Future et la classe Queueable
Ici, j'obtiens la valeur de 4 devises en dollars canadiens. Pour GBP, USD, AUD, CAD. Et enregistrer la valeur dans la devise des métadonnées personnalisées. Pour HTTPREQUEST, j'ai utilisé ici la méthode Future. Et comme il met à jour plusieurs enregistrements en même temps lors de l'exécution du lot, j'ai utilisé Queueable Apex qui met à jour plusieurs enregistrements à la fois.
Mise à jour personnalisée des métadonnées personnalisées
Classe pouvant être mise en file d'attente
Appel de la méthode Future et envoi de la liste pour mise à jour dans la classe Queueable
Emizentech est une société de conseil en force de vente authentique et expérimentée et nos développeurs experts en force de vente peuvent vous fournir une assistance professionnelle pour votre prochain projet de force de vente.