Salesforce Apex - Trigger

Salesforce Apex - Trigger

In Salesforce, la convalida dei dati prima/dopo l'inserimento è molto importante e dovrebbe essere preso in considerazione. Nella maggior parte degli scenari, dopo aver inserito i dati nell'oggetto Salesforce, devono avvenire alcune manipolazioni dei dati e gli inserimenti/eliminazioni/aggiornamenti errati devono essere convalidati e gestiti. Per raggiungere questo obiettivo, Salesforce ha introdotto uno script Apex noto come "trigger". Immergiti rapidamente nella guida che si occupa di eventi trigger, variabili di contesto, tipi e scenari con esempi in tempo reale.

Apex trigger

In Salesforce, Trigger è un codice apice (.apxt) che si accende prima o dopo le istanze di manipolazione dei dati. Sulla base dell'evento specificato nel grilletto, si accende su oggetti specificati in Salesforce. Inoltre, possiamo specificare i contesti che ci aiutano ad accedere ai contesti di runtime. Questo ci aiuta a prevenire azioni indesiderate/non necessarie sugli oggetti in Salesforce. Dì, nell'oggetto account, dobbiamo aggiornare solo il telefono quando "l'industria" è "agricoltura".

Trigger eventi

Come abbiamo già discusso, si verifica un grilletto prima o dopo le operazioni DML. Ci sono tre operazioni DML che si verificano sull'oggetto Salesforce.

  1. Se si desidera che il grilletto si accenda prima dell'inserimento del record, è possibile utilizzare l'evento del trigger "prima di inserire".
  2. Se si desidera che il grilletto si accenda dopo l'inserimento del record, è possibile utilizzare l'evento del trigger "dopo inserto".
  3. Se si desidera che il grilletto si accenda prima dell'aggiornamento del record, è possibile utilizzare l'evento del trigger "prima dell'aggiornamento".
  4. Se si desidera che il grilletto si accenda dopo l'aggiornamento del record, è possibile utilizzare l'evento del trigger "dopo l'aggiornamento".
  5. Se si desidera che il grilletto si accenda prima della cancellazione del record, è possibile utilizzare l'evento del trigger "prima di eliminare".
  6. Se si desidera che il grilletto si accenda dopo la cancellazione del record, è possibile utilizzare l'evento del trigger "dopo elimina".

Un altro evento di trigger che può essere sparato dopo un sottotesto è "dopo undeleta".

Tipi di innesco

Fondamentalmente, ci sono due tipi di trigger: il grilletto "prima" e il grilletto "dopo".

  1. Prima del grilletto - Si accende quando un record viene inserito, aggiornato o eliminato. Utilizziamo questo trigger per convalidare o aggiornare i record prima di salvarlo nel database (oggetto Salesforce) se vogliamo impostare il "settore dell'account" su "bancario" se il "valutazione dell'account" non è nullo.
  1. Dopo il grilletto - Avvia quando un altro record viene aggiornato/eliminato in base al record esistente se vogliamo creare un nuovo "contatto" dopo che il "account" è stato creato o aggiornato da esso.

Trigger variabili di contesto

È importante vedere quale scenario di innesco viene licenziato. Dobbiamo tracciare su quale contesto del trigger viene licenziato il trigger. Tutte le variabili di contesto del trigger restituiscono true se il trigger viene sparato a causa di quell'evento. Guardiamoli uno per uno.

1. isinsert: Se il grilletto viene sparato a causa di un evento DML inserto, Isinsert diventa vero.

Esempio: Creazione di contatti quando viene creato "account".

2. isupdate: Se il trigger viene sparato a causa di un evento DML di aggiornamento, Isupdate diventa vero.

Esempio: Se il "nome dell'account" non è nullo, popola le "entrate annuali".

3. isdelete: Se il trigger viene sparato a causa di un evento DML Elimina, IsDelete diventa vero.

Esempio: I record dell'account non sono in grado di eliminare se "valutazione dell'account" è "calda".

4. isundelete: Se il grilletto viene sparato a causa di un evento DML non sieduto, Isundelete diventa vero.

Esempio: I record dell'account vengono recuperati dal cestino del riciclo di Salesforce.

Sintassi del trigger:

Possiamo creare uno script Apex che si accende in base alle istanze DML utilizzando la parola chiave "trigger" seguita dal nome del trigger. Chiede quale oggetto Salesforce faccia il trigger dovrebbe avvenire durante la creazione dello script Apex stesso. Tutti gli eventi del trigger sono specificati dopo l'oggetto Salesforce.

trigger trigger_name su salesforce_object_api (trigger_events)
dichiarazioni ..

Configurazione dell'ambiente

1. Vai al "Console per sviluppatori" e vai al file "seleziona nuovo". Quindi, scegli "Apex Trigger".

2. Chiede il nome dello script e l'oggetto Salesforce in modo tale che il trigger sia sparato su questo oggetto. Fai clic su "Invia" per creare un nuovo trigger Apex.

Scenario 1: prima di inserire

Quando l'account viene creato con l'industria "educativa", licenziemo un trigger che assegna il campo "tipo" al "partner tecnologico" [Account oggetto - Account].

trigger prima_insert sull'account (prima di inserire)
per (account account_iter: trigger.Nuovo)
// Controlla se l'industria è "educazione"
if (account_iter.Industria == 'educazione')
// Imposta il tipo su "partner tecnologico"
account_iter.Type = "partner tecnologico";


"Innanzitutto, itechiamo i registri dell'account e controlliamo se l'industria è" educativa "o no. Se è "educazione", assegniamo il "partner tecnologico" al campo "Tipo".

Caso di prova:

Vai alla scheda "Account" dal lanciatore dell'app e crea un account con l'industria come "istruzione". Controlla se il campo "tipo" è popolato con "partner tecnologico" o no.

Facendo clic su "Salva", puoi vedere che "tipo" è creato con "Technology Partner".

Scenario 2: dopo l'inserto e dopo l'aggiornamento

Quando l'account viene creato con la valutazione "calda", licenziemo un grilletto che crea un contatto con "Contatta LastName" come "LinuxHint-Account", "Titolo" come "Manager" e "Dipartimento" come "Vendite" [Oggetto - Account].

trigger after_insert_trigger sull'account (dopo l'inserto, dopo l'aggiornamento)
Elenco contact_list = new list ();
// itera tramite i record dell'account
per (account account_obj: trigger.nuovo)
if (account_obj.Valutazione == 'warm')
// crea un nuovo oggetto di contatto
Contatto cont_obj = new contact ();
// Assegna i valori a tre campi
cont_obj.LastName = 'LinuxHint-Account';
cont_obj.Title = 'manager';
cont_obj.Dipartimento = "vendite";
// Aggiungi questi tre campi all'elenco
lista dei contatti.Aggiungi (cont_obj);

// Inserisci nell'oggetto contatto
inserire contact_list;

Innanzitutto, creiamo un elenco di tipo "contatto" e iteliamo l'oggetto "account". All'interno del ciclo "per", controlliamo se la "valutazione dell'account" è "calda" o no. Se è "caldo", creiamo "contatto" e assegniamo tre campi con i valori e aggiungiamo questo oggetto all'elenco dei contatti (dichiarato in precedenza). Infine, inseriamo questi tre campi nell'oggetto "Contatto" usando il DML inserisci.

Caso di prova:

Vai alla scheda "Account" dal lancio dell'app e crea un account con la "valutazione" come "caldo". Controlla se il record di contatto viene creato con tre campi specificati.

Dopo aver fatto clic su "Salva", puoi vedere che il "contatto" è creato con tre campi. Vai alla scheda "Contatti".

Possiamo vedere che vengono creati tre campi. Vai alla scheda "Dettagli" per visualizzare i campi.

Scenario 3: prima dell'aggiornamento

Quando la campagna viene aggiornata con il tipo di "conferenza", accendemo un trigger che aggiorna il campo "status" al "Object" - Campagna].

trigger prima_update_trigger sulla campagna (prima dell'aggiornamento)
per (campagna campagna_iter: trigger.Nuovo)
// Controlla se il tipo è "conferenza"
if (campagna_iter.Type == 'Conference')
// Aggiorna lo stato a 'completato'
campagna_iter.Status = 'completato';


Innanzitutto, iteliamo i registri della campagna e controlliamo se il "tipo" è "conferenza" o no. Se si tratta di "Conferenza", aggiorniamo il campo "Stato" su "Completato".

Caso di prova:

Vai alla scheda "campagne" dal lanciatore dell'app e apri qualsiasi record esistente.

Questo record è di tipo "webinar" e il suo stato è "pianificato". Ora, modifica questo record aggiornando il tipo a "Conferenza".

Possiamo vedere che lo "stato" viene aggiornato a "completato".

Scenario 4: Elimina (prima)

Quando proviamo a eliminare i record dell'oggetto della campagna quando lo stato è "completato" o il tipo è "Conferenza", lanciamo un errore in modo tale che non saremo in grado di eliminare i record. Visualizziamo l'errore usando il metodo AdderRor () [Oggetto - Campagna].

trigger delete_trigger sulla campagna (prima di delete)
per (campagna Camp_iter: trigger.vecchio)
// Controlla se lo stato == 'completato' o type == 'Conference'
if (Camp_iter.Status == 'completato' || Camp_iter.Type == 'Conference')
// Specifica il messaggio di errore.
Camp_iter.Adderror ('non puoi eliminare questo record se lo stato == completato o type == conference.');


Caso di prova:

Vai alla scheda "campagne" dal lanciatore dell'app e apri qualsiasi record esistente con lo stato "completato" o con il tipo "Conferenza".

Fai clic su "Elimina" sul discesa a destra.

Possiamo vedere che l'errore viene lanciato e non è eliminato.

Conclusione

Trigger è uno script apice che si accende prima o dopo le istanze di manipolazione dei dati. Sulla base dell'evento specificato nel grilletto, si accende su oggetti specificati in Salesforce. Abbiamo imparato i quattro diversi scenari per licenziare il grilletto al momento dell'inserimento, dell'aggiornamento e della cancellazione con diversi esempi su oggetti diversi. Qui, abbiamo utilizzato gli oggetti dell'account, dei contatti e della campagna per la dimostrazione. Puoi seguire gli stessi esempi sui tuoi oggetti personalizzati.