Scrivere la logica di business in Apex
Seguire il processo con Trail Together
Hai bisogno dell'assistenza di un esperto per completare questa fase? Dai un'occhiata a questo video, che fa parte della serie Trail Together.
(Questa clip inizia al minuto 34:00 nel caso in cui desideri tornare indietro e riguardare l'inizio della fase.)
Introduzione
Apex è un linguaggio di programmazione fortemente tipizzato e orientato agli oggetti, ottimizzato per funzionare nell'architettura multitenant di Salesforce. Consente agli sviluppatori di automatizzare complessi processi aziendali di backend e viene compilato in bytecode Java.
Il linguaggio Apex è ottimizzato per interagire con i dati Salesforce ed è strettamente integrato con il livello di persistenza di Salesforce. Apex fornisce il linguaggio SOQL (Salesforce Object Query Language), simile a SQL, per l'esecuzione di query e il linguaggio DML (Data Manipulation Language) per eseguire operazioni sul database con gli oggetti creati in precedenza.
Creare e distribuire la classe Apex
- In Visual Studio Code, in force-app/main/default, fai clic con il tasto destro su classes e seleziona SFDX: Create Apex Class (SFDX: Crea classe Apex).
- Nella tavolozza dei comandi di Visual Studio Code, assegna alla classe il nome
HouseService
. Fai clic su Enter (Invio) | Enter (Invio).
- Sostituisci il contenuto del file con il codice seguente.
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()); } } }
Dati salienti del codice Questo codice crea una classe HouseService che ha un metodo denominato getRecords. Il metodo restituisce l'elenco dei record relativi alle case (come raccolta ordinata) eseguendo una query sull'oggetto House__c.
Tieni presente che nella classe Apex HouseService l'oggetto (House__c) creato in precedenza (fase 2) viene automaticamente esposto come classe senza che sia necessario scrivere un file di classe. Inoltre, è possibile fare riferimento ai campi nell'oggetto House__c come a proprietà senza che sia necessario dichiararle.
Abbiamo utilizzato SOQL per scrivere la query facendo riferimento all'oggetto e ai campi dell'oggetto. La query viene compilata e quindi i tipi utilizzati vengono controllati in fase di compilazione.
Abbiamo stabilito uno stretto accoppiamento tra il modello di dati e la classe Apex. Non è possibile introdurre errori nel codice, perché non verrà compilato se vengono apportate modifiche che non sono coerenti con il modello di dati.
- Salva questo file.
- Fai clic con il tasto destro su HouseService.cls e seleziona SFDX: Deploy Source to Org (SFDX: Distribuisci sorgente a Org). Vedrai un messaggio di conferma che indica che la classe Apex è stata distribuita correttamente nell'organizzazione. Con la distribuzione il codice viene anche compilato sul server.
Ora verifica se questa classe restituisce i risultati della query come previsto, utilizzando uno script anonimo. Uno script anonimo è codice Apex che non viene memorizzato nei metadati, ma che può essere compilato ed eseguito.
Segui la procedura qui sotto per creare uno script anonimo da testare.
- Crea un nuovo file denominato dreamhouseapp.apex nella cartella scripts/apex.
- Sostituisci il contenuto del file con il codice seguente:
System.debug(HouseService.getRecords());
- Fai clic sulla Code Lens Execute Anonymous Apex (Esegui Apex anonimo) evidenziata in rosa nell'immagine della schermata sottostante.
Se la classe Apex che hai scritto funziona, vedrai i risultati della query nel riquadro Output mostrato di seguito.
Apex è prescrittivo, strettamente accoppiato e ottimizzato per lavorare con le applicazioni aziendali che funzionano bene con Salesforce. In presenza di riferimenti non validi, vengono immediatamente generati errori in fase di compilazione.
Grazie all'integrazione con il livello di persistenza di Salesforce e al supporto integrato per operare sui dati Salesforce direttamente senza la necessità di aggiungere altri livelli di dati, Apex permette di essere più produttivi. Inoltre, Apex favorisce automaticamente l'adozione di buone prassi di programmazione applicando limiti del governor e requisiti di testing.
Risorse
- GitHub: Apex-Recipes
- Trailhead: Acquisire competenze di programmazione in Apex
- Trailhead: Trigger Apex
- Documentazione per gli sviluppatori Salesforce: Apex Replay Debugger