APEXi õpetus: Apexi programmeerimisklassi ja kodeerimise näited
Mis on Apex Salesforce'is?
Tipp on objektorienteeritud ja tugevasti trükitud programmeerimiskeel, mille Salesforce on välja töötanud tarkvara kui teenuse (SaaS) ja kliendisuhete halduse (CRM) loomiseks. Apex aitab arendajatel luua kolmanda osapoole SaaS-i rakendusi ja lisada süsteemisündmustele äriloogikat, pakkudes andmebaasi taustatuge ja kliendi-serveri liideseid.
Apex aitab arendajatel lisada äriloogikat süsteemi sündmustele, nagu nuppude klõpsud, seotud kirjete värskendused ja Visualforce'i lehed. Apexil on sarnane süntaks Java. Registreeruge Salesforce'i kasutajaks õppida, kuidas CRM töötab
Apexi programmeerimiskeele omadused
Siin on Salesforce Apexi olulised funktsioonid:
- Apex on tõstutundlik keel.
- Apeksi abil saate sObjecti kirjetel teha DML-i toiminguid, nagu INSERT, UPDATE, UPSERT, DELETE.
- Saate teha päringuid sObjecti kirjete kohta, kasutades tipus SOQL-i (salesforce'i objektide päringukeel) ja SOSL-i (salesforce'i objektiotsingu keel).
- Võimaldab luua a ühiku test ja käivitage need kontrollimiseks koodi katvus ja koodi efektiivsus tipus.
- Apex teostab mitme rentniku keskkonnas ja Sales Force on määratlenud mõned valitsejate piirangud, mis takistavad kasutajal jagatud ressursse juhtida. Iga kood, mis ületab müügijõudude valitseja limiidi, ebaõnnestub, kuvatakse tõrketeade.
- Salesforce'i objekti saab kasutada andmetüübina tipus. Näiteks –
Account acc = new Account();
,siin on konto tavaline müügipersonali objekt.
- Apex uuendab automaatselt iga Salesforce'i väljalaskega.
Millal peaks arendaja valima Apexi
Apex-koodi tuleks kirjutada ainult siis, kui äristsenaarium on liiga keeruline ja seda ei saa rakendada Salesforce'i eelseadistatud funktsioonide abil.
Järgmised on mõned stsenaariumid, kus peame tippkoodi kirjutama:
- Veebiteenuste loomiseks, mis integreerivad Salesforce'i teiste rakendustega.
- Kohandatud valideerimise rakendamiseks objektidel.
- Kohandatud tipuloogika käivitamiseks DML-i toimingu sooritamisel.
- Rakendada funktsioone, mida ei saa rakendada olemasolevate töövoogude ja protsessikoostajate funktsioonide abil.
- Üles seadma e-posti teenused, peate hõlmama meilide sisu, päiste ja manuste töötlemist tipukoodi abil.
Apexi tööstruktuur
Nüüd selles Apexi õpetuses õpime tundma Apexi tööstruktuuri:
Järgmine on tipukoodi toimingute voog:
- Arendaja toiming: kogu arendaja kirjutatud tippkood koondatakse juhiste kogumiks, mida tippkäitusaja tõlk mõistab, kui arendaja salvestab koodi platvormile ja seejärel salvestatakse need juhised platvormile metaandmetena.
- Lõppkasutaja toiming: kui kasutaja sündmus käivitab tipukoodi, hangib platvormi server metaandmetest koostatud juhised ja käivitab need enne tulemuse tagastamist läbi tipu tõlgi.

Apexi süntaks
Muutuv deklaratsioon
Kuna tipp on tugevasti trükitud keel, on kohustuslik deklareerida muutuja, mille andmetüüp on tipus.
Näiteks:
contact con = new contact();
siin deklareeritakse muutuja con kontaktiga andmetüübina.
SOQL päring
SOQL tähistab müügijõu objektide päringukeelt. SOQL-i kasutatakse sObjecti kirjete toomiseks Salesforce'i andmebaasist. Näiteks-
Account acc = [select id, name from Account Limit 1];
Ülaltoodud päring toob kontokirje müügijõudude andmebaasist.
Loop avaldus
Loop-lauset kasutatakse loendis kirjete kordamiseks. Iteratsioonide arv võrdub loendis olevate kirjete arvuga. Näiteks:
list<Account>listOfAccounts = [select id, name from account limit 100];
// iteration over the list of accounts
for(Account acc : listOfAccounts){
//your logic
}
Ülaltoodud koodilõigu puhul on listOfAccounts loendi andmetüübi muutuja.
Voolu juhtimise avaldus
Voo juhtimise avaldus on kasulik, kui soovite teatud tingimustel käivitada mõnda koodi rida.
Näiteks:
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
}
Ülaltoodud koodilõik küsib andmebaasist kontokirjeid ja kontrollib loendi suurust.
DML avaldus
DML tähistab andmete manipuleerimise keelt. DML-lauseid kasutatakse Salesforce'i andmebaasis olevate andmete töötlemiseks. Näiteks –
Account acc = new Account(Name = ‘ Test Account’); Insert acc; //DML statement to create account record.
Apexi arenduskeskkond
Nüüd selles Apexi programmeerimisõpetuses õpime tundma Apexi arenduskeskkonda:
Apex-koodi saab arendada nii Salesforce'i liivakastis kui ka arendajaväljaandes.
Parim tava on töötada välja kood liivakastikeskkonnas ja seejärel juurutada see tootmiskeskkonda.
Apex-koodi arendustööriistad: järgmised on kolm tööriista, mis on saadaval tippkoodi arendamiseks Salesforce'i kõigis väljaannetes.
- Force.com arendajakonsool
- Force.com IDE
- Koodiredaktor Salesforce'i kasutajaliidesesYou
Andmetüüp Apexis
Järgmised andmetüübid, mida tipp toetab:
Primitiivne
Täisarv Double, Long, Date, Date Time, String, ID ja Boolean loetakse primitiivseteks andmetüüpideks. Kõik primitiivsed andmetüübid edastatakse väärtuse, mitte viite alusel.
Kollektsioonid
Apexis on saadaval kolme tüüpi kollektsioone
- Loend: see on järjestatud primitiivide, sObjectide, kogude või Apex-objektide kogum, mis põhineb indeksitel.
- Komplekt: Unikaalsete primitiivide järjestamata kogu.
- Kaart: see on ainulaadsete primitiivsete võtmete kogum, mis kaardistatakse üksikute väärtustega, mis võivad olla primitiivid, sObjects, kogud või Apex-objektid.
sObjekt
See on Salesforce'i spetsiaalne andmetüüp. See sarnaneb tabeliga SQL ja sisaldab välju, mis on sarnased SQL-i veergudele.
Enums
Enum on abstraktne andmetüüp, mis salvestab ühe väärtuse määratud identifikaatorite lõplikust komplektist
klassid
Objektid
See viitab mis tahes andmetüübile, mida Apex toetab.
Liidesed
Apexi juurdepääsu täpsustaja
Järgmised on apexi toetatud juurdepääsu spetsifikaatorid:
avalik
See juurdepääsuspetsifikaator annab juurdepääsu klassile, meetodile ja muutujale, mida nimeruumi tipp kasutab.
Era-
See juurdepääsuspetsifikaat annab juurdepääsu klassile, meetodile, muutujale, mida kasutatakse kohapeal või koodiosas, see on määratletud. Kõigil tehnikatel, muutujatel, millel pole defineeritud juurdepääsu spetsifikaatorit, on vaikejuurdepääsu spetsifikaat privaatne.
Kaitstud
See juurdepääsuspetsifikaat annab juurdepääsu meetodile, muutujale, mida kasutavad kõik Apex-klassi sisemised klassid.
Globaalne
See juurdepääsuspetsifikaat annab juurdepääsu klassile, meetodile ja muutujale, mida kasutatakse nimeruumi tipus nii nimeruumis kui ka väljaspool nimeruumi. Hea tava on mitte kasutada globaalset märksõna enne, kui see on vajalik.
Märksõnad Apexis
Jagamisega
Kui klass on defineeritud selle märksõnaga, siis kõik jagamisreeglid kehtivad praegusele kasutajale ja kui see märksõna puudub, käivitatakse kood süsteemi kontekstis.
Näiteks:
public with sharing class MyApexClass{
// sharing rules enforced when code in this class execute
}
Ilma jagamiseta
Kui klass on määratletud selle märksõnaga, siis kõiki praegusele kasutajale kehtivaid jagamisreegleid ei jõustata.
Näiteks:
public without sharing class MyApexClass{
// sharing rules is not enforced when code in this class execute
}
Staatiline
Muutuja, meetod on määratletud staatilise märksõnaga, initsialiseeritakse üks kord ja seostatakse klassiga. Staatilisi muutujaid, meetodeid saab kutsuda klassi nime järgi otse, ilma klassi eksemplari loomata.
Lõplik
Konstant, meetod on määratletud lõpliku märksõnaga, ei saa alistada. Näiteks:
public class myCls {
static final Integer INT_CONST = 10;
}
Kui proovite selle INT_CONST muutuja väärtust alistada, saate erandi – System.FinalException: Lõplik muutuja on juba lähtestatud.
tagastamine
See märksõna tagastab meetodi väärtuse. Näiteks:
public String getName() {
return 'Test' ;
}
NULL
See määratleb nullkonstandi ja seda saab määrata muutujale. Näiteks
Boolean b = null;
virtuaalne
Kui klass on määratletud virtuaalse märksõnaga, saab seda laiendada ja tühistada.
Abstraktne
Kui klass on määratletud abstraktse märksõnaga, peab see sisaldama vähemalt ühte meetodit märksõnaga abstraktne ja sellel meetodil peaks olema ainult allkiri.
Näiteks
public abstract class MyAbstrtactClass {
abstract Integer myAbstractMethod1();
}
Apex String
String on tähemärkide kogum, millel pole tähemärgipiiranguid. Näiteks:
String name = 'Test';
String-klass pakub müügijõududes mitmeid sisseehitatud meetodeid. Järgnevalt on toodud mõned sageli ja enamasti kasutatavad funktsioonid:
lühenda (maxWidth)
See meetod kärbib stringi määratud pikkuseks ja tagastab selle, kui antud stringi pikkus on määratud pikkusest pikem; vastasel juhul tagastab see algse stringi. Kui muutuja maxWidth väärtus on väiksem kui 4, tagastab see meetod käitusaja erandi – System.StringException: lühendi minimaalne laius on 4
Näiteks:
String s = 'Hello World';
String s2 = s.abbreviate(8);
System.debug('s2'+s2); //Hello...
suurtäht ()
See meetod teisendab stringi esimese tähe pealkirja suurtähtedeks ja tagastab selle.
Näiteks:
String s = 'hello;
String s2 = s.capitalize();
System.assertEquals('Hello', s2);
sisaldab (alamstringi)
See meetod tagastab tõene, kui meetodit kutsuv string sisaldab määratud alamstringi.
String name1 = 'test1';
String name2 = 'test2';
Boolean flag = name.contains(name2);
System.debug('flag::',+flag); //true
võrdub(stringOrId)
See meetod tagastab tõene, kui edastatud parameeter ei ole null ja näitab sama binaarset märgijada kui meetodit kutsuv string.
Id väärtuste võrdlemisel ei pruugi ID-de pikkus olla võrdne. Näiteks: kui stringi, mis esindab 15 tähemärgist ID, võrreldakse objektiga, mis esindab 18 tähemärgi ID-d, tagastab meetod tõene. Näiteks:
Id idValue15 = '001D000000Ju1zH';
Id idValue18 = '001D000000Ju1zHIAR';
Boolean result4 = stringValue15.equals(IdValue18);
System.debug('result4', +result4); //true
Ülaltoodud näites võrdub meetod, mis võrdleb 15-märgilist objekti ID-d 18-märgilise objekti ID-ga ja kui mõlemad ID-d esindavad sama binaarjada, tagastab see tõese.
Kasutage seda meetodit tõstutundlike võrdluste tegemiseks.
escapeSingleQuotes (stringToEscape)
See meetod lisab stringi iga üksiku tsitaat ette paomärgi (\) ja tagastab selle. See meetod takistab SOQL-i süstimist dünaamilise SOQL-päringu loomise ajal. See meetod tagab, et kõiki üksikuid jutumärke käsitletakse ümbritsevate stringidena, mitte andmebaasikäskudena.
Näiteks:
String s = 'Hello Tom'; system.debug(s); // Outputs 'Hello Tom' String escapedStr = String.escapeSingleQuotes(s); // Outputs \'Hello Tom\'
eemalda (alamstring)
See meetod eemaldab kogu nimetatud alamstringi esinemise Stringist, mis seda meetodit kutsub, ja tagastab saadud stringi.
Näiteks
String s1 = 'Salesforce and force.com';
String s2 = s1.remove('force');
System.debug( 's2'+ s2);// 'Sales and .com'
alamstring (algusindeks)
See meetod tagastab alamstringi, mis algab märgist algusesIndex ulatub stringi viimaseni.
Näiteks:
String s1 = 'hamburger';
String s2 = s1.substring(3);
System.debug('s2'+s2); //burger
tagurpidi()
See meetod pöörab kõik stringi märgid ümber ja tagastab selle. Näiteks:
String s = 'Hello';
String s2 = s.reverse();
System.debug('s2::::'+s2);// olleH // Hello
trim(): See meetod eemaldab stringist kõik eesmised tühikud ja tagastab selle.
valueOf(konverteeritav)
See meetod tagastab sisse antud objekti stringi esituse.
Apexi kuberneri piirangud
Apexi regulaatori piirangud on piirangud, mida rakendab apexi käitusaegne mootor, et tagada, et raja tipukood ja protsessid ei juhi jagatud ressursse ega riku mitme rentniku keskkonna teiste kasutajate töötlust. Neid limiite kontrollitakse iga tiputehingu suhtes. Järgmised on kuberneri limiidid, mille müügipersonal on iga tiputehingu jaoks määratlenud.
| Kirjeldus | piir |
|---|---|
| SOQL-päringud, mida saab teha sünkroonse tehinguga | 100 |
| SOQL-päringud, mida saab teha asünkroonse tehinguga | 200 |
| Kirjed, mida saab hankida SOQL-päringuga | 50000 |
| Kirjed, mida saab alla laadida rakendusega Database.getQueryLocator | 10000 |
| SOSL-päringud, mida saab teha tiputehingus | 20 |
| Kirjed, mida saab hankida SOSL-päringuga | 2000 |
| DML-laused, mida saab teha tiputehingus | 150 |
| Kirjed, mida saab töödelda DML-lause, Approval.process või database.emptyRecycleBin tulemusel | 10000 |
| Tähelepanulaiendid, mida saab teha tiputehingus. | 100 |
| Kumulatiivne ajalimiit kõikidele tipptehingus tehtavatele tähelepanulaienditele | 120 sekundit |
| Piirang tipptöödele, mida saab süsteemiga System.enqueueJob järjekorda lisada | 50 |
| Iga Apexi tehingu teostamise tähtaeg | 10 minuti |
| Tippklassis ja päästikus kasutatavate märkide piirang | 1 miljonit |
| CPU ajalimiit sünkroontehingu jaoks | 10,000 millisekundid |
| CPU ajalimiit asünkroonse tehingu jaoks | 60,000 millisekundid |
Apex Getter ja setter
Tipu omadus on sarnane tipu muutujale. Getter ja setter on tipuomaduse jaoks vajalikud. Getterit ja seadjat saab kasutada koodi käivitamiseks enne atribuudi väärtusele juurdepääsu või selle muutmist. Get accessoris olev kood käivitatakse atribuudi väärtuse lugemisel. Määratud aksessuaaris olev kood töötab, kui atribuudi väärtust muudetakse. Kõik atribuudid, millel on pöörduja hankimine, loetakse kirjutuskaitstuks, kõik atribuudid, millel on pöörduja määramine, loetakse kirjutavaks ainult kõik atribuudid, millel on nii hankimine kui ka lisaseadme määramine, loetakse kirjutamis-kirjutatavaks. Tipu atribuudi süntaks:
public class myApexClass {
// Property declaration
access_modifierreturn_typeproperty_name {
get {
//code
}
set{
//code
}
}
Siin on access_modifier atribuudi juurdepääsumuutja. return_type on atribuudi andmetüüp. omaduse_nimi on atribuudi nimi.
Allpool on näide tipu atribuudist, millel on nii hankimine kui ka määramine.
public class myApex{
public String name{
get{ return name;}
set{ name = 'Test';}
}
}
Siin on atribuudi nimi nimi ja see on avalik atribuut ning see tagastab stringi dataType.
Mingi koodi olemasolu get and set plokis ei ole kohustuslik. Automaatse atribuudi määratlemiseks võib need plokid tühjaks jätta. Näiteks:
public double MyReadWriteProp{ get; set; }
Get and set accessori saab määrata ka nende juurdepääsu modifikaatoriga. Kui aksessuaar on määratletud modifikaatoriga, alistab see atribuudi juurdepääsumuutja. Näiteks:
public String name{private get; set;}// name is private for read and public to write.
Apex klass
Tipuklass on plaan või mall, millest luuakse objekte. Objekt on klassi eksemplar.
Salesforce'is on tipuklasside loomiseks kolm võimalust.
Arendajakonsool
Force.com IDE
Apexi klassi üksikasjade leht.
Tipus saate määratleda välimise klassi, mida nimetatakse ka tipptaseme klassiks, ja samuti saate määratleda klasse välisklassis, mida nimetatakse sisemisteks klassideks.
Välise klassi deklaratsioonis on kohustuslik kasutada juurdepääsumuutjat, nagu globaalne või avalik.
Sisemiste klasside deklaratsioonis ei ole vaja kasutada juurdepääsu modifikaatorit.
Tipuklass määratakse klassi märksõnaga, millele järgneb klassi nimi.
Märksõna Extends kasutatakse olemasoleva klassi laiendamiseks tipuklassi võrra ja implements märksõna kasutatakse liidese realiseerimiseks tipuklassi järgi.
Salesforce Apex ei toeta mitut pärandit, tipuklass saab laiendada ainult ühte olemasolevat tipuklassi, kuid võib rakendada mitut liidest.
Tipuklass võib sisaldada kasutaja määratud konstruktorit ja kui kasutaja määratud konstruktorit pole saadaval, kasutatakse vaikekonstruktorit. Konstruktoris olev kood käivitatakse klassi eksemplari loomisel.
Apex-klassi näite süntaks:
public class myApexClass{
// variable declaration
//constructor
public myApexClass{
}
//methods declaration
}
Uut märksõna kasutatakse tipuklassi eksemplari loomiseks. Allpool on tippklassi eksemplari loomise süntaks.
myApexClass obj = new myApexClass();
Apex Trigger
Apex-päästikud võimaldavad teil käivitada kohandatud tipu enne ja pärast DML-toimingu sooritamist.
Apex toetab kahte tüüpi päästikuid:
Enne käivitajaid: neid käivitajaid kasutatakse välja väärtuse kinnitamiseks ja värskendamiseks enne kirje salvestamist andmebaasi.
Pärast päästikuid: neid päästikuid kasutatakse juurdepääsuks väljadele (kirje ID, väli LastModifiedDate), mille süsteem on seadnud pärast andmebaasi sisestatud kirjet. Nende väljade väärtusi saab kasutada muude kirjete muutmiseks. Kirjed, mis käivituvad pärast päästikuid, on kirjutuskaitstud.
Parim tava on kirjutada mahukaid käivitajaid. Mahukas päästik võib töödelda nii ühte kirjet kui ka mitut kirjet korraga.
Tipupäästiku süntaks:
trigger TriggerName on ObjectName (trigger_events) {
//Code_block
}
Siin on TriggerName päästiku nimi, ObjectName on objekti nimi, millele triger kirjutada, trigger_events on sündmuste komadega eraldatud loend.
Järgmised sündmused, mida tipupäästikud toetavad: enne lisamist, enne värskendamist, enne kustutamist, pärast lisamist, pärast värskendamist, pärast kustutamist, pärast kustutamist.
Staatilisi märksõnu ei saa Apexi päästikus kasutada. Apexi päästikus saab kasutada kõiki siseklassidele kohaldatavaid märksõnu.
Iga käivitajaga, mis tagastab käitusaja konteksti, on määratletud kaudsed muutujad. Need muutujad on süsteemis määratletud. Päästikuklass. Neid muutujaid nimetatakse kontekstimuutujateks. Alloleval ekraanipildil on näha kontekstimuutujat, mida toetab tipupäästik.
Järgnevalt on käsitletud kontekstimuutujat tipupäästikus:
- Ärge kasutage DML-toimingutes trigger.new ja trigger.old.
- Trigger.new ei saa kustutada.
- Trigger.new on kirjutuskaitstud.
- Trigger.new saab kasutada sama objekti väljade väärtuste muutmiseks ainult enne trigerit.
Allpool kuvatõmmised loetlevad kaalutlused konkreetsete toimingute kohta erinevatel käivitussündmustel.
Partii klass Apexis
Partiiklassi müügijõududes kasutatakse suure hulga kirjete töötlemiseks, mis tavapärasel töötlemisel ületaksid tipuregulaatori piiranguid. Partiiklass täidab koodi asünkroonselt.
Partiiklassi eelised on järgmised:
- Partiiklass töötleb andmeid tükkidena ja kui tükki ei õnnestu töödelda, siis kõiki edukalt töödeldud tükke tagasi ei kerida.
- Iga pakettklassi andmekogum töödeldakse uute valitsejate piirangutega, mis tagavad, et kood käivitub regulaatori täitmispiirangute piires.
- Andmebaas. Partiiklassina kasutamiseks tuleb partiiklassina kasutada tippklassi liides. See pakub kolme meetodit, mida partiiklass peab rakendama.
Järgnevalt on toodud andmebaasi kolm meetodit. Pakitav liides:
1.start()
See meetod genereerib kirjete või objektide ulatuse, mida töödeldakse liidese meetodi täitmisega. Partii täitmise ajal kutsutakse seda ainult üks kord. See meetod tagastab kas objekti Database.QueryLocator või iterable. Objekti Database.QueryLocator abil SQL-päringuga hangitud kirjete arv on 50 miljonit kirjet, kuid itereeritavat kirjet kasutades on SQL-päringuga hangitavate kirjete koguarv ainult 50000 XNUMX. Iterablet kasutatakse partiiklassi keeruka ulatuse genereerimiseks.
Käivitusmeetodi süntaks:
global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}
2.execute()
Seda meetodit kasutatakse iga andmepaki töötlemiseks. Iga kirjete tüki jaoks kutsutakse välja täitmismeetod. Täitmise vaikepartii suurus on 200 kirjet. Käivitusmeetodil on kaks argumenti:
viide objektile Database.BatchableContext,
sObjektide loend, näiteks loend või parameetritega tüüpide loendit. Täitmismeetodi süntaks:
global void execute(Database.BatchableContext BC, list<P>){}
3.finish()
Lõppmeetodit kutsutakse üks kord partiiklassi täitmise ajal. Järeltöötlustoiminguid saab teha viimistlusmeetodil. Näiteks: kinnitusmeili saatmine. Seda meetodit kutsutakse välja, kui kogu partii töödeldakse. Lõpetamismeetodi süntaks:
global void finish(Database.BatchableContext BC){}
Database.BatchableContext objekt
Iga andmebaasi meetod. Batchable liidesel on viide Database.BatchableContext objektile.
Seda objekti kasutatakse pakktöö edenemise jälgimiseks.
BatchableContexti pakutavad eksemplarimeetodid on järgmised:
- getChildJobId(): see meetod tagastab hetkel töödeldud pakktöö ID.
- getJobId(): see meetod tagastab pakktöö ID.
Allpool on partiiklassi süntaks:
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
}
}
Database.executeBatch meetod
Database.executeBatch meetodit kasutatakse partiiklassi täitmiseks.
Sellel meetodil on kaks parameetrit: töödeldava partiiklassi eksemplar, parameeter Options partii suuruse määramiseks, kui seda pole määratud, on vaikesuurus 200.
Database.executeBatch süntaks:
Database.executeBatch(myBatchObject,scope)
Pakettklassi nime MyBatchClass täitmine:
MyBatchClassmyBatchObject = new MyBatchClass(); Id batchId = Database.executeBatch(myBatchObject,100);
Database.stateful
Partiiklass on vaikimisi olekuta. Iga kord, kui käivitamismeetodit kutsutakse, võetakse vastu objekti uus koopia, initsialiseeritakse kõik klassi muutujad.
Database.stateful on rakendatud partiiklassi olekupõhiseks muutmiseks.
Kui teie partiiklass rakendas andmebaas olekuga liides säilitavad kõik eksemplarimuutujad oma väärtused, kuid staatilised muutujad lähtestatakse tehingute vahel.
kokkuvõte
- Apex on tugevasti trükitud, objektorienteeritud programmeerimiskeel mis kompileerib ja töötab force.com platvormil
- Apexi programmeerimiskeel on tõstutundlik keel
- Apexis on kahte tüüpi toimingute voogu: 1) arendaja tegevus 2) lõppkasutaja tegevus
- Apex aitab teil luua veebiteenuseid, mis integreerivad Salesforce'i teiste rakendustega.
- Tipu poolt toetatavad andmetüübid on: 1) Primitiivne 2) kogud 3) sObject, Enums, 4) klassid, 5) objektid ja liidesed
- Apexi tugi on avalik, privaatne, kaitstud ja globaalne
- Apexis kasutatavad märksõnad on: 1) koos jagamisega, 2) ilma jagamiseta, 3) staatiline, 4) lõplik 5) tagastamine, 6) null, 7) virtuaalne, 8) abstraktne
- String on tähemärkide kogum, millel pole tähemärgipiiranguid
- Apex-regulaatori limiidid on piirangud, mida rakendab tipu käitusaegne mootor tagamaks, et mis tahes raja tipukood ja -protsessid
- Getterit ja seadjat saab kasutada koodi käivitamiseks enne atribuudi väärtusele juurdepääsu või selle muutmist
- Salesforce'is on tipuklasside loomiseks kolm võimalust: 1) arendajakonsool 2) Force.com IDE ja 3) Apex klassi üksikasjade leht.
- Apex-päästikud võimaldavad teil käivitada kohandatud tipu enne ja pärast DML-toimingu sooritamist.
- Müügipersonali partiiklassi kasutatakse suure hulga kirjete töötlemiseks, mis tavapärasel töötlemisel ületaksid tippregulaatori piiranguid.





