Salesforce Apex - Auslöser

Salesforce Apex - Auslöser

In Salesforce ist die Validierung der Daten vor/nach dem Einsetzen sehr wichtig und sollte berücksichtigt werden. In den meisten Szenarien muss nach Eingabe der Daten in das Salesforce -Objekt einige Datenmanipulationen geschehen und falsche Insertionen/Löschungen/Updates müssen validiert und behandelt werden. Um dies zu erreichen, führte Salesforce ein Apex -Skript ein, das als „Trigger“ bezeichnet wird. Tauchen Sie schnell in den Leitfaden ein, der sich mit Triggerereignissen, Kontextvariablen, Typen und Szenarien mit Echtzeitbeispielen befasst.

Apex -Trigger

In Salesforce ist Trigger ein Apex-Code (.APXT), der vor oder nach den Datenmanipulationsinstanzen ausbricht. Basierend auf dem Ereignis, das im Auslöser angegeben ist, füllt es auf bestimmte Objekte in Salesforce. Außerdem können wir die Kontexte angeben, die uns helfen, auf die Laufzeitkontexte zuzugreifen. Dies hilft uns, unerwünschte/unnötige Aktionen auf Objekte in Salesforce zu verhindern. Angenommen, wir müssen im Kontoobjekt nur das Telefon aktualisieren, wenn die „Branche“ „Landwirtschaft“ ist.

Ereignisse auslösen

Wie wir bereits diskutiert haben, erfolgt ein Auslöser vor oder nach den DML -Operationen. Es gibt drei DML -Operationen, die im Salesforce -Objekt stattfinden.

  1. Wenn Sie möchten, dass der Trigger vor dem Einfügen des Datensatzes abfeuert, können Sie das Triggerereignis „Before Insert“ verwenden.
  2. Wenn Sie möchten, dass der Trigger nach dem Einfügen des Datensatzes abfeuert, können Sie das Triggerereignis „After Insert“ verwenden.
  3. Wenn der Trigger vor dem Update des Datensatzes abfeuern soll, können Sie das Triggerereignis „Before Update“ verwenden.
  4. Wenn Sie möchten, dass der Trigger nach dem Update des Datensatzes abfeuert, können Sie das Triggerereignis „After Update“ verwenden.
  5. Wenn Sie möchten, dass der Trigger vor dem Löschen des Datensatzes abfeuert, können Sie das Triggerereignis „Before Löschen“ verwenden.
  6. Wenn Sie möchten, dass der Trigger nach dem Löschen des Datensatzes abfeuert, können Sie das Triggerereignis „Nach dem Löschen“ verwenden.

Ein weiteres Triggerereignis, das nach Ungläubigen abgefeuert werden kann, ist „nach unelektronisch“.

Triggertypen

Grundsätzlich gibt es zwei Arten von Auslöser: den „vor“ -auslöser und den „After“ -Strigger.

  1. Vor Trigger - Es feuert, wenn ein Datensatz eingefügt, aktualisiert oder gelöscht wird. Wir verwenden diesen Auslöser, um die Datensätze zu validieren oder zu aktualisieren, bevor wir sie in der Datenbank (Salesforce -Objekt) speichern, wenn wir die „Kontoindustrie“ auf „Bankgeschäft“ festlegen möchten, wenn „Konto -Rating“ nicht null ist.
  1. Nach Trigger - Es wird ausgelöst, wenn ein anderer Datensatz basierend auf dem vorhandenen Datensatz aktualisiert/gelöscht wird, wenn wir nach dem Erstellen oder Aktualisieren des „Konto“ einen neuen „Kontakt“ erstellen möchten.

Kontextvariablen auslösen

Es ist wichtig zu sehen, welches Triggerszenario abgefeuert wird. Wir müssen verfolgen, welcher Triggerkontext der Abzug ausgelöst wird. Alle Trigger -Kontextvariablen geben true zurück, wenn der Auslöser aufgrund dieses Ereignisses abgefeuert wird. Schauen wir sie uns nacheinander an.

1. Issinsert: Wenn der Auslöser aufgrund eines Einfügungs -DML -Ereignisses abgefeuert wird, wird Issinsert wahr.

Beispiel: Erstellen Kontakt, wenn „Konto“ erstellt wird.

2. Isupdate: Wenn der Auslöser aufgrund eines Update -DML -Ereignisses abgefeuert wird, wird Isupdate wahr.

Beispiel: Wenn der „Kontoname“ nicht null ist, bevölkern Sie den „Jahresumsatz“.

3. Isdelete: Wenn der Auslöser aufgrund eines DML -Ereignisses gelöscht wird, wird Isdelete wahr.

Beispiel: Die Kontoaufzeichnungen können nicht löschen, wenn "Kontobewertung" "heiß" ist.

4. isundelete: Wenn der Auslöser aufgrund eines ungeletteten DML -Ereignisses abgefeuert wird, wird isundelete wahr.

Beispiel: Die Kontoaufzeichnungen werden aus dem Salesforce Recycle Bin abgerufen.

Triggersyntax:

Wir können ein Apex -Skript erstellen, das basierend auf DML. Es fragt, welcher Salesforce -Objekt den Auslöser während der Erstellung des Apex -Skripts selbst erfolgen sollte. Alle Triggerereignisse werden nach dem Salesforce -Objekt angegeben.

Trigger Trigger_Name auf Salesforce_Object_api (Trigger_Events)
Aussagen…

Umgebungsaufbau

1. Gehen Sie zur "Developer Console" und gehen Sie zur Datei "Neue" aus. Wählen Sie dann "Apex Trigger" aus.

2. Es wird nach dem Skriptnamen und dem Salesforce -Objekt aufgefordert, dass der Auslöser auf dieses Objekt abgefeuert wird. Klicken Sie auf "Senden", um einen neuen Apex -Auslöser zu erstellen.

Szenario 1: Vor dem Einfügen

Wenn das Konto mit der „Bildungsbranche“ erstellt wird, entlassen wir einen Auslöser, der dem Feld „Typ“ dem „Technologiepartner“ [Objekt - Konto] zuweist.

Auslösen Sie vor dem Konto (vor dem Einfügen)
für (Account Account_iter: Trigger.Neu)
// Überprüfen Sie, ob die Branche "Bildung" ist
if (Account_iter.Branche == 'Bildung')
// Setzen Sie den Typ auf "Technologiepartner"
Account_iter.Typ = 'Technologiepartner';


„Erstens iterieren wir die Kontoaufzeichnungen und prüfen, ob die Branche„ Bildung “ist oder nicht. Wenn es sich um „Bildung“ handelt, weisen wir den „Technologiepartner“ dem Feld "Typ" zu.

Testfall:

Gehen Sie vom App -Launcher auf die Registerkarte "Konten" und erstellen Sie ein Konto bei der Industrie als "Bildung". Überprüfen Sie, ob das Feld "Typ" mit "Technologiepartner" besiedelt ist oder nicht.

Wenn Sie auf "Speichern" klicken, können Sie feststellen, dass "Typ" mit "Technologiepartner" erstellt wird, das erstellt wird.

Szenario 2: Nach dem Einfügen und nach dem Update

Wenn das Konto mit der Bewertung „warm“ erstellt wird, entlassen wir einen Auslöser, der einen Kontakt mit "Kontakt Lastname" als "LinuxHint-Account", "Titel" als "Manager" und "Abteilung" als "Verkauf" erstellt [Objekt " - Konto].

Auslösen von After_insert_trigger im Konto (nach dem Einfügen, nach dem Update)
List contact_list = new list ();
// Durch Kontoaufzeichnungen iterieren
für (Account Account_OBJ: Trigger.neu)
if (account_obj.Bewertung == 'warm')
// neues Kontaktobjekt erstellen
Kontakt cont_obj = new contact ();
// Die Werte drei Felder zuweisen
cont_obj.LastName = 'LinuxHint-Account';
cont_obj.Titel = 'Manager';
cont_obj.Abteilung = 'Vertrieb';
// Fügen Sie diese drei Felder der Liste hinzu
Kontaktliste.add (cont_obj);

// In das Kontaktobjekt einfügen
Contact_List einfügen;

Zunächst erstellen wir eine Liste mit "Kontakt" -Typ und iterieren das "Konto" -Objekt. In der Schleife "für" überprüfen wir, ob die "Kontobewertung" "warm" ist oder nicht. Wenn es „warm“ ist, erstellen wir "Kontakt" und weisen den Werten drei Felder zu und fügen dieses Objekt der Kontaktliste hinzu (zuvor deklariert). Schließlich setzen wir diese drei Felder mit der DML -Einfügung in das „Kontakt“ -Objekt ein.

Testfall:

Gehen Sie vom App -Launcher auf die Registerkarte "Konten" und erstellen Sie ein Konto mit der Bewertung "Warm" als "Warm". Überprüfen Sie, ob der Kontaktdatensatz mit drei bestimmten Feldern erstellt wird.

Wenn Sie auf "Speichern" klicken, können Sie feststellen, dass "Kontakt" mit drei Feldern erstellt wird. Gehen Sie zur Registerkarte "Kontakte".

Wir können sehen, dass drei Felder erstellt werden. Gehen Sie zur Registerkarte "Details", um die Felder anzuzeigen.

Szenario 3: Vor dem Update

Wenn die Kampagne mit dem Typ „Konferenz“ aktualisiert wird, feuern wir einen Auslöser aus, der das Feld "Status" auf "Fertig" [Objekt - Kampagne] aktualisiert.

Trigger vor_update_trigger auf der Kampagne (vor dem Update)
für (Campaign Campaign_iter: Trigger.Neu)
// Überprüfen Sie, ob der Typ "Konferenz" ist
if (Campaign_iter.Typ == 'Konferenz')
// Aktualisieren Sie den Status auf "fertig"
Kampagne_iter.Status = 'abgeschlossen';


Erstens iterieren wir die Kampagnenaufzeichnungen und überprüfen, ob der Typ "Konferenz" ist oder nicht. Wenn es sich um "Konferenz" handelt, aktualisieren wir das Feld "Status" auf "Fertigstellung".

Testfall:

Gehen Sie vom App -Launcher auf die Registerkarte "Kampagnen" und öffnen Sie einen vorhandenen Datensatz.

Dieser Datensatz enthält "Webinar" -Typ und sein Status ist "geplant". Bearbeiten Sie diesen Datensatz nun, indem Sie den Typ auf "Konferenz" aktualisieren.

Wir können sehen, dass der „Status“ auf "Fertiger" aktualisiert wird.

Szenario 4: vor) löschen

Wenn wir versuchen, die Datensätze des Kampagnenobjekts zu löschen, wenn der Status „abgeschlossen“ oder der Typ „Konferenz“ ist, werfen wir einen Fehler, sodass wir die Datensätze nicht löschen können. Wir zeigen den Fehler mithilfe der AdderRor () -Methode [Objekt - Kampagne] an.

Trigger Delete_trigger auf Kampagne (vor dem Löschen)
für (Kampagnencamp_iter: Trigger.alt)
// Überprüfen Sie, ob der Status == 'abgeschlossen' oder type == 'Konferenz'
if (camp_iter.Status == 'abgeschlossen' || camp_iter.Typ == 'Konferenz')
// Geben Sie die Fehlermeldung an.
camp_iter.Adderror ('Sie können diesen Datensatz nicht löschen, wenn der Status == abgeschlossen oder Typ == Konferenz.');


Testfall:

Gehen Sie aus dem App -Launcher zur Registerkarte "Kampagnen" und öffnen Sie alle vorhandenen Datensatz.

Klicken Sie auf der Dropdown rechts auf "Löschen".

Wir können sehen, dass ein Fehler geworfen wird und nicht gelöscht wird.

Abschluss

Trigger ist ein Apex -Skript, das vor oder nach den Datenmanipulationsinstanzen ausfeuert. Basierend auf dem Ereignis, das im Auslöser angegeben ist, füllt es auf bestimmte Objekte in Salesforce. Wir haben die vier verschiedenen Szenarien gelernt, um den Auslöser beim Einfügen, zu aktualisieren und mit verschiedenen Beispielen für verschiedene Objekte zu löschen. Hier haben wir die Objekte von Konto-, Kontakt- und Kampagnen zur Demonstration verwendet. Sie können dieselben Beispiele auf Ihren benutzerdefinierten Objekten befolgen.