APEX-opetusohjelma: Apex-ohjelmointiluokka ja koodausesimerkit

Mikรค on Apex Salesforcessa?

kรคrki on Salesforcen kehittรคmรค oliosuuntautunut ja vahvasti kirjoitettu ohjelmointikieli Software as a Service (SaaS) ja Customer Relationship Management (CRM) rakentamiseen. Apex auttaa kehittรคjiรค luomaan kolmannen osapuolen SaaS-sovelluksia ja lisรครคmรครคn liiketoimintalogiikkaa jรคrjestelmรคtapahtumiin tarjoamalla taustatietokantatukea ja asiakas-palvelinliittymiรค.

Apex auttaa kehittรคjiรค lisรครคmรครคn liiketoimintalogiikkaa jรคrjestelmรคtapahtumiin, kuten painikkeiden napsautukset, niihin liittyvรคt tietuepรคivitykset ja Visualforce-sivut. Apexilla on samanlainen syntaksi kuin Java. Rekisterรถidy Salesforceen oppiaksesi kuinka CRM toimii

Apex-ohjelmointikielen ominaisuudet

Tรคssรค ovat Salesforce Apexin tรคrkeรคt ominaisuudet:

  • Apex on isot ja pienet kirjaimet erotteleva kieli.
  • Voit suorittaa DML-toimintoja, kuten INSERT, UPDATE, UPSERT, DELETE sObject-tietueille kรคyttรคmรคllรค huippua.
  • Voit tehdรค kyselyitรค sObject-tietueista kรคyttรคmรคllรค SOQL:รครค (salesforce-objektikyselykieli) ja SOSL:รครค (salesforce-objektien hakukieli) kรคrjessรค.
  • Voit luoda a yksikkรถtesti ja suorita ne varmistaaksesi koodin kattavuus ja koodin tehokkuus kรคrjessรค.
  • Apex suorittaa usean vuokralaisen ympรคristรถssรค ja Salesforce on mรครคrittรคnyt joitain ohjainrajoituksia, jotka estรคvรคt kรคyttรคjรครค hallitsemasta jaettuja resursseja. Mikรค tahansa myyntivoiman ohjaimen rajan ylittรคvรค koodi epรคonnistuu, nรคyttรถรถn tulee virhe.
  • Salesforce-objektia voidaan kรคyttรครค tietotyyppinรค huipussa. Esimerkiksi -
    Account acc = new Account();

    ,tรคssรค Tili on tavallinen myyntihenkilรถobjekti.

  • Apex pรคivittรครค automaattisesti jokaisen Salesforce-julkaisun yhteydessรค.

Milloin kehittรคjรคn tulisi valita Apex

Apex-koodi tulee kirjoittaa vain, jos liiketoimintaskenaario on liian monimutkainen eikรค sitรค voida toteuttaa Salesforcen valmiilla toiminnoilla.

Seuraavassa on muutamia skenaarioita, joissa meidรคn on kirjoitettava huippukoodi:

  • Luoda verkkopalveluita, jotka integroivat Salesforcen muihin sovelluksiin.
  • Mukautetun validoinnin toteuttaminen objekteissa.
  • Mukautetun huippulogiikan suorittaminen, kun DML-toiminto suoritetaan.
  • Toteuttaa toimintoja, joita ei voida toteuttaa olemassa olevien tyรถnkulkujen ja prosessinrakennustoimintojen avulla.
  • Lavastaa sรคhkรถpostipalvelut, sinun on sisรคllytettรคvรค sรคhkรถpostin sisรคllรถn, otsikoiden ja liitteiden kรคsittely apex-koodilla.

Apexin tyรถrakenne

Nyt tรคssรค Apex-opetusohjelmassa opimme Apexin tyรถrakenteesta:

Seuraavassa on toimintojen kulku huippukoodille:

  • Kehittรคjรคtoiminto: Kaikki kehittรคjรคn kirjoittama huippukoodi on koottu ohjesarjaksi, jonka apex-ajonaikainen tulkki voi ymmรคrtรครค, kun kehittรคjรค tallentaa koodin alustalle ja nรคmรค ohjeet sitten tallennetaan metatietona alustalle.
  • Loppukรคyttรคjรคn toiminto: Kun kรคyttรคjรคtapahtuma suorittaa huippukoodin, alustapalvelin saa kรครคnnetyt ohjeet metatiedoista ja suorittaa ne apex-tulkin lรคpi ennen tuloksen palauttamista.
Apexin tyรถrakenne
Apexin tyรถrakenne

Apexin syntaksi

Muuttuva ilmoitus

Koska apex on vahvasti kirjoitettu kieli, on pakollista ilmoittaa muuttuja, jonka tietotyyppi on apexissa.

Esimerkiksi:

contact con = new contact(); 

tรคssรค muuttuja con on ilmoitettu kontaktilla tietotyypinรค.

SOQL-kysely

SOQL tarkoittaa salesforce-objektien kyselykieltรค. SOQL:รครค kรคytetรครคn sObject-tietueiden hakemiseen Salesforce-tietokannasta. Esimerkiksi-

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

Yllรค oleva kysely hakee tilitietueen myyntihenkilรถstรถn tietokannasta.

Loop lausunto

Loop-lausetta kรคytetรครคn iteroitaessa luettelon tietueita. Iteraatioiden mรครคrรค on yhtรค suuri kuin luettelon tietueiden mรครคrรค. Esimerkiksi:

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

Yllรค olevassa koodinpรคtkรคssรค listOfAccounts on luettelotietotyypin muuttuja.

Virtauksen ohjauslausunto

Vuonohjauslauseke on hyรถdyllinen, kun haluat suorittaa joitain koodirivejรค joidenkin ehtojen perusteella.

Esimerkiksi:

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
}

Yllรค oleva koodinpรคtkรค kyselee tilitietueita tietokannasta ja tarkistaa luettelon koon.

DML lausunto

DML tarkoittaa tiedonkรคsittelykieltรค. DML-lauseita kรคytetรครคn Salesforce-tietokannan tietojen kรคsittelyyn. Esimerkiksi -

Account acc = new Account(Name = โ€˜ Test Accountโ€™);
Insert acc; //DML statement to create account record.

Apex-kehitysympรคristรถ

Nyt tรคssรค Apex-ohjelmointioppaassa opimme Apex-kehitysympรคristรถstรค:

Apex-koodia voidaan kehittรครค joko hiekkalaatikossa ja Salesforcen kehittรคjรคversiossa.

Paras kรคytรคntรถ on kehittรครค koodi hiekkalaatikkoympรคristรถssรค ja ottaa se sitten kรคyttรถรถn tuotantoympรคristรถssรค.

Apex-kehitysympรคristรถ

Apex-koodin kehitystyรถkalut: Seuraavassa on kolme tyรถkalua, jotka ovat kรคytettรคvissรค apex-koodin kehittรคmiseen kaikissa Salesforcen versioissa.

  • Force.com-kehittรคjรคkonsoli
  • Force.com IDE
  • Koodieditori Salesforce-kรคyttรถliittymรคssรคYou

Tietotyyppi Apexissa

Seuraavat ovat apexin tukemat tietotyypit:

primitiivinen

Kokonaisluku, Double, Long, Date, Date Time, String, ID ja Boolean katsotaan primitiivisiksi tietotyypeiksi. Kaikki primitiiviset tietotyypit vรคlitetรครคn arvon, ei viittauksen perusteella.

Kaikki tuotteet

Apexissa on saatavilla kolmenlaisia โ€‹โ€‹kokoelmaa

  • Lista: Se on jรคrjestetty kokoelma primitiivejรค, sObjekteja, kokoelmia tai Apex-objekteja, jotka perustuvat indekseihin.
  • Sarja: Jรคrjestรคmรคtรถn kokoelma ainutlaatuisia primitiivisiรค.
  • Kartta: Se on kokoelma ainutlaatuisia, primitiivisiรค avaimia, jotka kartoitetaan yksittรคisiin arvoihin, jotka voivat olla primitiivejรค, sObjekteja, kokoelmia tai Apex-objekteja.

sObjekti

Tรคmรค on erityinen tietotyyppi Salesforcessa. Se on samanlainen kuin pรถytรค SQL ja sisรคltรครค kenttiรค, jotka ovat samanlaisia โ€‹โ€‹kuin SQL:n sarakkeet.

Enums

Enum on abstrakti tietotyyppi, joka tallentaa yhden arvon rajallisesta mรครคrรคttyjen tunnisteiden joukosta

Sarjat

Esineet

Se viittaa mihin tahansa tietotyyppiin, jota Apex tukee.

Liitรคnnรคt

Apex Access Specifier

Seuraavat ovat apexin tukemat kรคyttรถoikeusmรครคritykset:

julkinen

Tรคmรค kรคyttรถoikeusmรครคritys antaa pรครคsyn luokkaan, menetelmรครคn, muuttujaan, jota nimiavaruuden kรคrki kรคyttรครค.

yksityinen

Tรคmรค pรครคsymรครคrittรคjรค antaa pรครคsyn luokkaan, menetelmรครคn, muuttujaan kรคytettรคvรคksi paikallisesti tai koodin sisรคllรค, se on mรครคritelty. Kaikilla tekniikoilla, muuttujilla, joille ei ole mรครคritetty pรครคsymรครคritteitรค, on oletusarvoinen pรครคsymรครคrittรคjรค yksityinen.

Suojattu

Tรคmรค kรคyttรถoikeusmรครคritys antaa pรครคsyn menetelmรครคn, muuttujaan, jota kaikki sisรคiset luokat voivat kรคyttรครค Apex-luokan mรครคrittelyssรค.

Global

Tรคmรค kรคyttรถoikeusmรครคritys antaa pรครคsyn luokkaan, menetelmรครคn, muuttujaan, jota kรคytetรครคn nimiavaruuden kรคrjessรค sekรค nimiavaruuden ulkopuolella. Paras kรคytรคntรถ on olla kรคyttรคmรคttรค yleistรค avainsanaa ennen kuin se on tarpeen.

Avainsanat Apexissa

Jakamisen kanssa

Jos luokka on mรครคritetty tรคllรค avainsanalla, kaikki jakamissรครคnnรถt koskevat nykyistรค kรคyttรคjรครค, ja jos tรคmรค avainsana puuttuu, koodi suoritetaan jรคrjestelmรคkontekstissa.

Esimerkiksi:

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

Ilman jakamista

Jos luokka on mรครคritetty tรคllรค avainsanalla, kaikkia nykyistรค kรคyttรคjรครค koskevia jakamissรครคntรถjรค ei pakoteta.

Esimerkiksi:

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

Staattinen

Muuttuja, Method on mรครคritelty staattisella avainsanalla, alustetaan kerran ja liitetรครคn luokkaan. Staattisia muuttujia, menetelmiรค voidaan kutsua luokan nimellรค suoraan luomatta luokan esiintymรครค.

pรครค

Vakio, Method on mรครคritetty lopullisella avainsanalla, jota ei voi ohittaa. Esimerkiksi:

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

Jos yritรคt ohittaa tรคmรคn INT_CONST-muuttujan arvon, saat poikkeuksen โ€“ System.FinalException: Lopullinen muuttuja on jo alustettu.

Palata

Tรคmรค avainsana palauttaa arvon menetelmรคstรค. Esimerkiksi:

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

Null

Se mรครคrittรครค nollavakion ja voidaan mรครคrittรครค muuttujalle. Esimerkiksi

 Boolean b = null;

Virtual

Jos luokka mรครคritellรครคn virtuaalisella avainsanalla, sitรค voidaan laajentaa ja ohittaa.

Abstrakti

Jos luokka on mรครคritelty abstraktilla avainsanalla, sen tulee sisรคltรครค vรคhintรครคn yksi metodi avainsanalla abstrakti, ja tรคllรค menetelmรคllรค tulee olla vain allekirjoitus.

Esimerkiksi

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

Apex String

Merkkijono on joukko merkkejรค, joilla ei ole merkkirajoituksia. Esimerkiksi:

String name = 'Test';

String-luokka tarjoaa useita sisรครคnrakennettuja menetelmiรค myyntivoimassa. Seuraavassa on muutamia usein ja eniten kรคytettyjรค toimintoja:

lyhentรครค (maxWidth)

Tรคmรค menetelmรค katkaisee merkkijonon mรครคritettyyn pituuteen ja palauttaa sen, jos annetun merkkijonon pituus on pidempi kuin mรครคritetty pituus; muussa tapauksessa se palauttaa alkuperรคisen merkkijonon. Jos maxWidth-muuttujan arvo on pienempi kuin 4, tรคmรค menetelmรค palauttaa ajonaikaisen poikkeuksen โ€“ System.StringException: Lyhenteen vรคhimmรคisleveys on 4

Esimerkiksi:

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

isoilla kirjaimilla ()

Tรคmรค menetelmรค muuntaa merkkijonon ensimmรคisen kirjaimen otsikon kirjainkoon ja palauttaa sen.

Esimerkiksi:

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

sisรคltรครค (alimerkkijono)

Tรคmรค menetelmรค palauttaa tosi, jos menetelmรครค kutsuva merkkijono sisรคltรครค mรครคritetyn alimerkkijonon.

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

yhtรค kuin(merkkijonoId)

Tรคmรค menetelmรค palauttaa tosi, jos vรคlitetty parametri ei ole tyhjรค, ja osoittaa saman binรครคrimerkkijonon kuin menetelmรครค kutsuva merkkijono.

Id-arvoja verrattaessa tunnusten pituus ei vรคlttรคmรคttรค ole sama. Esimerkki: jos merkkijonoa, joka edustaa 15 merkkiรค id, verrataan objektiin, joka edustaa 18 merkkiรค ID, tรคmรค menetelmรค palauttaa tosi. Esimerkiksi:

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

Yllรค olevassa esimerkissรค equals -menetelmรค vertaa 15 merkin objektin Id:tรค 18 merkin objektitunnukseen ja jos molemmat nรคmรค id edustavat samaa binaarisarjaa, se palauttaa arvon tosi.

Kรคytรค tรคtรค menetelmรครค kirjainkoon erottelun vertailuun.

escapeSingleQuotes (merkkijonoEscape)

Tรคmรค menetelmรค lisรครค erotusmerkin (\) ennen yksittรคistรค lainausta merkkijonoon ja palauttaa sen. Tรคmรค menetelmรค estรครค SOQL-injektoinnin luotaessa dynaamista SOQL-kyselyรค. Tรคmรค menetelmรค varmistaa, ettรค kaikkia yksittรคisiรค lainausmerkkejรค pidetรครคn sulkevina merkkijonoina tietokantakomentojen sijaan.

Esimerkiksi:

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

poista (alimerkkijono)

Tรคmรค menetelmรค poistaa kaikki mainitun alimerkkijonon esiintymรคt menetelmรครค kutsuvasta merkkijonosta ja palauttaa tuloksena olevan merkkijonon.

Esimerkiksi

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

osamerkkijono (aloitusindeksi)

Tรคmรค menetelmรค palauttaa alimerkkijonon, joka alkaa merkistรค startIndex ulottuu merkkijonon viimeiseen.

Esimerkiksi:

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

kรครคnteinen()

Tรคmรค menetelmรค kรครคntรครค kaikki merkkijonon merkit ja palauttaa sen. Esimerkiksi:

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

trim(): Tรคmรค menetelmรค poistaa kaikki johtavat vรคlilyรถnnit merkkijonosta ja palauttaa sen.

valueOf(muunnettava)

Tรคmรค menetelmรค palauttaa vรคlitetyn objektin merkkijonoesityksen.

Apex Governor Limits

Apex-ohjaimen rajat ovat apex-ajonaikaisen moottorin mรครคrรครคmiรค rajoja varmistaakseen, ettรค mikรครคn kiitotien huippukoodi ja prosessit eivรคt hallitse jaettuja resursseja eivรคtkรค riko muiden kรคyttรคjien kรคsittelyรค monivuokraajaympรคristรถssรค. Nรคmรค rajat tarkistetaan jokaista huipputapahtumaa vastaan. Seuraavat ovat myyntihenkilรถstรถn mรครคrittelemรคt kuvernรถรถrirajat kullekin huipputapahtumalle:

Tuotetiedot Raja
SOQL-kyselyt, jotka voidaan tehdรค synkronisessa tapahtumassa 100
SOQL-kyselyt, jotka voidaan tehdรค asynkronisessa tapahtumassa 200
Tietueet, jotka voidaan noutaa SOQL-kyselyllรค 50000
Tietueet, jotka Database.getQueryLocator voi noutaa 10000
SOSL-kyselyt, jotka voidaan tehdรค huipputapahtumassa 20
Tietueet, jotka voidaan noutaa SOSL-kyselyllรค 2000
DML-lauseet, jotka voidaan tehdรค huipputapahtumassa 150
Tietueet, jotka voidaan kรคsitellรค DML-kรคskyn, Approval.processin tai database.emptyRecycleBinin tuloksena 10000
Huomiotekstit, jotka voidaan tehdรค huipputapahtumassa. 100
Kumulatiivinen aikaraja kaikille huomioteksteille, jotka suoritetaan huipputapahtumassa 120 sekuntia
Rajoitus apex-tรถille, jotka voidaan lisรคtรค jonoon System.enqueueJobilla 50
Toteutusaikaraja jokaiselle Apex-tapahtumalle 10 minuuttia
Rajoitus merkkejรค, joita voidaan kรคyttรครค huippuluokassa ja triggerissรค 1 euroa
Prosessorin aikaraja synkroniselle tapahtumalle 10,000 millisekuntia
Prosessorin aikaraja asynkroniselle tapahtumalle 60,000 millisekuntia

Apex Getter ja setteri

Apex-ominaisuus on samanlainen kuin apex-muuttuja. Getteri ja setteri ovat vรคlttรคmรคttรถmiรค huippuomaisuudelle. Getteriรค ja asettajaa voidaan kรคyttรครค koodin suorittamiseen ennen kuin ominaisuuden arvoa kรคsitellรครคn tai muutetaan. Get accessorissa oleva koodi suoritetaan, kun ominaisuuden arvo luetaan. Asetetun aksessorin koodi suoritetaan, kun ominaisuuden arvoa muutetaan. Kaikki ominaisuudet, joilla on aksessori, katsotaan vain luku -omiksi, minkรค tahansa ominaisuuden, jolla on aksessori, katsotaan kirjoittavan vain mitรค tahansa ominaisuutta, jolla on sekรค get ettรค set aksessori, katsotaan olevan luku-kirjoitus. Apex-ominaisuuden syntaksi:

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

Tรคssรค access_modifier on ominaisuuden kรคyttรถoikeusmuuttaja. paluutyyppi on ominaisuuden tietotyyppi. ominaisuuden_nimi on ominaisuuden nimi.

Alla on esimerkki apex-ominaisuudesta, jossa on sekรค get- ettรค set accessor.

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

Tรคssรค ominaisuuden nimi on nimi, ja se on julkinen ominaisuus, ja se palauttaa merkkijonon dataType.

Get and set -lohkossa ei ole pakollista olla jotain koodia. Nรคmรค lohkot voidaan jรคttรครค tyhjรคksi automaattisen ominaisuuden mรครคrittรคmiseksi. Esimerkiksi:

public double MyReadWriteProp{ get; set; } 

Hanki ja aseta aksessori voidaan mรครคrittรครค myรถs niiden kรคyttรถoikeusmuuntimella. Jos aksessori on mรครคritetty muokkaimella, se ohittaa ominaisuuden kรคyttรถoikeusmuuntimen. Esimerkiksi:

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

Apex-luokka

Huippuluokka on suunnitelma tai malli, josta objektit luodaan. Objekti on luokan esiintymรค.

Salesforcessa on kolme tapaa luoda huippuluokkia:

Kehittรคjรคkonsoli

Force.com IDE

Apex-luokan tietosivu.

Apexissa voit mรครคrittรครค ulomman luokan, jota kutsutaan myรถs ylรคtason luokkaksi, ja voit myรถs mรครคrittรครค luokkia ulomman luokan sisรคllรค, jota kutsutaan sisรคluokiksi.

Ulomman luokan ilmoituksessa on pakollista kรคyttรครค pรครคsymuuttajaa, kuten globaalia tai julkista.

Sisรคisten luokkien mรครคrittelyssรค ei tarvitse kรคyttรครค pรครคsymuuttajaa.

Huippuluokka mรครคritellรครคn kรคyttรคmรคllรค luokan avainsanaa, jota seuraa luokan nimi.

Extends-avainsanaa kรคytetรครคn laajentamaan olemassa olevaa luokkaa huippuluokalla, ja implements -avainsanaa kรคytetรครคn rajapinnan toteuttamiseen huippuluokan mukaan.

Salesforce Apex ei tue useita perintรถjรค, apex-luokka voi laajentaa vain yhtรค olemassa olevaa huippuluokkaa, mutta se voi toteuttaa useita rajapintoja.

Apex-luokka voi sisรคltรครค kรคyttรคjรคn mรครคrittรคmรคn rakentajan, ja jos kรคyttรคjรคn mรครคrittรคmรครค konstruktoria ei ole saatavilla, kรคytetรครคn oletuskonstruktoria. Konstruktorissa oleva koodi suoritetaan, kun luokan esiintymรค luodaan.

Apex-luokan syntaksi:

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

Uutta avainsanaa kรคytetรครคn huippuluokan esiintymรคn luomiseen. Alla on syntaksi huippuluokan esiintymรคn luomiseen.

myApexClass obj = new myApexClass();

Apex Trigger

Apex-laukaisimet mahdollistavat mukautetun apexin suorittamisen ennen DML-toiminnon suorittamista ja sen jรคlkeen.

Apex-tuki seuraavien kahden tyyppisten laukaisujen:

Ennen triggereitรค: Nรคitรค triggereitรค kรคytetรครคn vahvistamaan ja pรคivittรคmรครคn kentรคn arvo ennen tietueen tallennusta tietokantaan.

Triggerien jรคlkeen: Nรคitรค triggereitรค kรคytetรครคn pรครคsyyn kenttiin (tietuetunnus, LastModifiedDate-kenttรค), jotka jรคrjestelmรค on mรครคrittรคnyt tietokantaan sitoutuneen tietueen jรคlkeen. Nรคiden kenttien arvoa voidaan kรคyttรครค muiden tietueiden muokkaamiseen. Tietueet, jotka kรคynnistyvรคt liipaisujen jรคlkeen, ovat vain luku -tilassa.

Suuri kรคytรคntรถ on kirjoittaa suuria laukaisimia. Tilava liipaisin voi kรคsitellรค yhtรค tietuetta sekรค useita tietueita kerrallaan.

Huipputriggerin syntaksi:

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

Tรคssรค TriggerName on liipaisimen nimi, ObjectName on sen objektin nimi, johon liipaisu kirjoitetaan, trigger_events on pilkuilla eroteltu tapahtumaluettelo.

Seuraavat ovat apex-triggerien tukemat tapahtumat: ennen lisรคystรค, ennen pรคivitystรค, ennen poistamista, lisรครคmisen jรคlkeen, pรคivityksen jรคlkeen, poistamisen jรคlkeen, poistamisen jรคlkeen.

Staattisia avainsanoja ei voi kรคyttรครค Apex-triggerissรค. Kaikkia sisรคluokkiin soveltuvia avainsanoja voidaan kรคyttรครค Apex-triggerissรค.

Jokainen laukaisin mรครคrittรครค implisiittiset muuttujat, jotka palauttavat ajonaikaisen kontekstin. Nรคmรค muuttujat mรครคritellรครคn jรคrjestelmรคssรค. Trigger-luokka. Nรคitรค muuttujia kutsutaan kontekstimuuttujiksi. Alla kuvakaappaus nรคyttรครค apex-triggerin tukeman kontekstimuuttujan.

Apex Trigger

Apex Trigger

Seuraavassa on huomioitu kontekstimuuttuja huipputriggerissรค:

  • ร„lรค kรคytรค trigger.new ja trigger.old DML-operaatioissa.
  • Trigger.new ei voi poistaa.
  • Trigger.new on vain luku -tilassa.
  • Trigger.new-komennolla voidaan muuttaa saman objektin kenttien arvoja vain ennen triggeriรค.

Alla kuvakaappaukset luettelevat huomioita tietyistรค toimista eri laukaisintapahtumissa.

Apex Trigger

Apex Trigger

Erรคluokka Apexissa

Myyntivoiman erรคluokkaa kรคytetรครคn kรคsittelemรครคn suuri mรครคrรค tietueita, jotka ylittรคisivรคt huipputason ohjaimen rajat, jos niitรค kรคsitellรครคn normaalisti. Erรคluokka suorittaa koodin asynkronisesti.

Seuraavat ovat erรคluokan edut:

  • Erรคluokka kรคsittelee tiedot paloina, ja jos kappaleen kรคsittely epรคonnistuu, kaikkia onnistuneesti kรคsiteltyjรค paloja ei palauteta.
  • Jokaista erรคluokan dataa kรคsitellรครคn uusilla ohjainrajoilla, jotka varmistavat, ettรค koodi suoritetaan ohjaimen suoritusrajojen sisรคllรค.
  • Tietokanta. Erรคkรคyttรถliittymรคn tulee olla toteutettu huippuluokan avulla, jotta sitรค voidaan kรคyttรครค erรคluokkana. Se tarjoaa kolme menetelmรครค, jotka erรคluokan on toteutettava.

Seuraavat ovat tietokannan tarjoamat kolme menetelmรครค. Erรคkรคyttรถinen kรคyttรถliittymรค:

1.start()

Tรคmรค menetelmรค luo tietueiden tai objektien laajuuden, jotka on kรคsiteltรคvรค rajapintamenetelmรคllรค execute. Erรคn suorituksen aikana sitรค kutsutaan vain kerran. Tรคmรค menetelmรค palauttaa joko Database.QueryLocator-objektin tai iterable-objektin. Database.QueryLocator-objektia kรคyttรคmรคllรค SQL-kyselyllรค haettujen tietueiden mรครคrรค on 50 miljoonaa tietuetta, mutta iteroitavissa olevaa tietuetta kรคytettรคessรค SQL-kyselyllรค haettavissa olevien tietueiden kokonaismรครคrรค on vain 50000 XNUMX. Iterablea kรคytetรครคn luomaan monimutkainen laajuus erรคluokille.

Aloitustavan syntaksi:

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

2.execute()

Tรคtรค menetelmรครค kรคytetรครคn jokaisen datapalan kรคsittelyyn. Jokaiselle tietuepalalle kutsutaan suoritusmenetelmรครค. Suorituksen oletuserรคn koko on 200 tietuetta. Suoritusmenetelmรค vaatii kaksi argumenttia:

Viittaus Database.BatchableContext-objektiin,

Luettelo sObjekteista, kuten List tai luettelo parametroiduista tyypeistรค. Suoritustavan syntaksi:

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

3.finish()

Viimeistelymenetelmรครค kutsutaan kerran erรคluokan suorituksen aikana. Jรคlkikรคsittelytoiminnot voidaan suorittaa viimeistelymenetelmรคllรค. Esimerkiksi: vahvistussรคhkรถpostin lรคhettรคminen. Tรคtรค menetelmรครค kutsutaan, kun koko erรค on kรคsitelty. Finish-menetelmรคn syntaksi:

global void finish(Database.BatchableContext BC){}

Database.BatchableContext-objekti

Jokainen tietokannan menetelmรค. Erรคkรคyttรถliittymรคssรค on viittaus Database.BatchableContext-objektiin.

Tรคtรค objektia kรคytetรครคn erรคtyรถn edistymisen seuraamiseen.

Seuraavat ovat BatchableContextin tarjoamat instanssimenetelmรคt:

  • getChildJobId(): Tรคmรค menetelmรค palauttaa parhaillaan kรคsiteltรคvรคn erรคtyรถn tunnuksen.
  • getJobId(): Tรคmรค menetelmรค palauttaa erรคtyรถn tunnuksen.

Alla on erรคluokan syntaksi:

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-menetelmรค

Database.executeBatch-menetelmรครค kรคytetรครคn erรคluokan suorittamiseen.

Tรคmรค menetelmรค kรคyttรครค kahta parametria: Kรคsiteltรคvรคn erรคluokan esiintymรค, Asetukset-parametri erรคn koon mรครคrittรคmiseen, jos sitรค ei ole mรครคritetty, se ottaa oletuskoon 200.

Database.executeBatch:n syntaksi:

Database.executeBatch(myBatchObject,scope)

Erรคluokan nimen MyBatchClass suorittaminen:

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

Database.stateful

Erรคluokka on oletuksena tilaton. Joka kerta kun suoritusmenetelmรครค kutsutaan, uusi kopio objektista vastaanotetaan, kaikki luokan muuttujat alustetaan.

Database.stateful on toteutettu tekemรครคn erรคluokista tilallinen.

Jos erรคluokkasi on ottanut kรคyttรถรถn tietokanta , tilallinen kรคyttรถliittymรค kaikki esiintymรคn muuttujat sรคilyttรคvรคt arvonsa, mutta staattiset muuttujat nollataan tapahtuman vรคlillรค.

Yhteenveto

  • Apex on vahvasti kirjoitettu, oliosuuntautunut ohjelmointikieli joka kokoaa ja toimii force.com-alustalla
  • Apex-ohjelmointikieli on isot ja pienet kirjaimet erotteleva kieli
  • Kahden tyyppisiรค toimintakulkuja Apexissa ovat 1) Kehittรคjรคn toiminta 2) Loppukรคyttรคjรคn toiminta
  • Apex auttaa sinua luomaan verkkopalveluita, jotka integroivat Salesforcen muihin sovelluksiin.
  • Apexin tukemat tietotyypit ovat: 1). Alkukantainen 2) Kokoelmat 3) sObject, Enums, 4) Luokat, 5) Objektit ja rajapinnat
  • Apexin mรครคrittรคmรค tuki on julkinen, yksityinen, suojattu ja globaali
  • Apexissa kรคytetyt avainsanat ovat: 1) Jakamalla, 2) Ilman jakamista, 3) Staattinen, 4) Lopullinen 5) Palautus, 6) Nolla, 7) Virtuaalinen, 8) Abstrakti
  • Merkkijono on joukko merkkejรค, joilla ei ole merkkirajoituksia
  • Apex-ohjaimen rajat ovat rajoja, joita apex-ajonaikainen moottori varmistaa, ettรค kaikki kiitotien huippukoodit ja prosessit
  • Getteriรค ja asettajaa voidaan kรคyttรครค koodin suorittamiseen ennen kuin ominaisuuden arvoa kรคsitellรครคn tai muutetaan
  • Salesforcessa on kolme tapaa luoda huippuluokkia: 1) Kehittรคjรคkonsoli 2) Force.com IDE ja 3) Apex-luokan tietosivu.
  • Apex-laukaisimet mahdollistavat mukautetun apexin suorittamisen ennen DML-toiminnon suorittamista ja sen jรคlkeen.
  • Myyntivoiman erรคluokkaa kรคytetรครคn kรคsittelemรครคn suuri mรครคrรค tietueita, jotka ylittรคisivรคt huipputason ohjaimen rajat, jos niitรค kรคsitellรครคn normaalisti.

Tiivistรค tรคmรค viesti seuraavasti: