Salesforce Apex - utløser

Salesforce Apex - utløser

I Salesforce er validering av dataene før/etter innsetting veldig viktig og bør tas i betraktning. I de fleste av scenariene, etter å ha lagt inn dataene i Salesforce -objektet, må noen datamanipulering skje, og gale innsettinger/slettinger/oppdateringer må valideres og håndteres. For å oppnå dette introduserte Salesforce et Apex -skript som er kjent som "Trigger". Dykk raskt inn i guiden som omhandler triggerhendelser, kontekstvariabler, typer og scenarier med sanntidseksempler.

Apex trigger

I Salesforce er Trigger en toppkode (.APXT) som skyter før eller etter datamanipulasjonsforekomstene. Basert på hendelsen som er spesifisert i avtrekkeren, skyter den på spesifiserte objekter i Salesforce. Vi kan også spesifisere kontekstene som hjelper oss med å få tilgang til kjøretidskontekstene. Dette hjelper oss å forhindre uønskede/unødvendige handlinger på gjenstander i Salesforce. Si, i kontoobjektet, må vi bare oppdatere telefonen når "industrien" er "landbruk".

Utløse hendelser

Som vi allerede har diskutert, skyter en trigger før eller etter at DML -operasjonene oppstår. Det er tre DML -operasjoner som oppstår på Salesforce -objektet.

  1. Hvis du vil at utløseren skal skyte før innsetting av post, kan du bruke "før innsat" -utløserhendelsen.
  2. Hvis du vil at utløseren skal skyte etter innsetting av post, kan du bruke "etter innsat" -utløserhendelse.
  3. Hvis du vil at utløseren skal skyte før oppdatering av post, kan du bruke "før oppdatering" -utløserhendelsen.
  4. Hvis du vil at utløseren skal skyte etter oppdateringen av posten, kan du bruke "etter oppdatering" -utløserhendelsen.
  5. Hvis du vil at utløseren skal skyte før sletting av posten, kan du bruke "før du sletter" triggerhendelsen.
  6. Hvis du vil at utløseren skal skyte etter sletting av posten, kan du bruke "etter å slette" triggerhendelsen.

Nok en triggerhendelse som kan avfyres etter UNDELETION er "After Undelete".

Utløser typer

I utgangspunktet er det to typer triggere: "før" -utløseren og "etter" -utløseren.

  1. Før utløser - Den skyter når en post settes inn, oppdatert eller slettet. Vi bruker denne utløseren for å validere eller oppdatere postene før vi lagrer den i databasen (Salesforce Object) hvis vi ønsker å sette "kontobransjen" til "bank" hvis "kontovurdering" ikke er null.
  1. Etter utløser - Den skyter når en annen post blir oppdatert/slettet basert på den eksisterende posten hvis vi ønsker å opprette en ny "kontakt" etter at "kontoen" er opprettet eller oppdatert fra den.

Utløser kontekstvariabler

Det er viktig å se hvilket trigger -scenario som blir avfyrt. Vi må spore på hvilken utløserkontekst som utløser blir avfyrt. Alle triggerkontekstvariabler returnerer sant hvis avtrekkeren blir avfyrt på grunn av den hendelsen. La oss se på dem en etter en.

1. Isinsert: Hvis avtrekkeren blir avfyrt på grunn av en innsats DML -hendelse, blir IsInsert sann.

Eksempel: Opprette kontakt når "konto" opprettes.

2. ISUPDATE: Hvis avtrekkeren blir avfyrt på grunn av en oppdatering DML -hendelse, blir Isupdate sann.

Eksempel: Hvis "kontonavnet" ikke er null, kan du befolke "årlige inntekter".

3. ISDELETE: Hvis avtrekkeren blir avfyrt på grunn av en slett DML -hendelse, blir IsDelete sann.

Eksempel: Kontooppføringer kan ikke slette hvis "Kontoklassifisering" er "Hot".

4. Isundelete: Hvis avtrekkeren blir avfyrt på grunn av en uklettet DML -hendelse, blir Isundelete sann.

Eksempel: Kontopostene blir hentet fra Salesforce papirkurven.

Utløser syntaks:

Vi kan lage et Apex -skript som branner basert på DML -forekomster ved å bruke "Trigger" nøkkelordet etterfulgt av utløsernavnet. Det spør om hvilket Salesforce -objekt gjør at utløseren skal skje under opprettelsen av selve Apex -skriptet. Alle triggerhendelsene er spesifisert etter Salesforce -objektet.

trigger trigger_name på Salesforce_object_api (trigger_events)
uttalelser ..

Miljøoppsett

1. Gå til "Developer Console" og gå til "Velg nye" -filen. Velg deretter “Apex Trigger”.

2. Den spør skriptnavnet og Salesforce -objektet slik at avtrekkeren blir avfyrt på dette objektet. Klikk på "Send" for å opprette en ny Apex -trigger.

Scenario 1: Før innsats

Når kontoen opprettes med "utdanning" -industrien, skyter vi en utløser som tildeler "typen" -feltet til "teknologipartner" [Objekt - konto].

utløser før_insert på konto (før innsats)
for (Account Account_iter: trigger.Nytt)
// sjekk om bransjen er 'utdanning'
if (Account_iter.Industri == 'utdanning')
// Sett typen til 'teknologipartner'
konto_iter.Type = 'teknologipartner';


"Først itererer vi kontojournalene og sjekker om bransjen er" utdanning "eller ikke. Hvis det er "utdanning", tildeler vi "teknologipartneren" til "typen" -feltet.

Testforsøk:

Gå til fanen "Kontoer" fra app -lanseringen og opprett en konto med bransjen som "utdanning". Sjekk om "type" -feltet er befolket med "teknologipartner" eller ikke.

Når du klikker på "Lagre", kan du se at "Type" er opprettet med "Technology Partner".

Scenario 2: Etter innsetting og etter oppdatering

Når kontoen opprettes med den "varme" rangeringen, skyter vi en utløser som oppretter en kontakt med "kontakt etternavn" som "Linuxhint-Account", "Tittel" som "Manager" og "Department" som "salg" [objekt - Regnskap].

Trigger After_Insert_Trigger på konto (After INSERT, After Update)
Liste kontakt_list = ny liste ();
// itererer gjennom kontospiller
for (Account Account_OBJ: Trigger.nytt)
if (account_obj.Rating == 'varm')
// Opprett nytt kontaktobjekt
Kontakt cont_obj = ny kontakt ();
// tilordne verdiene til tre felt
cont_obj.LastName = 'Linuxhint-Account';
cont_obj.Tittel = 'manager';
cont_obj.Avdeling = 'salg';
// Legg til disse tre feltene på listen
kontaktliste.legg til (cont_obj);

// sett inn i kontaktobjektet
Sett inn kontakt_liste;

Først oppretter vi en liste over "kontakt" -type og itererer "Konto" -objektet. Inne i "for" -sløyfen sjekker vi om "kontovurderingen" er "varm" eller ikke. Hvis det er "varmt", oppretter vi "kontakt" og tildeler tre felt med verdiene og legger dette objektet til kontaktlisten (erklært tidligere). Til slutt setter vi inn disse tre feltene i "kontakt" -objektet ved hjelp av innsatsen DML.

Testforsøk:

Gå til fanen "Kontoer" fra appstarteren og opprett en konto med "rangering" som "varm". Sjekk om kontaktposten er opprettet med tre spesifiserte felt.

Når du klikker på "Lagre", kan du se at "kontakt" er opprettet med tre felt. Gå til fanen "Kontakter".

Vi kan se at tre felt er opprettet. Gå til fanen "Detaljer" for å se feltene.

Scenario 3: Før oppdatering

Når kampanjen oppdateres med "Conference" -type, skyter vi en utløser som oppdaterer "Status" -feltet til "Fullført" [Object - Campaign].

utløser før_update_trigger på kampanjen (før oppdatering)
for (kampanjekampanje_iter: trigger.Nytt)
// sjekk om typen er 'konferanse'
if (campaign_iter.Type == 'konferanse')
// Oppdater statusen til 'fullført'
Kampanje_iter.Status = 'fullført';


Først itererer vi kampanjegistrene og sjekker om "typen" er "konferanse" eller ikke. Hvis det er "konferanse", oppdaterer vi "status" -feltet til "fullført".

Testforsøk:

Gå til "Kampanjer" -fanen fra App Launcher og åpne enhver eksisterende post.

Denne posten er av "webinar" -type og statusen er "planlagt". Rediger nå denne posten ved å oppdatere typen til "Conference".

Vi kan se at "statusen" blir oppdatert til "fullført".

Scenario 4: Slett (før)

Når vi prøver å slette postene til kampanjeobjektet når statusen er "fullført" eller typen er "konferanse", kaster vi en feil slik at vi ikke vil kunne slette postene. Vi viser feilen ved å bruke Adderror () -metoden [Object - Campaign].

Trigger Delete_Trigger på kampanjen (før slett)
for (kampanje camp_iter: trigger.gammel)
// sjekk om statusen == 'fullført' eller type == 'konferanse'
if (camp_iter.Status == 'fullført' || Camp_iter.Type == 'konferanse')
// spesifiser feilmeldingen.
Camp_iter.Adderror ('Du kan ikke slette denne posten hvis statusen == fullført eller type == konferanse.');


Testforsøk:

Gå til fanen "Kampanjer" fra app -lanseringen og åpne en hvilken som helst eksisterende post med "fullført" status eller med "konferans" -typen ".

Klikk på “Slett” på rullegardinmenyen til høyre.

Vi kan se at feilen blir kastet og den ikke blir slettet.

Konklusjon

Trigger er et Apex -skript som avfyrer før eller etter datamanipulasjonsforekomstene. Basert på hendelsen som er spesifisert i avtrekkeren, skyter den på spesifiserte objekter i Salesforce. Vi lærte de fire forskjellige scenariene for å skyte utløseren ved innsetting, oppdatering og sletting med forskjellige eksempler på forskjellige objekter. Her benyttet vi kontoen, kontakten og kampanjeobjektene for demonstrasjon. Du kan følge de samme eksemplene på dine tilpassede objekter.