Tutorial APEX: Clasa de programare Apex și exemple de codare

Ce este Apex în Salesforce?

Apex este un limbaj de programare orientat pe obiecte și puternic tipizat, dezvoltat de Salesforce pentru construirea Software as a Service (SaaS) și Customer Relationship Management (CRM). Apex ajută dezvoltatorii să creeze aplicații SaaS terțe și să adauge logica de afaceri evenimentelor de sistem, oferind suport pentru baze de date back-end și interfețe client-server.

Apex îi ajută pe dezvoltatori să adauge logica de afaceri la evenimentele de sistem, cum ar fi clicuri pe butoane, actualizări aferente înregistrărilor și pagini Visualforce. Apex are o sintaxă similară cu Java. Înregistrați-vă pentru Salesforce pentru a afla cum funcționează CRM-ul

Caracteristicile limbajului de programare Apex

Iată care sunt caracteristicile importante ale Salesforce Apex:

  • Apex este un limbaj care nu ține seama de majuscule și minuscule.
  • Puteți efectua operațiuni DML precum INSERT, UPDATE, UPSERT, DELETE pe înregistrările sObject folosind apex.
  • Puteți interoga înregistrările sObject utilizând SOQL (limbaj de interogare obiect Salesforce) și SOSL (limbaj de căutare obiect Salesforce) în apex.
  • Vă permite să creați un test de unitate și executați-le pentru a verifica acoperire cod și eficiența codului în apex.
  • Apex se execută într-un mediu cu mai mulți chiriași și Salesforce a definit niște limite de guvernare care împiedică un utilizator să controleze resursele partajate. Orice cod care depășește limita guvernatorului Salesforce eșuează, apare o eroare.
  • Obiectul Salesforce poate fi folosit ca tip de date în apex. De exemplu -
    Account acc = new Account();

    ,aici Contul este un obiect standard de vânzări.

  • Apex se actualizează automat cu fiecare lansare Salesforce.

Când ar trebui dezvoltatorul să aleagă Apex

Codul Apex ar trebui scris numai dacă un scenariu de afaceri este prea complex și nu poate fi implementat folosind funcționalitatea predefinită oferită de Salesforce.

Următoarele sunt câteva scenarii în care trebuie să scriem codul apex:

  • Pentru a crea servicii web care integrează Salesforce cu alte aplicații.
  • Pentru a implementa validarea personalizată pe obiecte.
  • Pentru a executa logica apex personalizată atunci când este efectuată o operație DML.
  • Pentru a implementa funcționalități care nu pot fi implementate folosind fluxurile de lucru existente și funcționalitatea generatorilor de procese.
  • A înscena servicii de e-mail, trebuie să includeți procesarea conținutului, antetelor și atașamentelor de e-mail folosind codul apex.

Structura de lucru a Apex

Acum, în acest tutorial Apex, vom afla despre structura de lucru a Apex:

Următoarele sunt fluxul de acțiuni pentru un cod apex:

  • Acțiunea dezvoltatorului: tot codul apex scris de un dezvoltator este compilat într-un set de instrucțiuni care pot fi înțelese de interpretul apex runtime atunci când dezvoltatorul salvează codul pe platformă, iar aceste instrucțiuni le salvează apoi ca metadate pe platformă.
  • Acțiunea utilizatorului final: Când evenimentul utilizatorului execută un cod apex, serverul platformei primește instrucțiunile compilate din metadate și le rulează prin interpretul apex înainte de a returna rezultatul.
Structura de lucru a Apex
Structura de lucru a Apex

Sintaxa Apex

Declarație variabilă

Deoarece apex este un limbaj puternic tipizat, este obligatoriu să declarați o variabilă cu tipul de date în apex.

De exemplu:

contact con = new contact(); 

aici variabila con este declarată cu contact ca tip de date.

Interogare SOQL

SOQL reprezintă limbajul de interogare obiect Salesforce. SOQL este utilizat pentru a prelua înregistrările sObject din baza de date Salesforce. De exemplu-

Account acc = [select id, name from Account Limit 1]; 

Interogarea de mai sus preia înregistrarea contului din baza de date Salesforce.

Declarație de buclă

Instrucțiunea buclă este folosită pentru a itera înregistrările dintr-o listă. Numărul de iterații este egal cu numărul de înregistrări din listă. De exemplu:

list<Account>listOfAccounts = [select id, name from account limit 100];
// iteration over the list of accounts
for(Account acc : listOfAccounts){
	//your logic
}

În fragmentul de cod de mai sus, listOfAccounts este o variabilă a tipului de date listă.

Declarație de control al fluxului

Declarația de control al fluxului este benefică atunci când doriți să executați unele linii ale codului pe baza unor condiții.

De exemplu:

list<Account>listOfAccounts = [select id, name from account limit 100];
// execute the logic if the size of the account list is greater than zero
if(listOfAccounts.size() >0){
	//your logic
}

Fragmentul de cod de mai sus este interogarea înregistrărilor contului din baza de date și verificarea dimensiunii listei.

Declarație DML

DML înseamnă limbaj de manipulare a datelor. Instrucțiunile DML sunt folosite pentru a manipula datele din baza de date Salesforce. De exemplu -

Account acc = new Account(Name = ‘ Test Account’);
Insert acc; //DML statement to create account record.

Mediul de dezvoltare Apex

Acum, în acest tutorial de programare Apex, vom afla despre mediul de dezvoltare Apex:

Codul Apex poate fi dezvoltat fie în sandbox și ediția pentru dezvoltatori a Salesforce.

Este cea mai bună practică să dezvoltați codul în mediul sandbox și apoi să îl implementați în mediul de producție.

Mediul de dezvoltare Apex

Instrumente de dezvoltare a codului Apex: Următoarele sunt cele trei instrumente disponibile pentru dezvoltarea codului Apex în toate edițiile Salesforce.

  • Consola pentru dezvoltatori Force.com
  • IDE Force.com
  • Editor de cod în interfața de utilizator SalesforceYou

Tip de date în Apex

Următoarele sunt tipurile de date acceptate de apex:

Primitiv

Întreg, Double, Long, Date, Date Time, String, ID și Boolean sunt considerate tipuri de date primitive. Toate tipurile de date primitive sunt transmise după valoare, nu prin referință.

Colecţii

În Apex sunt disponibile trei tipuri de colecție

  • Listă: este o colecție ordonată de primitive, sObjects, colecții sau obiecte Apex bazate pe indici.
  • Set: O colecție neordonată de primitive unice.
  • Hartă: este o colecție de chei unice, primitive care se mapează la valori unice care pot fi primitive, sObjects, colecții sau obiecte Apex.

sObiect

Acesta este un tip de date special în Salesforce. Este asemănător cu o masă în SQL și conține câmpuri care sunt similare coloanelor din SQL.

Enumere

Enum este un tip de date abstract care stochează o valoare a unui set finit de identificatori specificați

Clase

Obiecte

Se referă la orice tip de date care este acceptat în Apex.

Interfețe

Specificator de acces Apex

Următoarele sunt specificatoarele de acces acceptate de apex:

Public

Acest specificator de acces oferă acces la o clasă, metodă, variabilă care urmează să fie utilizată de un apex într-un spațiu de nume.

Privat

Acest specificator de acces oferă acces la o clasă, metodă, variabilă care urmează să fie utilizată local sau în cadrul secțiunii de cod, este definit. Toate tehnica, variabilele care nu au nici un specificator de acces definit au specificatorul de acces implicit privat.

Protejat

Acest specificator de acces oferă acces la o metodă, variabilă care trebuie utilizată de orice clase interioare din definirea clasei Apex.

Caritate

Acest specificator de acces oferă acces la o clasă, metodă, variabilă care urmează să fie utilizată de un apex într-un spațiu de nume, precum și în afara spațiului de nume. Este cea mai bună practică să nu utilizați cuvântul cheie global până când este necesar.

Cuvinte cheie în Apex

Cu partajare

Dacă o clasă este definită cu acest cuvânt cheie, atunci toate regulile de partajare se aplică utilizatorului curent și dacă acest cuvânt cheie este absent, atunci codul se execută în contextul sistemului.

De exemplu:

public with sharing class MyApexClass{
// sharing rules enforced when code in this class execute
}

Fără a împărtăși

Dacă o clasă este definită cu acest cuvânt cheie, atunci toate regulile de partajare se aplică utilizatorului curent nu sunt aplicate.

De exemplu:

public without sharing class MyApexClass{
// sharing rules is not enforced when code in this class execute
}

Static

O variabilă, Metoda este definită cu cuvântul cheie static este inițializată o dată și asociată cu clasa. Variabilele statice, metodele pot fi apelate direct după numele clasei, fără a crea instanța unei clase.

Final

O constantă, Metoda este definită cu cuvântul cheie final nu poate fi înlocuită. De exemplu:

public class myCls {
static final Integer INT_CONST = 10;
}

Dacă încercați să suprascrieți valoarea pentru această variabilă INT_CONST, atunci veți obține o excepție – System.FinalException: Variabila finală a fost deja inițializată.

Retur

Acest cuvânt cheie returnează o valoare dintr-o metodă. De exemplu:

public String getName() {
return  'Test' ;
}

Null

Acesta definește o constantă nulă și poate fi atribuită unei variabile. De exemplu

 Boolean b = null;

Virtual

Dacă o clasă este definită cu un cuvânt cheie virtual, aceasta poate fi extinsă și suprascrisă.

Abstract

Dacă o clasă este definită cu cuvânt cheie abstract, trebuie să conțină cel puțin o metodă cu cuvânt cheie abstract și acea metodă ar trebui să aibă doar o semnătură.

De exemplu

public abstract class MyAbstrtactClass {
abstract Integer myAbstractMethod1();
}

String Apex

Un șir este un set de caractere fără limite de caractere. De exemplu:

String name = 'Test';

Există mai multe metode încorporate furnizate de clasa String în salesforce. Următoarele sunt câteva funcții utilizate frecvent și cel mai des:

abreviat(maxWidth)

Această metodă trunchiază un șir la lungimea specificată și îl returnează dacă lungimea șirului dat este mai mare decât lungimea specificată; în caz contrar, returnează șirul original. Dacă valoarea variabilei maxWidth este mai mică de 4, această metodă returnează o excepție de rulare – System.StringException: Lățimea minimă a abrevierilor este 4

De exemplu:

String s = 'Hello World';
String s2 = s.abbreviate(8);
System.debug('s2'+s2); //Hello...

valorifica()

Această metodă convertește prima literă a unui șir în majuscule și o returnează.

De exemplu:

String s = 'hello;
String s2 = s.capitalize();
System.assertEquals('Hello', s2);

conține (subșir)

Această metodă returnează true dacă șirul care apelează metoda conține subșirul specificat.

String name1 = 'test1';
String name2 = 'test2';
Boolean flag = name.contains(name2);
System.debug('flag::',+flag); //true

equals(stringOrId)

Această metodă returnează true dacă parametrul transmis nu este nul și indică aceeași secvență binară de caractere ca și șirul care apelează metoda.

În timp ce se compară valorile ID, lungimea ID-urilor poate să nu fie egală. De exemplu: dacă un șir care reprezintă ID de 15 caractere este comparat cu un obiect care reprezintă ID de 18 caractere, această metodă returnează adevărat. De exemplu:

Id idValue15 = '001D000000Ju1zH';
Id idValue18 = '001D000000Ju1zHIAR';
Boolean result4 = stringValue15.equals(IdValue18);
System.debug('result4', +result4); //true

În exemplul de mai sus, metoda equals compară 15 caractere Id-ul obiectului cu 18 caractere Id-ul obiectului și dacă ambele aceste id-uri reprezintă aceeași secvență binară, va returna adevărat.

Utilizați această metodă pentru a face comparații sensibile la majuscule și minuscule.

escapeSingleQuotes(stringToEscape)

Această metodă adaugă un caracter de escape (\) înaintea oricărei ghilimele dintr-un șir și îl returnează. Această metodă previne injectarea SOQL în timpul creării unei interogări SOQL dinamice. Această metodă asigură că toate ghilimelele simple sunt considerate ca șiruri de caractere care înglobează, în loc de comenzile bazei de date.

De exemplu:

String s = 'Hello Tom';
system.debug(s); // Outputs 'Hello Tom'
String escapedStr = String.escapeSingleQuotes(s);
// Outputs \'Hello Tom\'

elimina (subșir)

Această metodă elimină toată apariția subșirului menționat din șirul care apelează metoda și returnează șirul rezultat.

De exemplu

String s1 = 'Salesforce and force.com';
String s2 = s1.remove('force');
System.debug( 's2'+ s2);// 'Sales and .com'

subșir (startIndex)

Această metodă returnează un subșir începe de la caracterul de la startIndex se extinde până la ultimul șir.

De exemplu:

String s1 = 'hamburger';
String s2 = s1.substring(3);
System.debug('s2'+s2); //burger

verso()

Această metodă inversează toate caracterele unui șir și îl returnează. De exemplu:

String s = 'Hello';
String s2 = s.reverse();
System.debug('s2::::'+s2);// olleH  // Hello

trim(): Această metodă elimină toate spațiile albe principale dintr-un șir și îl returnează.

valueOf(pentru a converti)

Această metodă returnează reprezentarea șirului de obiect transmis.

Limitele guvernatorului Apex

Limitele guvernatorului Apex sunt limitele impuse de motorul de execuție Apex pentru a se asigura că orice cod și procese Apex ale pistei nu controlează resursele partajate și nu încalcă procesarea pentru alți utilizatori în mediul multi-tenant. Aceste limite sunt verificate pentru fiecare tranzacție apex. Următoarele sunt limitele guvernatorului definite de forța de vânzări pentru fiecare tranzacție de vârf:

Description Limita
Interogări SOQL care pot fi efectuate într-o tranzacție sincronă 100
Interogări SOQL care pot fi efectuate într-o tranzacție asincronă 200
Înregistrări care pot fi preluate printr-o interogare SOQL 50000
Înregistrări care pot fi preluate de Database.getQueryLocator 10000
Interogări SOSL care pot fi efectuate într-o tranzacție apex 20
Înregistrări care pot fi preluate printr-o interogare SOSL 2000
Declarații DML care pot fi făcute într-o tranzacție apex 150
Înregistrări care pot fi procesate ca urmare a unei instrucțiuni DML, Approval.process sau database.emptyRecycleBin 10000
Anunțuri care pot fi făcute într-o tranzacție apex. 100
Limită de timeout cumulativă pentru toate înștiințările care sunt efectuate într-o tranzacție apex 120 secunde
Limitați joburile apex care pot fi adăugate la coadă cu System.enqueueJob 50
Limită de timp de execuție pentru fiecare tranzacție Apex 10 minute
Limitează caracterele care pot fi folosite într-o clasă apex și declanșator 1 milioane de euro
Limită de timp CPU pentru tranzacția sincronă XISUM milisecunde
Limită de timp CPU pentru tranzacția asincronă XISUM milisecunde

Apex Getter și Setter

Proprietatea apex este similară cu variabila apex. Getter și setter sunt necesare pentru o proprietate apex. Getter și setter pot fi folosite pentru a executa cod înainte ca valoarea proprietății să fie accesată sau modificată. Codul din accesoriul get se execută atunci când este citită o valoare a proprietății. Codul din accesorul set rulează atunci când o valoare de proprietate este modificată. Orice proprietate care are accesor get este considerată doar citire, orice proprietate care are accesor set este considerată a scrie numai orice proprietate care are atât accesor, cât și accesoriu set este considerată citire-scriere. Sintaxa unei proprietăți de vârf:

public class myApexClass {
// Property declaration
	access_modifierreturn_typeproperty_name {
	get {
			//code  
		}
		set{
			//code
		}
	}

Aici, access_modifier este modificatorul de acces al proprietății. return_type este dataType al proprietății. property_name este numele proprietății.

Mai jos este un exemplu de proprietate apex având atât accesoriul get, cât și set.

public class myApex{
	public String name{
		get{ return name;}
		set{ name = 'Test';}
	}
}

Aici, numele proprietății este name și este proprietate publică și returnează un șir dataType.

Nu este obligatoriu să aveți un cod în blocul get și set. Aceste blocuri pot fi lăsate goale pentru a defini o proprietate automată. De exemplu:

public double MyReadWriteProp{ get; set; } 

Accesorul Get și set poate fi definit și cu modificatorul lor de acces. Dacă un accesoriu este definit cu un modificator, atunci acesta înlocuiește modificatorul de acces pentru proprietate. De exemplu:

public String name{private get; set;}// name is private for read and public to write.

Clasa Apex

O clasă apex este un model sau un șablon din care sunt create obiecte. Un obiect este instanța unei clase.

Există trei moduri de a crea clase apex în Salesforce:

Consola pentru dezvoltatori

IDE Force.com

Pagina de detalii a clasei Apex.

În apex, puteți defini o clasă exterioară numită și clasă de nivel superior și puteți defini, de asemenea, clase într-o clasă exterioară numită clase interioare.

Este obligatoriu să folosiți modificatorul de acces precum global sau public în declarația clasei externe.

Nu este necesar să folosiți modificatorul de acces în declarația claselor interne.

O clasă apex este definită folosind cuvântul cheie class urmat de numele clasei.

Cuvântul cheie Extends este folosit pentru a extinde o clasă existentă cu o clasă apex, iar cuvântul cheie implements este folosit pentru a implementa o interfață printr-o clasă apex.

Salesforce Apex nu acceptă moșteniri multiple, o clasă apex poate extinde doar o clasă apex existentă, dar poate implementa mai multe interfețe.

O clasă apex poate conține un constructor definit de utilizator, iar dacă un constructor definit de utilizator nu este disponibil, se folosește un constructor implicit. Codul dintr-un constructor se execută atunci când este creată o instanță a unei clase.

Sintaxa exemplului clasei Apex:

public class myApexClass{
// variable declaration
//constructor
	public myApexClass{
	}
//methods declaration
}

Cuvântul cheie nou este folosit pentru a crea o instanță a unei clase apex. Mai jos este sintaxa pentru crearea unei instanțe a unei clase apex.

myApexClass obj = new myApexClass();

Apex Trigger

Declanșatoarele Apex vă permit să executați apex personalizat înainte și după efectuarea unei operațiuni DML.

Apex acceptă următoarele două tipuri de declanșatori:

Înainte de declanșatoare: Acești declanșatori sunt utilizați pentru a valida și actualiza valoarea câmpului înainte de salvarea înregistrării în baza de date.

După declanșatoare: Acești declanșatori sunt utilizați pentru a accesa câmpurile (ID înregistrare, câmp LastModifiedDate) setate de sistem după o înregistrare trimisă în baza de date. Valoarea acestor câmpuri poate fi folosită pentru a modifica alte înregistrări. Înregistrările care se declanșează după declanșări sunt doar pentru citire.

Este cea mai bună practică să scrieți declanșatoare voluminoase. Un declanșator voluminos poate procesa o singură înregistrare, precum și mai multe înregistrări simultan.

Sintaxa unui declanșator apex:

trigger TriggerName on ObjectName (trigger_events) {
	//Code_block
 }

Aici, TriggerName este numele declanșatorului, ObjectName este numele obiectului pe care declanșatorul va fi scris, trigger_events este lista de evenimente separate prin virgulă.

Următoarele sunt evenimentele suportate de declanșatoarele apex: înainte de inserare, înainte de actualizare, înainte de ștergere, după inserare, după o actualizare, după ștergere, după anulare.

Cuvintele cheie statice nu pot fi utilizate într-un declanșator Apex. Toate cuvintele cheie aplicabile claselor interne pot fi utilizate într-un declanșator Apex.

Există variabile implicite definite de fiecare declanșator care returnează contextul de rulare. Aceste variabile sunt definite în sistem. Clasa de declanșare. Aceste variabile sunt numite variabile de context. Captura de ecran de mai jos arată variabila de context suportată de declanșatorul apex.

Apex Trigger

Apex Trigger

Următoarele sunt luarea în considerare a variabilei de context în declanșatorul apex:

  • Nu utilizați trigger.new și trigger.old în operațiunile DML.
  • Trigger.new nu poate fi șters.
  • Trigger.new este doar pentru citire.
  • Trigger.new poate fi folosit pentru a modifica valorile câmpurilor de pe același obiect numai înainte de declanșare.

Capturile de ecran de mai jos listează considerațiile despre acțiuni specifice în diferite evenimente de declanșare.

Apex Trigger

Apex Trigger

Clasa lot în Apex

Clasa lot în salesforce este utilizată pentru a procesa un număr mare de înregistrări care ar depăși limitele guvernatorului apex dacă ar fi procesate în mod normal. Clasa batch execută codul asincron.

Următoarele sunt avantajele clasei lot:

  • Clasa batch procesează datele în bucăți și dacă o bucată nu reușește să proceseze cu succes, toate bucățile procesate cu succes nu se derulează înapoi.
  • Fiecare bucată de date dintr-o clasă de lot procesată cu un nou set de limite de guvernare care asigură că codul se execută în limitele de execuție de guvernator.
  • Bază de date. Interfața batchable trebuie implementată de o clasă apex pentru a fi utilizată ca clasă batch. Acesta oferă trei metode care trebuie implementate de clasa batch.

Mai jos sunt cele trei metode oferite de Database. Interfață batchable:

1.start()

Această metodă generează domeniul de înregistrări sau obiecte care urmează să fie procesate de metoda de executare a interfeței. În timpul execuției lotului, acesta este apelat o singură dată. Această metodă returnează fie un obiect Database.QueryLocator, fie un Iterable. Numărul de înregistrări preluate de interogarea SQL folosind obiectul Database.QueryLocator este de 50 de milioane de înregistrări, dar folosind un iterabil, numărul total de înregistrări care pot fi preluate de interogarea SQL este de numai 50000. Iterable este folosit pentru a genera un domeniu complex pentru clasa batch.

Sintaxa metodei de pornire:

global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}

2.executa()

Această metodă este utilizată pentru procesarea fiecărei bucăți de date. Pentru fiecare bucată de înregistrări se apelează metoda execute. Dimensiunea implicită a lotului pentru execuție este de 200 de înregistrări. Metoda Execute are două argumente:

O referință la obiectul Database.BatchableContext,

O listă de sObjects, cum ar fi Listă , sau o listă de tipuri parametrizate. Sintaxa metodei execute:

global void execute(Database.BatchableContext BC, list<P>){}

3.termină()

Metoda finish este apelată o dată în timpul execuției clasei batch. Operațiile de post-procesare pot fi efectuate în metoda de finisare. De exemplu: trimiterea e-mailului de confirmare. Această metodă este apelată atunci când tot lotul este procesat. Sintaxa metodei Finish:

global void finish(Database.BatchableContext BC){}

Database.BatchableContext obiect

Fiecare metodă a bazei de date. Interfața batchable are o referință la obiectul Database.BatchableContext.

Acest obiect este utilizat pentru a urmări progresul jobului lot.

Mai jos sunt metodele de instanță furnizate de BatchableContext:

  • getChildJobId(): Această metodă returnează ID-ul unui job batch care este procesat în prezent.
  • getJobId(): Această metodă returnează ID-ul jobului batch.

Mai jos este sintaxa unei clase batch:

global class MyBatchClass implements Database.Batchable<sObject> {
	global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {
// collect the batches of records or objects to be passed to execute
}
global void execute(Database.BatchableContextbc, List<P> records){
// process each batch of records
}
global void finish(Database.BatchableContextbc){
// execute any post-processing operations
}
}

Metoda Database.executeBatch

Metoda Database.executeBatch este utilizată pentru executarea unei clase batch.

Această metodă ia doi parametri: Instanța clasei de lot care urmează să fie procesată, Parametrul Opțiuni pentru a specifica dimensiunea lotului, dacă nu este specificat, ia dimensiunea implicită de 200.

Sintaxa pentru Database.executeBatch :

Database.executeBatch(myBatchObject,scope)

Executarea unui nume de clasă de lot MyBatchClass :

MyBatchClassmyBatchObject = new MyBatchClass(); 
Id batchId = Database.executeBatch(myBatchObject,100);

Baza de date.cu stare

Clasa lot este apatridă în mod implicit. De fiecare dată când metoda execute este numită o nouă copie a unui obiect este primită, toate variabilele clasei sunt inițializate.

Database.stateful este implementat pentru a face o clasă de lot cu stare.

Dacă clasa dvs. de lot a implementat Baza de date , interfață cu stare toate variabilele de instanță își păstrează valorile, dar variabilele statice sunt resetate între tranzacții.

Rezumat

  • Apex este un tip puternic, orientat pe obiecte limbaj de programare care se compilează și rulează pe platforma force.com
  • Limbajul de programare Apex este un limbaj care nu ține seama de majuscule și minuscule
  • Două tipuri de flux de acțiuni în Apex sunt: ​​1) Acțiunea dezvoltatorului 2) Acțiunea utilizatorului final
  • Apex vă ajută să creați servicii web care integrează Salesforce cu alte aplicații.
  • Tipurile de date suportate de apex sunt: ​​1).Primitive 2) Colecții 3) sObject, Enums, 4) Classes, 5) Objects and Interfaces
  • Public, Private, Protected și Global sunt suport specificat de Apex
  • Cuvintele cheie utilizate în Apex sunt: ​​1) Cu partajare, 2) Fără partajare, 3) Static, 4) Final 5) Retur, 6) Null, 7) Virtual, 8) Rezumat
  • Un șir este un set de caractere fără limite de caractere
  • Limitele guvernatorului Apex sunt limitele impuse de motorul de execuție Apex pentru a se asigura că orice cod și procese de vârf ale pistei
  • Getter și setter pot fi folosite pentru a executa cod înainte ca valoarea proprietății să fie accesată sau modificată
  • Există trei moduri de a crea clase apex în Salesforce: 1) Consola pentru dezvoltatori 2) IDE Force.com și 3) Pagina cu detalii ale clasei Apex.
  • Declanșatoarele Apex vă permit să executați apex personalizat înainte și după efectuarea unei operațiuni DML.
  • Clasa lot în salesforce este utilizată pentru a procesa un număr mare de înregistrări care ar depăși limitele guvernatorului apex dacă ar fi procesate în mod normal.