Schreiben von Geschäftslogik in Apex
Nachvollziehen der Schritte aus "Trail Together"
Möchten Sie bei diesem Schritt einem Experten folgen? Sehen Sie sich dieses Video an, das zur Serie "Trail Together" gehört.
(Dieser Clip startet bei der Minutenmarke 34:00, falls Sie zurückspulen und sich den Anfang des Schritts erneut ansehen möchten.)
Einführung
Apex ist die stark typisierte, objektorientierte Programmiersprache, die für die Ausführung in der mandantenfähigen Salesforce-Architektur optimiert ist. Apex ermöglicht es Entwicklern, komplexe Back-End-Geschäftsprozesse zu automatisieren und wird zu Java-Bytecode kompiliert.
Die Sprache Apex wurde für die Interaktion mit Salesforce-Daten optimiert und ist eng in die Salesforce-Persistenzschicht integriert. Apex bietet SOQL (Salesforce Object Query Language), ähnlich wie SQL, für die Ausführung von Abfragen und DML-Anweisungen (Data Manipulation Language) für die Durchführung von Datenbankoperationen mit den zuvor erstellten Objekten.
Erstellen und Bereitstellen der Apex-Klasse
- Klicken Sie in Visual Studio Code unter force-app/main/default mit der rechten Maustaste auf classes, und wählen Sie SFDX: Create Apex Class (SFDX: Apex-Klasse erstellen) aus.
- Benennen Sie in der Befehlspalette von Visual Studio Code die Klasse
HouseService
. Klicken Sie auf Eingabe | Eingabe.
- Ersetzen Sie den Inhalt der Datei durch den folgenden Code.
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()); } } }
Code Highlights Mit diesem Code erstellen Sie eine Klasse HouseService, die über eine Methode mit dem Namen getRecords verfügt. Die Methode gibt die Liste der Hausdatensätze (in Form einer geordneten Sammlung) zurück, indem sie das House__c-Objekt abfragt.
Beachten Sie, dass Sie in der Apex-Klasse HouseService automatisch das Objekt (House__c), das Sie zuvor erstellt hatten (in Schritt 2) als eine Klasse vorkommen lassen, ohne dazu eine Klassendatei erstellt zu haben. Darüber hinaus können Sie auf die Felder im Objekt "House__c" als Eigenschaften verweisen, ohne sie zuvor deklarieren zu müssen.
Wir haben SOQL verwendet, um unsere Abfragen zu schreiben, die auf das Objekt und die Felder des Objekts verweisen. Die Abfrage lässt sich kompilieren und durchläuft daher zur Kompilierzeit eine Typprüfung.
Sie haben eine enge Kopplung zwischen dem Datenmodell und der Apex-Klasse hergestellt. Jetzt lässt sich der Code effektiv nicht mehr zerstören, denn er lässt sich nicht kompilieren, wenn Sie eine zum Datenmodell inkonsistente Codeänderung vornehmen.
- Speichern Sie diese Datei.
- Klicken Sie mit der rechten Maustaste auf HouseService.cls, und wählen Sie SFDX: Deploy This Source to Org (SFDX: Diese Quelle in der Organisation bereitstellen) aus. Es wird eine Bestätigungsmeldung angezeigt, dass die Apex-Klasse erfolgreich in der Organisation bereitgestellt wurde. Durch die Bereitstellung Ihres Codes wird er zugleich auf dem Server kompiliert.
Testen Sie nun mit einem anonymen Skript, ob diese Klasse wie erwartet Abfrageergebnisse zurückgibt. Ein anonymes Skript ist Apex-Code, der nicht in den Metadaten gespeichert wird, aber kompiliert und ausgeführt werden kann.
Führen Sie die Schritte unten aus, um ein anonymes Skript für den Test zu erstellen.
- Erstellen Sie eine neue Datei mit dem Namen dreamhouseappTest.apex im Ordner scripts/apex.
- Ersetzen Sie den Inhalt der Datei durch den folgenden Code:
System.debug(HouseService.getRecords());
- Klicken Sie auf Code Lens Execute Anonymous Apex (Anonymen Apex-Code ausführen), der im Screenshot unten pink hervorgehoben ist.
Wenn die von Ihnen geschriebenen Apex-Klasse funktionstüchtig ist, sehen Sie die Abfrageergebnisse im unten abgebildeten Ausgabebereich.
Apex ist speziell für die Funktion mit Geschäftsanwendungen, die gut mit Salesforce zusammenarbeiten, konzipiert, optimiert und eng integriert. Es schlägt bei der Kompilierung leicht fehl, falls irgendwelche Verweise ungültig sind.
Durch die direkte Integration mit der Persistenzschicht von Salesforce und die integrierte Unterstützung für das direkte Arbeiten mit Salesforce-Daten ohne Notwendigkeit für zusätzliche Datenebenen können Sie produktiver arbeiten. Darüber hinaus fördert Apex automatisch gute Programmiertechniken durch die Durchsetzung von Obergrenzen und Testanforderungen.
Ressourcen
- GitHub: Apex-Recipes (Apex-Rezepte)
- Trailhead: Entwickeln von Apex-Programmierkenntnissen
- Trailhead: Apex-Auslöser
- Dokumentation für Salesforce-Entwickler: Apex Replay Debugger