Salesforce Apex - wyzwalacze

Salesforce Apex - wyzwalacze

W Salesforce walidacja danych przed/po wstawieniu jest bardzo ważna i należy je wziąć pod uwagę. W większości scenariuszy, po wprowadzeniu danych do obiektu Salesforce, niektóre manipulacje danymi musi się zdarzyć, a niewłaściwe wprowadzenie/usuwanie/aktualizacje muszą zostać zatwierdzone i obsługiwane. Aby to osiągnąć, Salesforce wprowadził skrypt wierzchołkowy znany jako „wyzwalacz”. Szybko zanurz się w przewodniku, który zajmuje się zdarzeniami wyzwalacznymi, zmiennymi kontekstowymi, typami i scenariuszami z przykładami w czasie rzeczywistym.

Spust szczytowy

W Salesforce Trigger jest kodem wierzchołkowym (.apxt), który strzela przed lub po instancjach manipulacji danymi. W oparciu o zdarzenie określone w spustu, wystrzeliwuje ono na określonych obiektach w Salesforce. Możemy również określić konteksty, które pomogą nam uzyskać dostęp do kontekstów czasu wykonywania. Pomaga nam to zapobiegać niechcianym/niepotrzebnym działaniom na obiekty w Salesforce. Powiedz, że w obiekcie konto musimy zaktualizować tylko telefon, gdy „przemysł” to „rolnictwo”.

Wydarzenia wyzwalające

Jak już dyskutowaliśmy, występuje wyzwalacz przed lub po operacjach DML. Istnieją trzy operacje DML, które występują w obiekcie Salesforce.

  1. Jeśli chcesz, aby spust strzelił przed wstawieniem rekordu, możesz użyć zdarzenia spustu „przed wstawieniem”.
  2. Jeśli chcesz, aby spust strzelił po wstawieniu rekordu, możesz użyć zdarzenia wyzwalającego „After Insert”.
  3. Jeśli chcesz, aby wyzwalacz wystrzelił przed aktualizacją rekordu, możesz użyć zdarzenia „przed aktualizacją”.
  4. Jeśli chcesz, aby wyzwalacz wystrzelił po aktualizacji rekordu, możesz użyć zdarzenia „po aktualizacji”.
  5. Jeśli chcesz, aby spust strzelił przed usunięciem rekordu, możesz użyć zdarzenia wyzwalającego „przed usunięciem”.
  6. Jeśli chcesz, aby spust strzelił po usunięciu rekordu, możesz użyć zdarzenia wyzwalającego „After Delete”.

Jeszcze jedno zdarzenie spustowe, które można zwolnić po Undleecji, jest „po Undlete”.

Typy spustu

Zasadniczo istnieją dwa rodzaje wyzwalaczy: spust „przed” i wyzwalacz „po”.

  1. Przed wyzwalaczem - Wystrzeliwuje, gdy rekord jest wstawiany, aktualizowany lub usuwany. Używamy tego wyzwalacza do weryfikacji lub aktualizacji rekordów przed zapisaniem go w bazie danych (obiekt Salesforce), jeśli chcemy ustawić „branżę konta” na „bankowość”, jeśli „ocena konta” nie jest NULL.
  1. Po spustu - Strzela, gdy inny rekord zostanie zaktualizowany/usunięty na podstawie istniejącego rekordu, jeśli chcemy utworzyć nowy „kontakt” po utworzeniu lub aktualizacji „konta”.

Wyzwalacz zmienne kontekstowe

Ważne jest, aby zobaczyć, który scenariusz spustowy jest zwolniony. Musimy śledzić, na którym kontekst wyzwalający jest zwolniony. Wszystkie zmienne kontekstowe spustu powracają, jeśli wyzwalacz zostanie wystrzelony z powodu tego zdarzenia. Spójrzmy na nich jeden po drugim.

1. isinsert: Jeśli spust zostanie wystrzelony z powodu zdarzenia wstawki DML, Isinsert staje się prawdziwy.

Przykład: Tworzenie kontaktu, gdy jest tworzone „konto”.

2. isupdate: Jeśli wyzwalacz zostanie zwolniony z powodu zdarzenia aktualizacji DML, IsUpdate staje się prawdziwy.

Przykład: Jeśli „nazwa konta” nie jest zerowa, wypełnij „roczne przychody”.

3. Isdelete: Jeśli spust zostanie wystrzelony z powodu zdarzenia usuwania DML, Isdelete staje się prawdziwe.

Przykład: Rekordy konta nie są w stanie usunąć, czy „ocena konta” jest „gorąca”.

4. Isundelete: Jeśli spust zostanie wystrzelony z powodu cofniętego zdarzenia DML, Isundelete staje się prawdziwe.

Przykład: Rekordy konta są pobierane z kosza recyklingu Salesforce.

Składnia wyzwala:

Możemy utworzyć skrypt wierzchołkowy, który strzela na podstawie instancji DML za pomocą słowa kluczowego „Trigger”, a następnie nazwy wyzwalacza. Pyta, który obiekt Salesforce czyni wyzwalacz, powinien odbyć się podczas tworzenia samego skryptu wierzchołkowego. Wszystkie zdarzenia spustowe są określone po obiekcie Salesforce.

Trigger Trigger_name na Salesforce_Object_API (Trigger_Events)
sprawozdania…

Konfiguracja środowiska

1. Przejdź do „konsoli programisty” i przejdź do pliku „Wybierz nowy”. Następnie wybierz „Spust szczytowy”.

2. Zaprasza nazwę skryptu i obiekt Salesforce, aby spust został zwolniony na tym obiekcie. Kliknij „Prześlij”, aby utworzyć nowy wyzwalacz wierzchołka.

Scenariusz 1: Przed wstawieniem

Kiedy konto jest tworzone z branżą „edukacyjną”, zwolniamy spust, który przypisuje pole „typu” do „partnera technologicznego” [Konto obiektu].

wyzwalacz przed_insert na konto (przed wstawką)
dla (konto_ konta: wyzwalacz.Nowy)
// Sprawdź, czy branża to „edukacja”
if (konto_iter.Przemysł == „edukacja”)
// Ustaw typ „partnera technologicznego”
konto_iter.Type = „Partner technologiczny”;


„Po pierwsze, iterujemy zapisy konta i sprawdzamy, czy branża jest„ edukacją ”, czy nie. Jeśli jest to „edukacja”, przypisujemy „partnera technologicznego” do pola „Typ”.

Przypadek testowy:

Przejdź do zakładki „Konta” z uruchamiania aplikacji i utwórz konto z branżą jako „edukacja”. Sprawdź, czy pole „Typ” jest wypełnione „partnerem technologicznym”, czy nie.

Po kliknięciu „Zapisz” możesz zobaczyć, że „Typ” jest tworzony z „partnerem technologicznym”.

Scenariusz 2: po wstawie i po aktualizacji

Kiedy konto jest tworzone z oceną „ciepłej”, zwolniamy spust, który tworzy kontakt z „kontaktem LastName” jako „Linuxhint-aktount”, „tytuł” ​​jako „menedżer” i „dział” jako „sprzedaż” [obiektowy - Konto].

Trigger After_Insert_trigger na konto (po wstawieniu, po aktualizacji)
List Contact_List = new List ();
// iteruj za pośrednictwem rekordów konta
dla (konto konta_obj: wyzwalacz.nowy)
if (konto_obj.Ocena == „ciepło”)
// Utwórz nowy obiekt kontaktowy
Contact cont_obj = new contact ();
// Przypisz wartości do trzech pól
cont_obj.LastName = 'Linuxhint-Account';
cont_obj.Title = „menedżer”;
cont_obj.Dział = „sprzedaż”;
// Dodaj te trzy pola do listy
Lista kontaktów.add (cont_obj);

// wstaw do obiektu kontaktowego
Wstaw contact_list;

Najpierw tworzymy listę typu „kontakt” i iterujemy obiekt „konta”. Wewnątrz pętli „dla” sprawdzamy, czy „ocena konta” jest „ciepła”, czy nie. Jeśli jest „ciepły”, tworzymy „kontakt” i przypisujemy trzy pola z wartościami i dodajemy ten obiekt do listy kontaktów (zadeklarowane wcześniej). Wreszcie, wkładamy te trzy pola do obiektu „kontakt” za pomocą wstawki DML.

Przypadek testowy:

Przejdź do zakładki „Konta” z uruchamiania aplikacji i utwórz konto z „Oceną” jako „ciepłe”. Sprawdź, czy rekord kontaktu jest tworzony z trzema określonymi pola.

Po kliknięciu „Zapisz” możesz zobaczyć, że „kontakt” jest tworzony z trzema polami. Przejdź do zakładki „kontakty”.

Widzimy, że tworzone są trzy pola. Przejdź do zakładki „Szczegóły”, aby wyświetlić pól.

Scenariusz 3: Przed aktualizacją

Gdy kampania jest aktualizowana o typ „konferencji”, zwolniamy spust, który aktualizuje pole „status” do „zakończonej” [Object - Kampania].

Trigger przed_pdate_trigger w kampanii (przed aktualizacją)
dla (kampania Kampania_.Nowy)
// Sprawdź, czy typem jest „konferencja”
if (kampania_kampana.Type == 'konferencja')
// zaktualizuj status do „Ukończonego”
kampania_kampana.Status = „Ukończony”;


Po pierwsze, iterujemy zapisy kampanii i sprawdzamy, czy „typ” to „konferencja”, czy nie. Jeśli jest to „Konferencja”, aktualizujemy pole „Status” do „ukończenia”.

Przypadek testowy:

Przejdź do zakładki „Kampanie” z uruchamiania aplikacji i otwórz dowolną istniejącą płytę.

Ten zapis jest typu „webinaru”, a jego status jest „planowany”. Teraz edytuj ten rekord, aktualizując typ „Konferencji”.

Widzimy, że „status” jest aktualizowany do „zakończonego”.

Scenariusz 4: Usuń (przed)

Kiedy próbujemy usunąć rekordy obiektu kampanii, gdy status jest „zakończony” lub typ jest „Konferencja”, rzucamy błąd, abyśmy nie byli w stanie usunąć rekordów. Wyświetlamy błąd za pomocą metody adderror () [Object - Kampania].

Trigger delete_trigger w kampanii (przed usunięciem)
dla (kampania camp_iter: wyzwalacz.stary)
// Sprawdź, czy status == „Ukończony” lub typ == „Konferencja”
if (camp_iter.Status == „Ukończony” || Camp_iter.Type == 'konferencja')
// Określ komunikat o błędzie.
Camp_iter.Adderror („Nie możesz usunąć tego rekordu, jeśli konferencja status ==.');


Przypadek testowy:

Przejdź do zakładki „Kampanie” z uruchamiania aplikacji i otwórz dowolną istniejącą rekord ze statusem „Ukończona” lub typem „Konferencja”.

Kliknij „Usuń” po rozwijaniu po prawej stronie.

Widzimy, że błąd jest rzucany i nie jest usuwany.

Wniosek

Trigger to skrypt wierzchołkowy, który strzela przed lub po instancjach manipulacji danymi. W oparciu o zdarzenie określone w spustu, wystrzeliwuje ono na określonych obiektach w Salesforce. Nauczyliśmy się czterech różnych scenariuszy, aby zwolnić spust po wstawieniu, aktualizacji i usunięciu z różnymi przykładami na różnych obiektach. Tutaj wykorzystaliśmy obiekty konta, kontaktu i kampanii do demonstracji. Możesz śledzić te same przykłady na niestandardowych obiektach.