Wierzchołek partii w Salesforce

Wierzchołek partii w Salesforce
W Salesforce wierzchołek wsadowy jest procesem asynchronicznym, w którym każdy proces jest uruchamiany w innym wątku; Dlatego jest to proces asynchroniczny. Korzystając z tego, możemy masowo aktualizować i usuwać rekordy na raz. W porównaniu z procesem synchronicznym limity gubernatora są bardziej dla tego procesu asynchronicznego (ponieważ każdy proces działa na własny wątek). W ramach tego samouczka omówimy, jak masowo wstawić, masową aktualizację i masowo usunąć rekordy z obiektu Salesforce z przykładami. W każdym przypadku kontynuujemy dyskusje oparte na scenariuszach. Zanurzmy się w nasz samouczek.

Scenariusz:

Sravan prowadzi firmę i wykorzystuje Salesforce Org do śledzenia pensji swoich pracowników. Jest tylko 200 pracowników. Zapisał wszystkie ich dane w obiekcie „konta” w bazie danych Salesforce i utworzył pole niestandardowe, które jest „przypisane” w typu wyboru i aktualizuje je do true za każdym razem, gdy wynagrodzenie jest im przypisane. Po 2 latach jego liczba pracowników wzrosła do 2 lakh. Nie jest w stanie zaktualizować tego pola w jednej transakcji. Poprosił więc dewelopera Salesforce, aby mu z tego pomógł. Następnie deweloper zasugerował wierzchołek partii do aktualizacji 2 lakh rekordów jednocześnie (partia przez partię).

Wierzchołek partii:

Jak już dyskutowaliśmy, wierzchołek wsadowy jest procesem asynchronicznym, w którym każdy proces jest uruchamiany w innym wątku. Przetwarza partię danych według partii i ma 3 kroki podczas wykonywania tej operacji. Domyślnie rozmiar partii wynosi 200, ale możemy wydłużyć do 2000. Minimalny rozmiar to 1.

Faza I:

Jest to faza „start”, w której rekordy są gromadzone ze sprzedaży, które mają być przetwarzane. Możemy wykorzystać zapytanie SOQL do zwrócenia rekordów w tej fazie. Zasadniczo klasa „wsadowa” implementuje „bazę danych.Batchable ”.

Możemy zdefiniować metodę start () za pomocą QueryLocator (powraca do zapytania) z klasy „baza danych”. Bardzo ważne jest przekazanie parametru BatchableContext z klasy „Baza danych”. W ramach tej metody możemy określić SOQL w bazie danych.metoda getQueryLocator () i zwróć ją.

Zobacz następującą strukturę metody:

Etap II:

Jest to faza „Wykonaj”, w której partia rekordów jest zbierana z fazy początkowej, które są zwracane przez zapytanie SOQL. Przetwarza te rekordy i ponownie otrzymuje rekordy z zapytania, dopóki wszystkie rekordy nie zostaną zakończone.

Możemy zdefiniować metodę execute (), zwracając jako pustka (pusta). Bardzo ważne jest przekazanie BatchableContext jako pierwszego parametru z klasy „Baza danych”, która jest podobna do metody start (). Drugim parametrem jest Sobject (obiekt Salesforce Standard/Custom) wewnątrz „listy”.

Zobacz następującą strukturę metody:

Faza III:

Jest to faza „zakończ”, w której operacje pocztowe, takie jak wysyłanie wiadomości e -mail, wyświetlanie wiadomości itp., są zajęte w tej fazie.

Możemy zdefiniować metodę finisz (), powracając jako pustka (pusta). Bardzo ważne jest przekazanie BatchableContext jako pierwszego parametru z klasy „Baza danych”, która jest podobna do metody start ().

Zobacz następującą strukturę metody:

Ogólna struktura:

Konfiguracja środowiska

1. Przejdź do „konsoli programisty” i przejdź do pliku „Wybierz nowy”. Następnie wybierz „klasę apex” (klasa apex jest zapisana z .rozszerzenie APXC).

2. Możesz podać nazwę klasy po kliknięciu „klasy wierzchołkowej”. Następnie kliknij „OK”.

3. Po napisaniu klasy możesz ją wykonać, tworząc jego instancję. Możemy to napisać w „Anonimowym oknie”.

Aplikacja 1: Aktualizacja

Napiszmy „klasę wsadową” w kampanii obiektowej Salesforce Standard, aby zaktualizować „nazwę kampanii” do „Linuxhint Camp1”, jeśli status jest „planowany”.

Global Class Batchexample1 implementuje bazę danych.Batchable
Globalna baza danych.Start queryLocator (baza danych.BatchableContext BC)

// Napisz zapytanie SOQL na obiekcie kampanii
// Aby uzyskać rekordy ze statusem - „Planowane”
return baza danych.getQueryLocator („Wybierz nazwę, status z kampanii, w której status = \ 'planowane \' zamówienie według nazwy ');

Global Void Execute (baza danych.BatchableContext BC, lista Camplist)

// iteruj rekordy kampanii
dla (kampania camp_obj: camplist)
if (camp_obj.Status == 'planowane')
// zaktualizuj nazwę kampanii
camp_obj.Name = 'Linuxhint Camp1';


próbować
// Użyj aktualizacji - DML, aby zaktualizować nazwę kampanii
Zaktualizuj Camplist;
Catch (wyjątek e)
System.debugowanie (e);


Global Void Finish (baza danych.BatchableContext BC)

// Nic tutaj nie potrzebuje

Uruchom klasę, tworząc instancję.

Batchexample1 Firstexample_1 = new Batchexample1 ();
Baza danych.executeBatch (Firstexample_1);

Wyjaśnienie:

  1. Piszemy zapytanie SOQL, aby pobrać rekord w metodzie start () ze statusem „planowanego”.
  2. Korzystając z pętli w metodzie execute (), iterujemy obiekt „kampanii” i określamy warunek „jeśli”, aby sprawdzić, czy status jest „planowany”, czy nie. Jeśli jest planowany, aktualizujemy „nazwę kampanii” do „Linuxhint Camp1”. Używamy „aktualizacji” DML do aktualizacji rekordów w bloku try.

Sprawdzać:

Możemy sprawdzić, czy partia jest przetwarzana bez błędu w ramach „Zadania Apex”. Wyszukaj w „Szybkie znalezienie”.

2. Aby sprawdzić klasę „wsadową”, widzimy, że „przetworzone partie” to 1, a „awarie” to 0.

3. Przejdź do „Zakładki kampanii” i sprawdź, czy „nazwa kampanii” jest aktualizowana, czy nie.

Jest tylko jeden rekord ze statusem „planowanego”. „Nazwa kampanii” jest aktualizowana do „Linuxhint Camp1”.

Aplikacja 2: Usunięcie

Napiszmy „klasę wsadową” na standardowym obiekcie Salesforce, którym jest „kampania”, aby usunąć jeden rekord.

Global Class Batchexample2 implementuje bazę danych.Batchable
Globalna baza danych.Start queryLocator (baza danych.BatchableContext BC)
// SOQL zapytanie, aby zwrócić jeden rekord z obiektu kampanii
return baza danych.GetQueryLocator („Wybierz ID z limitu kampanii 1”);

Global Void Execute (baza danych.BatchableContext BC, lista zakres)
// Usuń DML
Usuń zakres;

Global Void Finish (baza danych.BatchableContext BC)
// nie trzeba tu nic robić.

Uruchom klasę, tworząc instancję.

Batchexample2 przykład_2 = new Batchexample2 ();
Baza danych.executeBatch (przykład_2);

Wyjaśnienie:

  1. Piszemy zapytanie SOQL w metodzie start (), aby pobrać tylko jeden rekord z obiektu „kampanii”.
  2. Używamy „Usuń” DML w metodzie execute () do usuwania tego rekordu. Możesz także zastosować blok próbny wokół DML Usuń.

Sprawdzać:

Możemy sprawdzić usunięte rekordy w ramach „Bin recycle”. Przejdź do „uruchamiającego aplikacji” i sprawdź to.

Możesz zobaczyć taki, który rekord jest usuwany z obiektu „kampanii”.

Aplikacja 3: Wstawienie

Napiszmy „klasę wsadową” na standardowym obiekcie Salesforce, który jest „konto”, aby wstawić jeden rekord.

Global Class Batchexample3 implementuje bazę danych.Batchable
Globalna baza danych.Start queryLocator (baza danych.BatchableContext BC)
// zapytanie SoQL, aby zwrócić tylko jeden rekord z obiektu konta
return baza danych.getQueryLocator („Wybierz identyfikator, nazwa z limitu konta 1 ');

Global Void Execute (baza danych.BatchableContext BC, lista zakres)
// Utwórz listę typu - konto
Lista alist = nowa lista();
// Utwórz obiekt dla konta
Konto nowo = nowy rachunek ();
// Ustaw pole o wartości
nowo.Name = „Linuxhint Record”;
// Dodaj obiekt (instancja) do listy
Alist.Dodaj (od nowa);
// Wstaw DML
wstawić Alist;

Global Void Finish (baza danych.BatchableContext BC)
// nie trzeba tutaj robić

Uruchom klasę, tworząc instancję.

Batchexample3 przykład_3 = new Batchexample3 ();
Baza danych.executeBatch (przykład_3);

Wyjaśnienie:

  1. Piszemy zapytanie SOQL wewnątrz metody start (), aby pobrać tylko jeden rekord z obiektu „konto”.
  2. Tworzymy listę „Typ konta” i tworzymy jedną „instancję konta” w metodzie execute (). Następnie przypisujemy „Nazwa konta” do „Linuxhint Record” i dodajemy instancję do kolekcji listy APEX. Na koniec używamy DML „Wstaw” do wstawienia tego rekordu na koncie.

Sprawdzać:

Przejdź do „Konta” i wyszukaj rekord. Możesz to tam znaleźć.

Kliknij „Nazwa konta”, aby otworzyć rekord ze szczegółami.

Wniosek

Nauczyliśmy się teraz, jak wykonywać masowe operacje DML, takie jak wstawienie, aktualizacja i usuwanie z wierzchołkiem wsadowym w Salesforce. Wierzchołek wsadowy jest procesem asynchronicznym, w którym każdy proces jest uruchamiany w innym wątku. Przetwarza partię danych według partii i ma 3 kroki podczas wykonywania tej operacji. Domyślnie rozmiar partii wynosi 200, ale możemy ją przedłużyć do 2000 roku, w którym minimalny rozmiar wynosi 1. Wykorzystaliśmy standardowe obiekty „kampanii” i „konta” do wykonywania operacji DML.