Przyszła metoda vs. Możliwość kolejkowania Apex w Salesforce
Opublikowany: 2023-11-20W dynamicznym świecie rozwoju Salesforce zrozumienie najlepszych narzędzi i metod wydajnego i skutecznego kodowania jest kluczowe. W tym artykule omówiono dwie kluczowe koncepcje: metodę przyszłości i wierzchołek z możliwością kolejkowania. Obie są zaawansowanymi technikami używanymi w Salesforce do obsługi operacji asynchronicznych, ale mają różne funkcje i przypadki użycia.
Przyjrzymy się niuansom Future Method i Queueable Apex, porównując ich funkcjonalności, zalety i kiedy używać każdego z nich w projektach Salesforce. Niezależnie od tego, czy jesteś doświadczonym programistą, czy nowicjuszem w Salesforce, to porównanie dostarczy cennych informacji, które pomogą Ci podejmować świadome decyzje dotyczące optymalizacji kodu.
Bądź na bieżąco, gdy będziemy odkrywać zawiłości i odkrywać potencjał Future Method i Queueable Apex w Salesforce!
Spis treści
Dlaczego metoda przyszłości?
Jeśli chcemy uruchomić procesy w osobnym wątku, w późniejszym czasie i chcemy wykonać kod asynchronicznie, musimy skorzystać z przyszłych metod.
Kiedy jest używany?
Są one używane do długotrwałych operacji, takich jak wywołania zewnętrznych usług internetowych lub wszelkich operacji, które chcesz uruchomić we własnym wątku
Dlaczego kolejkowy Apex?
Like the future służy również do wykonywania kodu asynchronicznego i umożliwia dodawanie zadań w kolejce oraz usprawnianie sposobu uruchamiania kodu asynchronicznego w porównaniu do metody future.
Kiedy jest używany?
W przypadku procesów Apex, które działają przez długi czas, takich jak obszerne operacje na bazach danych lub wywołania zewnętrznych usług internetowych, można je uruchamiać asynchronicznie, implementując interfejs Queueable
Przeczytaj także: Jak wdrożyć jednokrotne logowanie Salesforce przy użyciu protokołu OAuth?
Różnice między przyszłym a wierzchołkiem kolejkowym:
Metoda przyszłości | Możliwość kolejkowania Apex |
---|---|
1. Future nigdy nie będzie używany do pracy nad SObjectami lub typami obiektów. 2. Stosując metodę przyszłości nie możemy monitorować zadań, które są w toku. 3. Metody future nie można wywołać wewnątrz klasy future ani wsadowej. 4. Przyszła metoda nigdy nie będzie kolejkowa. | 1. Zadania kolejkowane mogą zawierać zmienną składową jako obiekty SObjects lub niestandardowe typy wierzchołków. 2. Podczas korzystania z zadań kolejkowych utworzy się AsyncApexJob, który możemy monitorować jak zadania zaplanowane. 3. Kolejkowy Apex można wywołać z klasy future i wsadowej. 4. Korzystanie z kolejkowego Apex spowoduje połączenie zadań, które można kolejkować, a w wersji Developer Edition jest to tylko 5 zadań. |
Możliwość kolejkowania Apex
Klasa Queueable to klasa utworzona poprzez implementację predefiniowanego interfejsu „Queueable”. Interfejs ten umożliwia sposób uruchamiania zadań asynchronicznych lub kodu zadania w porównaniu z przyszłą metodą. Umożliwi to monitorowanie zadań znajdujących się w kolejce (kolejka ta jest tworzona przez interfejs Queueable, dzięki czemu zadania mogą być uruchamiane asynchronicznie).
Składnia:
klasa publiczna <nazwa klasy kolejkowanej> implementuje możliwość kolejkowania { //To jedyna metoda zawarta w interfejsie kolejkowym i wymagana do dziedziczenia tej metody w klasie kolejkowej. publiczne wykonanie void (kontekst QueueableContext) { //Kod, który należy wykonać } }
Każdy proces Apex, którego wykonanie zajmuje dużo czasu, np. rozległe operacje na bazach danych lub wywołania zewnętrznych usług internetowych, można uruchomić asynchronicznie, implementując interfejs Queueable i dodając zadanie do kolejki zadań Apex.

Twoje asynchroniczne zadanie Apex działa w tle we własnym wątku i nie opóźnia wykonywania głównej logiki Apex. Każde zadanie w kolejce jest uruchamiane, gdy zasoby systemowe staną się dostępne. Zaletą korzystania z metod interfejsu jest to, że niektóre limity regulatora są wyższe niż w przypadku synchronicznego Apex, np. limity rozmiaru sterty.
Przyszła metoda wierzchołkowa
Future apex służy do uruchamiania procesów w osobnym wątku, później, gdy zasoby systemowe staną się dostępne. Aby skorzystać z future wierzchołka, nie musimy tworzyć żadnej klasy, wystarczy użyć adnotacji „@future”, aby zidentyfikować metody działające asynchronicznie i zaznaczyć, że metoda opisana poniżej jest metodą przyszłą.
Podczas korzystania z przetwarzania synchronicznego wszystkie wywołania metod są wykonywane z tego samego wątku, który wykonuje kod Apex i nie można wykonać żadnego dodatkowego przetwarzania przed zakończeniem procesu. Możesz użyć przyszłych metod do dowolnej operacji, którą chcesz uruchomić asynchronicznie we własnym wątku. Zapewnia to korzyści polegające na tym, że nie blokuje użytkownikowi wykonywania innych operacji i zapewnia wyższe limity zarządcze i wykonawcze dla procesu.
Składnia:
klasa globalna <NazwaKlasy> { //Poniżej znajduje się adnotacja future określająca, że dana metoda jest metodą future. @przyszły public static void <FutureMethodName>(List<Id> recordIds) { Konta List<Contact> = [Wybierz identyfikator, imię, nazwisko z kontaktu Gdzie identyfikator IN :recordIds]; // przetwarzaj rekordy kontaktów, aby robić niesamowite rzeczy } }
Przeczytaj także: Jak połączyć integrację Pipedrive i Salesforce?
Przyszłe metody są zwykle używane do
Objaśnienia do zewnętrznych usług internetowych. Jeśli wykonujesz wywołania z wyzwalacza lub po wykonaniu operacji DML, musisz użyć metody przyszłej lub kolejkowej. Wywołanie w wyzwalaczu spowodowałoby, że połączenie z bazą danych byłoby otwarte przez cały czas trwania objaśnienia.
Operacje, które chcesz uruchomić we własnym wątku, jeśli pozwala na to czas, takie jak obliczenia wymagające dużej ilości zasobów lub przetwarzanie rekordów
Uwaga: Przyczyny obiektów nie można przekazywać jako argumentów do przyszłej metody, ponieważ obiekt może ulec zmianie pomiędzy momentem wywołania metody a momentem jej faktycznego wykonania. Przyszłe metody będą uruchamiane, gdy zasoby systemowe staną się dostępne. Gdy zostanie wykonana przyszła metoda, może ona mieć starą wartość obiektu, co może spowodować różnego rodzaju złe rzeczy.
Rzeczy do zapamiętania
- Przyszła metoda musi być statyczna
- Typ zwrotu musi być nieważny
- Określone parametry muszą być pierwotnymi typami danych, tablicami pierwotnych typów danych lub kolekcjami pierwotnych typów danych
- Przyszłe metody można wywoływać w taki sam sposób, jak każdą inną metodę. Jednak przyszła metoda nie może wywołać innej przyszłej metody
- Nie więcej niż 50 wywołań metod na wywołanie Apex
- Wywołania asynchroniczne, takie jak @future lub generateBatch, wywoływane w bloku startTest i stopTest, nie wliczają się do limitów liczby zadań w kolejce

Przykład metody Future i klasy kolejkowej

Tutaj otrzymuję wartość 4 walut w dolarze kanadyjskim. Dla GBP, USD, AUD, CAD. I zapisanie wartości w niestandardowej walucie metadanych. W przypadku HTTPREQUEST użyłem tutaj metody Future. A ponieważ aktualizuje wiele rekordów jednocześnie podczas uruchamiania partii, użyłem Queueable Apex, który aktualizuje wiele rekordów jednocześnie.
Niestandardowa aktualizacja niestandardowych metadanych

Klasa kolejkowa

Wywołanie metody Future i wysłanie listy do aktualizacji w klasie Queueable

Emizentech to autentyczna i doświadczona firma konsultingowa Salesforce, a nasi doświadczeni programiści Salesforce mogą zapewnić Ci profesjonalną pomoc przy kolejnym projekcie Salesforce.