Écriture d’une logique métier dans Apex
Vidéo de démonstration Trail Together
Vous souhaitez être guidé pas à pas par un expert pendant que vous travaillez sur cette étape ? Regardez cette vidéo qui fait partie de la série Trail Together.
(Ce clip commence à 34 min 00 s, au cas où vous voudriez revenir en arrière et regarder à nouveau le début de l’étape.)
Introduction
Apex est un langage de programmation fortement typé et orienté objet, optimisé pour s’exécuter dans l’architecture mutualisée de Salesforce. Apex permet aux développeurs d’automatiser des processus métier backend complexes et est compilé en bytecode Java.
Le langage Apex est optimisé pour interagir avec les données Salesforce et est étroitement intégré à la couche de persistance Salesforce. Apex fournit un langage SOQL (Salesforce Object Query Language), proche de SQL, pour exécuter des requêtes et des instructions DML (Data Manipulation Language) afin d’effectuer des opérations sur les bases de données avec les objets que vous avez créés précédemment.
Création et déploiement de la classe Apex
- Dans Visual Studio Code, sous force-app/main/default, faites un clic droit sur classes et sélectionnez SFDX : Create Apex Class.
- Dans la palette de commandes Visual Studio Code, nommez la classe
HouseService
. Cliquez sur Enter (Entrer) | Enter (Entrer).
- Remplacez le contenu du fichier par le code suivant :
public with sharing class HouseService { @AuraEnabled(cacheable=true) public static List<House__c> getRecords() { try { // Create a list of House records from a SOQL query List<House__c> lstHouses = [ SELECT Id, Name, Address__c, State__c, City__c, Zip__c FROM House__c WITH USER_MODE ORDER BY CreatedDate LIMIT 10 ]; return lstHouses; } // Code to handle exception catch (Exception e) { throw new AuraHandledException(e.getMessage()); } } }
Points marquants du code Dans ce code, vous créez une classe HouseService qui a une méthode nommée getRecords. La méthode renvoie la liste des enregistrements de maison (sous forme de collection ordonnée) en interrogeant l’objet House__c.
Remarquez que dans la classe Apex HouseService, vous faites apparaître automatiquement l’objet (House__c) que vous avez créé précédemment (à l’étape 2) en tant que classe sans écrire de fichier de classe. De plus, vous pouvez référencer les champs de l’objet House__c sous forme de propriétés sans avoir à les déclarer.
Nous avons utilisé SOQL pour écrire nos requêtes référençant l’objet et les champs sur l’objet. La requête est compilée et est donc vérifiée au moment de la compilation.
Vous avez établi un couplage étroit entre le modèle de données et la classe Apex. Vous ne pourrez désormais plus casser le code, car il ne se compilera pas si vous y apportez une modification qui n’est pas compatible avec le modèle de données.
- Enregistrez ce fichier.
- Faites un clic droit sur HouseService.cls et sélectionnez SFDX : Deploy Source to Org. Un message de confirmation vous indique que la classe Apex a été déployée dans l’organisation. Le déploiement de votre code le compile également sur le serveur.
Maintenant, testez si cette classe renvoie les résultats de la requête comme prévu à l’aide d’un script anonyme. Un script anonyme est un code Apex qui n’est pas stocké dans les métadonnées, mais qui peut être compilé et exécuté.
Suivez les étapes ci-dessous pour créer un script anonyme à tester.
- Créez un fichier nommé dreamhouseapp.apex dans le dossier scripts/apex.
- Remplacez le contenu du fichier par le code suivant :
System.debug(HouseService.getRecords());
- Cliquez sur l’indicateur en affichage tête haute Execute Anonymous Apex (Exécuter le script Apex anonyme) surligné en rose dans la capture d’écran ci-dessous.
Si la classe Apex que vous avez écrite est fonctionnelle, vous voyez les résultats de la requête dans le panneau de sortie illustré ci-dessous.
Apex est opiniâtre, étroitement couplé et optimisé pour fonctionner avec des applications professionnelles qui fonctionnent bien avec Salesforce. Il est rapidement sujet à des échecs au moment de la compilation si des références sont invalides.
Comme il s’intègre à la couche de persistance Salesforce et dispose d’une prise en charge intégrée pour travailler directement avec les données Salesforce sans avoir à associer des couches de données supplémentaires, vous pouvez gagner en productivité. En plus de cela, Apex encourage automatiquement les bonnes pratiques de codage en mettant en application les limites des gouverneurs et les exigences de test.
Ressources
- GitHub : Apex-Recipes
- Trailhead : Développement des compétences relatives au code Apex
- Trailhead : Déclencheurs Apex
- Documentation du développeur Salesforce : Débogueur Replay Apex