Guide du débutant / Blogs / Perficient

Laissez-moi vous emmener en voyage. Imaginez que vous êtes le gestionnaire d’une grande bibliothèque avec des livres dispersés sur d’innombrables étagères. Certains visiteurs viennent demander des livres par titre, d’autres par auteur, et certains souhaitent une liste de tous les livres disponibles dans un genre spécifique. Vous ne pouvez pas préparer toutes les réponses possibles à l’avance. Au lieu de cela, vous avez besoin d’un système capable de s’adapter à la volée à leurs questions en constante évolution. Salesforce offre cette flexibilité avec SOQL dynamique, SOSL dynamiqueet DML dynamique—des outils qui aident les développeurs à créer des applications capables de gérer l’inconnu.
Grâce à ce blog, nous explorerons ces concepts avec des exemples pertinents, comprendrons leur signification et découvrirons comment les utiliser efficacement. Que vous débutiez avec Salesforce ou que vous cherchiez à approfondir vos connaissances, vous trouverez ce parcours enrichissant !
La puissance du SOQL dynamique : création de requêtes flexibles
Commençons par SOQL dynamique. SOQL (Salesforce Object Query Language) est comme un moteur de recherche de données Salesforce. Mais parfois, on ne sait pas ce que l’utilisateur va rechercher jusqu’au dernier moment. C’est ici SOQL dynamique entre en jeu. Il vous permet de créer des requêtes SOQL au moment de l’exécution.
Comment ça marche ?
Les requêtes SOQL dynamiques sont créées sous forme de chaînes et exécutées dans du code Apex.
Par exemple:
String query = 'SELECT Id, Name FROM Account WHERE BillingCity = \'San Francisco\''; List<Account> accounts = Database.query(query);
Voici ce qui se passe :
- La chaîne de requête est construite dynamiquement à l’aide d’un nom de ville.
- La méthode Database.query exécute la requête et renvoie le résultat.
Pourquoi utiliser SOQL dynamique ?
- Recherches personnalisées: Créez des fonctionnalités de recherche où les utilisateurs peuvent définir leurs critères.
- Sélection de champ dynamique: Champs de requête ou objets déterminés au moment de l’exécution.
- Rapports flexibles: Générez des rapports basés sur les entrées de l’utilisateur.
Exemple: Imaginez une application dans laquelle les utilisateurs recherchent des contacts par ville. Au lieu d’écrire une requête pour chaque ville, vous utilisez :
String city = 'New York'; String query = 'SELECT Id, Name FROM Contact WHERE MailingCity = \'' + String.escapeSingleQuotes(city) + '\''; List<Contact> contacts = Database.query(query);
Prévenir l’injection SOQL
Le SOQL dynamique est puissant, mais il comporte des risques, comme Injection SOQLoù des utilisateurs malveillants manipulent les entrées. Pour sauvegarder :
- Utilisez String.escapeSingleQuotes() pour nettoyer les entrées.
- Utilisez Database.queryWithBinds.
Map<String, Object> binds = new Map<String, Object>{'city' => 'Chicago'}; String query = 'SELECT Id FROM Account WHERE BillingCity = :city'; List<Account> accounts = Database.queryWithBinds(query, binds);
La magie du SOSL dynamique : recherche parmi les objets
Alors que SOQL se concentre sur les requêtes structurées pour des objets spécifiques, SOSL (Langage de recherche d’objets Salesforce) est comme une recherche globale : elle analyse plusieurs objets à la fois. Dynamic SOSL vous permet de créer ces requêtes au moment de l’exécution.
Exemple en action
Imaginez qu’un visiteur demande : « Montrez-moi tout ce qui concerne « TechCorp » dans tous les enregistrements. » Voici comment fonctionne Dynamic SOSL :
String searchTerm = 'TechCorp'; String searchQuery = 'FIND \'' + String.escapeSingleQuotes(searchTerm) + '\' IN ALL FIELDS RETURNING Account(Id, Name), Contact(Id, Name)'; List<List<sObject>> searchResults = Search.query(searchQuery);
Pourquoi utiliser SOSL dynamique ?
- Recherche globale: recherchez plusieurs objets (par exemple, comptes, contacts, requêtes) avec une seule requête.
- Critères personnalisables: ajustez les termes de recherche de manière dynamique.
- Efficacité: localisez rapidement les enregistrements associés sans interroger chaque objet séparément.
DML dynamique : lorsque les mises à jour nécessitent de la flexibilité
Maintenant que nous avons recherché et récupéré les données de manière dynamique, parlons de DML (langage de manipulation de données)qui nous aide à créer, mettre à jour ou supprimer des enregistrements dans Salesforce.
Le DML dynamique est utilisé lorsque les noms de champs ou les types d’enregistrement ne sont pas prédéfinis. Cela le rend idéal pour les scénarios dans lesquels vous devez modifier des enregistrements de manière dynamique.
Mises à jour dynamiques des champs
Imaginez une application dans laquelle les utilisateurs sélectionnent les champs qu’ils souhaitent mettre à jour. Voici comment Dynamic DML le gère :
String fieldName="Industry"; String fieldValue="Technology"; Account acc = new Account(Id = '001xxxxxxxxxxxxxxx'); acc.put(fieldName, fieldValue); // Dynamically setting the field update acc; // DML operation
Dans cet exemple :
- La méthode put attribue dynamiquement une valeur au champ.
- L’opération de mise à jour enregistre les modifications.
Mises à jour dynamiques en masse
Le DML dynamique est particulièrement utile pour les opérations groupées. Par exemple, mettre à jour les champs de plusieurs enregistrements :
List<Account> accountsToUpdate = new List<Account>(); for (Account acc : [SELECT Id FROM Account WHERE Industry = 'Finance']) { acc.put('Industry', 'Technology'); accountsToUpdate.add(acc); } update accountsToUpdate;
Quand utiliser Dynamic SOQL, SOSL et DML
Voici une comparaison rapide du moment d’utiliser chaque outil :
Fonctionnalité | Idéal pour |
SOQL dynamique | Récupération de données structurées à partir d’objets spécifiques (par exemple, comptes par ville). |
SOSL dynamique | Rechercher parmi plusieurs objets avec un mot-clé (par exemple, rechercher des enregistrements par nom). |
DML dynamique | Mise à jour dynamique des enregistrements lorsque les champs ou les valeurs ne sont pas prédéfinis (par exemple, mises à jour groupées). |
Considérations clés pour les requêtes dynamiques et DML
- Limites du gouverneur: Dynamic SOQL, SOSL et DML sont soumis aux limites strictes du gouverneur de Salesforce (par exemple, 100 requêtes SOQL par transaction).
- Sécurité: Désinfectez toujours les entrées pour éviter les attaques par injection.
- Gestion des erreurs: Validez les noms de champs et les types d’objets pour éviter les erreurs d’exécution.
Conclusion : pourquoi maîtriser les requêtes dynamiques ?
Dynamic SOQL, SOSL et DML sont des outils qui transforment les applications statiques en systèmes dynamiques et conviviaux. Ils vous permettent de :
- Créez des applications flexibles et évolutives.
- Gérez facilement des scénarios complexes.
- Offrez aux utilisateurs des expériences de données personnalisées en temps réel.
Considérez ces outils comme l’épine dorsale de toute application Salesforce dynamique. Avec un peu de pratique, vous serez prêt à créer des applications qui s’adaptent parfaitement aux besoins de vos utilisateurs. Alors n’hésitez plus, expérimentez et débloquez la véritable puissance du développement dynamique de Salesforce !
Source link