Samouczek APEX: Zajęcia z programowania Apex i przykłady kodowania
Czym jest Apex w Salesforce?
Wierzchołek to obiektowy i silnie typizowany język programowania opracowany przez Salesforce do tworzenia oprogramowania jako usługi (SaaS) i zarządzania relacjami z klientami (CRM). Apex pomaga deweloperom tworzyć aplikacje SaaS innych firm i dodawać logikę biznesową do zdarzeń systemowych, zapewniając obsługę bazy danych zaplecza i interfejsy klient-serwer.
Apex pomaga programistom dodawać logikę biznesową do zdarzeń systemowych, takich jak kliknięcia przycisków, powiązane aktualizacje rekordów i strony Visualforce. Apex ma podobną składnię do Java. Zarejestruj się w Salesforce aby dowiedzieć się jak działa CRM
Funkcje języka programowania Apex
Oto ważne funkcje Salesforce Apex:
- Apex jest językiem, w którym wielkość liter nie jest rozróżniana.
- Za pomocą Apex można wykonywać operacje DML, takie jak INSERT, UPDATE, UPSERT, DELETE na rekordach sObject.
- Możesz wysyłać zapytania do rekordów sObject za pomocą SOQL (język zapytań obiektów Salesforce) i SOSL (język wyszukiwania obiektów Salesforce) w apex.
- Umożliwia tworzenie test jednostkowy i wykonaj je, aby zweryfikować Pokrycie kodu i wydajność kodu w apexie.
- Apex działa w środowisku wielu dzierżawców i Salesforce zdefiniował pewne ograniczenia zarządcze, które uniemożliwiają użytkownikowi kontrolowanie współdzielonych zasobów. Każdy kod przekraczający limit gubernatora Salesforce kończy się niepowodzeniem i pojawia się błąd.
- Obiekt Salesforce może być używany jako typ danych w wierzchołku. Na przykład -
Account acc = new Account();
,tutaj Konto jest standardowym obiektem Salesforce.
- Apex aktualizuje się automatycznie przy każdej nowej wersji Salesforce.
Kiedy deweloper powinien wybrać Apex
Kod Apex należy pisać tylko wtedy, gdy scenariusz biznesowy jest zbyt złożony i nie da się go wdrożyć za pomocą wbudowanych funkcji udostępnianych przez Salesforce.
Poniżej przedstawiono kilka scenariuszy, w których należy napisać kod Apex:
- Tworzenie usług internetowych integrujących Salesforce z innymi aplikacjami.
- Aby zaimplementować niestandardową weryfikację obiektów.
- Aby wykonać niestandardową logikę Apex podczas wykonywania operacji DML.
- Aby zaimplementować funkcjonalność, której nie można zaimplementować przy użyciu istniejących przepływów pracy i funkcji konstruktorów procesów.
- Ustawić usługi poczty elektronicznej, musisz uwzględnić przetwarzanie zawartości, nagłówków i załączników wiadomości e-mail za pomocą kodu Apex.
Struktura robocza wierzchołka
Teraz w tym samouczku Apex dowiemy się o działającej strukturze Apex:
Poniżej przedstawiono przebieg działań dla kodu wierzchołkowego:
- Działanie programisty: Cały kod Apex napisany przez programistę jest kompilowany w zestaw instrukcji zrozumiałych dla interpretera środowiska wykonawczego Apex, gdy programista zapisze kod na platformie, a instrukcje te zostaną następnie zapisane jako metadane na platformie.
- Działanie użytkownika końcowego: Gdy zdarzenie użytkownika wykonuje kod wierzchołkowy, serwer platformy pobiera skompilowane instrukcje z metadanych i uruchamia je przez interpreter wierzchołkowy przed zwróceniem wyniku.

Składnia wierzchołka
Deklaracja zmiennej
Ponieważ Apex jest językiem silnie typizowanym, konieczne jest zadeklarowanie w nim zmiennej z typem danych.
Na przykład:
contact con = new contact();
tutaj zmienna con jest zadeklarowana z kontaktem jako typem danych.
Zapytanie SOQL
SOQL oznacza język zapytań obiektowych Salesforce. SOQL służy do pobierania rekordów sObject z bazy Salesforce. Na przykład-
Account acc = [select id, name from Account Limit 1];
Powyższe zapytanie pobiera rekord konta z bazy Salesforce.
Instrukcja pętli
Instrukcja Loop służy do iteracji po rekordach na liście. Liczba iteracji jest równa liczbie rekordów na liście. Na przykład:
list<Account>listOfAccounts = [select id, name from account limit 100]; // iteration over the list of accounts for(Account acc : listOfAccounts){ //your logic }
W powyższym fragmencie kodu listOfAccounts jest zmienną typu list.
Oświadczenie dotyczące kontroli przepływu
Instrukcja kontroli przepływu jest korzystna, gdy chcesz wykonać niektóre wiersze kodu w oparciu o pewne warunki.
Na przykład:
list<Account>listOfAccounts = [select id, name from account limit 100]; // execute the logic if the size of the account list is greater than zero if(listOfAccounts.size() >0){ //your logic }
Powyższy fragment kodu odpytuje rekordy kont z bazy danych i sprawdza wielkość listy.
Oświadczenie DML
DML oznacza język manipulacji danymi. Instrukcje DML służą do manipulacji danymi w bazie Salesforce. Na przykład -
Account acc = new Account(Name = ‘ Test Account’); Insert acc; //DML statement to create account record.
Środowisko programistyczne Apex
W tym samouczku programowania Apex dowiemy się o środowisku programistycznym Apex:
Kod Apex można rozwijać zarówno w środowisku testowym, jak i w wersji deweloperskiej Salesforce.
Dobrą praktyką jest tworzenie kodu w środowisku testowym, a następnie wdrażanie go w środowisku produkcyjnym.
Narzędzia do tworzenia kodu Apex: Poniżej znajdują się trzy narzędzia umożliwiające tworzenie kodu Apex we wszystkich edycjach Salesforce.
- Konsola programisty Force.com
- IDE Force.com
- Edytor kodu w interfejsie użytkownika SalesforceYou
Typ danych w Apex
Poniżej przedstawiono typy danych obsługiwane przez Apex:
Prymitywny
Liczba całkowita, Double, Long, Date, Date Time, String, ID i Boolean są uważane za pierwotne typy danych. Wszystkie pierwotne typy danych są przekazywane przez wartość, a nie przez referencję.
Kategorie
W Apex dostępne są trzy rodzaje kolekcji
- Lista: Jest to uporządkowana kolekcja prymitywów, obiektów sObjects, kolekcji lub obiektów Apex oparta na indeksach.
- Zestaw: nieuporządkowany zbiór unikalnych prymitywów.
- Mapa: Jest to zbiór unikalnych, prymitywnych kluczy, które odwzorowują pojedyncze wartości, którymi mogą być prymitywy, obiekty sObjects, kolekcje lub obiekty Apex.
sObiekt
To specjalny typ danych w Salesforce. Jest podobny do stołu w SQL i zawiera pola podobne do kolumn w SQL.
Enums
Enum to abstrakcyjny typ danych, który przechowuje jedną wartość ze skończonego zestawu określonych identyfikatorów
Zajęcia
Obiekty
Odnosi się do dowolnego typu danych obsługiwanego w Apex.
interfejsy
Specyfikator dostępu Apex
Poniżej przedstawiono specyfikatory dostępu obsługiwane przez Apex:
Publiczne
Ten specyfikator dostępu zapewnia dostęp do klasy, metody i zmiennej, która będzie używana przez wierzchołek w przestrzeni nazw.
Sprawy Prywatne
Ten specyfikator dostępu zapewnia dostęp do klasy, metody i zmiennej, która ma być używana lokalnie lub w określonej sekcji kodu. We wszystkich technikach zmienne, które nie mają zdefiniowanego żadnego specyfikatora dostępu, mają domyślny specyfikator dostępu prywatny.
Chroniony
Ten specyfikator dostępu zapewnia dostęp do metody, zmiennej, która będzie używana przez dowolne klasy wewnętrzne w ramach definiowania klasy Apex.
Globalne
Ten specyfikator dostępu zapewnia dostęp do klasy, metody i zmiennej, która będzie używana przez wierzchołek w przestrzeni nazw, jak i poza nią. Dobrą praktyką jest nieużywanie słowa kluczowego global, jeśli nie jest to konieczne.
Słowa kluczowe w Apex
Z udostępnianiem
Jeśli za pomocą tego słowa kluczowego zdefiniowana jest klasa, wymuszane są wszystkie zasady udostępniania obowiązujące dla bieżącego użytkownika, a jeśli tego słowa kluczowego nie ma, kod jest wykonywany w kontekście systemowym.
Na przykład:
public with sharing class MyApexClass{ // sharing rules enforced when code in this class execute }
Bez dzielenia się
Jeśli za pomocą tego słowa kluczowego zdefiniowana jest klasa, wówczas wszystkie reguły udostępniania mające zastosowanie do bieżącego użytkownika nie będą wymuszane.
Na przykład:
public without sharing class MyApexClass{ // sharing rules is not enforced when code in this class execute }
Statyczny
Zmienna Metoda jest zdefiniowana za pomocą słowa kluczowego static, jest inicjalizowana jednokrotnie i powiązana z klasą. Zmienne statyczne, metody można wywoływać bezpośrednio poprzez nazwę klasy, bez tworzenia instancji klasy.
koniec
Stała Method jest zdefiniowana za pomocą słowa kluczowego final i nie może zostać zastąpiona. Na przykład:
public class myCls { static final Integer INT_CONST = 10; }
Jeśli spróbujesz zastąpić wartość tej zmiennej INT_CONST, otrzymasz wyjątek – System.FinalException: Zmienna końcowa została już zainicjowana.
Powrót
To słowo kluczowe zwraca wartość z metody. Na przykład:
public String getName() { return 'Test' ; }
Null
Definiuje stałą zerową i można ją przypisać do zmiennej. Na przykład
Boolean b = null;
Wirtualny
Jeśli klasa jest zdefiniowana za pomocą słowa kluczowego virtual, można ją rozszerzyć i zastąpić.
Abstrakcyjny
Jeśli klasa jest zdefiniowana za pomocą słowa kluczowego streszczenie, musi zawierać co najmniej jedną metodę ze słowem kluczowym streszczenie, a metoda ta powinna mieć tylko sygnaturę.
Na przykład
public abstract class MyAbstrtactClass { abstract Integer myAbstractMethod1(); }
Ciąg wierzchołkowy
Łańcuch to zestaw znaków bez ograniczeń. Na przykład:
String name = 'Test';
Istnieje kilka wbudowanych metod dostarczanych przez klasę String w Salesforce. Poniżej przedstawiono kilka często i najczęściej używanych funkcji:
skrócić (maxWidth)
Ta metoda przycina ciąg do określonej długości i zwraca go, jeśli długość podanego ciągu jest większa niż określona długość; w przeciwnym razie zwraca oryginalny ciąg. Jeśli wartość zmiennej maxWidth jest mniejsza niż 4, ta metoda zwraca wyjątek czasu wykonania – System.StringException: Minimalna szerokość skrótu wynosi 4
Na przykład:
String s = 'Hello World'; String s2 = s.abbreviate(8); System.debug('s2'+s2); //Hello...
skapitalizować()
Ta metoda konwertuje pierwszą literę ciągu na wielkość liter tytułu i zwraca ją.
Na przykład:
String s = 'hello; String s2 = s.capitalize(); System.assertEquals('Hello', s2);
zawiera (podciąg)
Ta metoda zwraca wartość true, jeśli ciąg wywołujący metodę zawiera określony podciąg.
String name1 = 'test1'; String name2 = 'test2'; Boolean flag = name.contains(name2); System.debug('flag::',+flag); //true
równa się (stringOrId)
Ta metoda zwraca wartość true, jeśli przekazany parametr nie ma wartości null i wskazuje tę samą binarną sekwencję znaków, co ciąg wywołujący metodę.
Podczas porównywania wartości identyfikatorów długość identyfikatorów może nie być równa. Na przykład: jeśli ciąg znaków reprezentujący 15 znaków identyfikatora zostanie porównany z obiektem reprezentującym 18 znaków identyfikatora, ta metoda zwróci wartość true. Na przykład:
Id idValue15 = '001D000000Ju1zH'; Id idValue18 = '001D000000Ju1zHIAR'; Boolean result4 = stringValue15.equals(IdValue18); System.debug('result4', +result4); //true
W powyższym przykładzie metoda równa się porównuje 15-znakowy identyfikator obiektu z 18-znakowym identyfikatorem obiektu i jeśli oba te identyfikatory reprezentują tę samą sekwencję binarną, zwróci wartość true.
Użyj tej metody, aby dokonać porównań uwzględniających wielkość liter.
escapeSingleQuotes(stringToEscape)
Ta metoda dodaje znak ucieczki (\) przed pojedynczym cudzysłowem w ciągu i zwraca go. Ta metoda zapobiega wstrzykiwaniu SOQL podczas tworzenia dynamicznego zapytania SOQL. Ta metoda zapewnia, że wszystkie pojedyncze cudzysłowy są traktowane jako otaczające ciągi znaków, a nie polecenia bazy danych.
Na przykład:
String s = 'Hello Tom'; system.debug(s); // Outputs 'Hello Tom' String escapedStr = String.escapeSingleQuotes(s); // Outputs \'Hello Tom\'
usuń (podciąg)
Ta metoda usuwa wszystkie wystąpienia wspomnianego podciągu z String, który wywołuje metodę i zwraca wynikowy ciąg.
Na przykład
String s1 = 'Salesforce and force.com'; String s2 = s1.remove('force'); System.debug( 's2'+ s2);// 'Sales and .com'
podciąg (startIndex)
Ta metoda zwraca podciąg rozpoczynający się od znaku na startIndex i kończący się na końcu ciągu.
Na przykład:
String s1 = 'hamburger'; String s2 = s1.substring(3); System.debug('s2'+s2); //burger
odwrócić()
Ta metoda odwraca wszystkie znaki ciągu i zwraca je. Na przykład:
String s = 'Hello'; String s2 = s.reverse(); System.debug('s2::::'+s2);// olleH // Hello
trim(): Ta metoda usuwa wszystkie początkowe białe spacje z ciągu i zwraca je.
wartość(do konwersji)
Ta metoda zwraca ciąg znaków reprezentujący przekazany obiekt.
Limity gubernatora Apex
Limity Apex Governor to limity wymuszane przez silnik Apex Runtime Engine, aby zapewnić, że żaden kod i procesy Apex Runway nie kontrolują współdzielonych zasobów i nie naruszają przetwarzania dla innych użytkowników w środowisku multitenant. Limity te są weryfikowane dla każdej transakcji Apex. Poniżej przedstawiono limity Governor zdefiniowane przez Salesforce dla każdej transakcji Apex:
Opis | Limit |
---|---|
Zapytania SOQL, które można wykonać w transakcji synchronicznej | 100 |
Zapytania SOQL, które można wykonać w transakcji asynchronicznej | 200 |
Rekordy, które można pobrać za pomocą zapytania SOQL | 50000 |
Rekordy, które można pobrać za pomocą Database.getQueryLocator | 10000 |
Zapytania SOSL, które można wykonać w transakcji wierzchołkowej | 20 |
Rekordy, które można pobrać za pomocą zapytania SOSL | 2000 |
Instrukcje DML, które można wykonać w transakcji wierzchołkowej | 150 |
Rekordy, które można przetworzyć w wyniku instrukcji DML, Approval.process lub Database.emptyRecycleBin | 10000 |
Objaśnienia, które można wykonać w transakcji wierzchołkowej. | 100 |
Skumulowany limit czasu dla wszystkich objaśnień wykonywanych w transakcji wierzchołkowej | 120 sekund |
Limit zadań wierzchołkowych, które można dodać do kolejki za pomocą System.enqueueJob | 50 |
Limit czasu realizacji każdej transakcji Apex | 10 minut |
Ograniczenie znaków, których można użyć w klasie wierzchołkowej i wyzwalaczu | 1 milionów |
Limit czasu procesora dla transakcji synchronicznych | milisekund 10,000 |
Limit czasu procesora dla transakcji asynchronicznych | milisekund 60,000 |
Pobierający i ustawiający wierzchołek
Właściwość Apex jest podobna do zmiennej wierzchołkowej. Getter i setter są niezbędne do właściwości wierzchołka. Gettera i settera można używać do wykonywania kodu przed uzyskaniem dostępu do wartości właściwości lub jej zmianą. Kod w akcesorze get jest wykonywany po odczytaniu wartości właściwości. Kod w akcesorze set jest uruchamiany po zmianie wartości właściwości. Każda właściwość posiadająca metodę dostępu get jest uważana za tylko do odczytu, każda właściwość posiadająca metodę dostępu set jest uważana za zapisaną tylko, każda właściwość posiadająca metodę dostępu get i set jest uważana za funkcję do odczytu i zapisu. Składnia właściwości wierzchołkowej:
public class myApexClass { // Property declaration access_modifierreturn_typeproperty_name { get { //code } set{ //code } }
Tutaj access_modifier jest modyfikatorem dostępu do właściwości. return_type to typ danych właściwości. nazwa_właściwości to nazwa właściwości.
Poniżej znajduje się przykład właściwości wierzchołkowej posiadającej metody dostępu get i set.
public class myApex{ public String name{ get{ return name;} set{ name = 'Test';} } }
W tym przypadku nazwą właściwości jest name i jest to właściwość publiczna, która zwraca ciąg znaków dataType.
Nie jest obowiązkowe posiadanie kodu w bloku get i set. Bloki te można pozostawić puste, aby zdefiniować właściwość automatyczną. Na przykład:
public double MyReadWriteProp{ get; set; }
Akcesor Get i Set można również zdefiniować za pomocą modyfikatora dostępu. Jeśli metoda dostępu jest zdefiniowana za pomocą modyfikatora, zastępuje ona modyfikator dostępu dla właściwości. Na przykład:
public String name{private get; set;}// name is private for read and public to write.
Klasa Apex
Klasa wierzchołkowa to plan lub szablon, na podstawie którego tworzone są obiekty. Obiekt jest instancją klasy.
Istnieją trzy sposoby tworzenia klas wierzchołkowych w Salesforce:
Konsola programisty
IDE Force.com
Strona ze szczegółami klasy Apex.
W apexie możesz zdefiniować klasę zewnętrzną zwaną także klasą najwyższego poziomu, a także możesz zdefiniować klasy w klasie zewnętrznej zwanej klasami wewnętrznymi.
W deklaracji klasy zewnętrznej obowiązkowe jest użycie modyfikatora dostępu, takiego jak global lub public.
Nie ma potrzeby używania modyfikatora dostępu w deklaracji klas wewnętrznych.
Klasę wierzchołkową definiuje się za pomocą słowa kluczowego class, po którym następuje nazwa klasy.
Słowo kluczowe Extends służy do rozszerzania istniejącej klasy o klasę wierzchołkową, a słowo kluczowe implements służy do implementowania interfejsu przez klasę wierzchołkową.
Salesforce Apex nie obsługuje wielokrotnego dziedziczenia. Klasa wierzchołkowa może rozszerzać tylko jedną istniejącą klasę wierzchołkową, ale może implementować wiele interfejsów.
Klasa wierzchołkowa może zawierać konstruktor zdefiniowany przez użytkownika, a jeśli konstruktor zdefiniowany przez użytkownika nie jest dostępny, używany jest konstruktor domyślny. Kod w konstruktorze jest wykonywany po utworzeniu instancji klasy.
Składnia przykładu klasy Apex:
public class myApexClass{ // variable declaration //constructor public myApexClass{ } //methods declaration }
Słowo kluczowe new służy do tworzenia instancji klasy wierzchołkowej. Poniżej znajduje się składnia tworzenia instancji klasy wierzchołkowej.
myApexClass obj = new myApexClass();
Wyzwalacz wierzchołkowy
Wyzwalacze Apex umożliwiają uruchomienie niestandardowego Apex przed i po wykonaniu operacji DML.
Apex obsługuje dwa typy wyzwalaczy:
Przed wyzwalaczami: Te wyzwalacze służą do sprawdzania poprawności i aktualizacji wartości pola przed zapisaniem rekordu w bazie danych.
Wyzwalacze po: Te wyzwalacze umożliwiają dostęp do pól (identyfikator rekordu, pole LastModifiedDate) ustawionych przez system po zatwierdzeniu rekordu do bazy danych. Wartości tych pól można wykorzystać do modyfikowania innych rekordów. Rekordy uruchamiane po wyzwalaczach są tylko do odczytu.
Najlepszą praktyką jest pisanie obszernych wyzwalaczy. Nieporęczny wyzwalacz może przetwarzać pojedynczy rekord, a także wiele rekordów jednocześnie.
Składnia wyzwalacza wierzchołkowego:
trigger TriggerName on ObjectName (trigger_events) { //Code_block }
Tutaj TriggerName to nazwa wyzwalacza, ObjectName to nazwa obiektu, na którym ma zostać zapisany wyzwalacz, wyzwalacz_events to lista zdarzeń oddzielonych przecinkami.
Poniżej przedstawiono zdarzenia obsługiwane przez wyzwalacze Apex: przed wstawieniem, przed aktualizacją, przed usunięciem, po wstawieniu, po aktualizacji, po usunięciu, po cofnięciu usunięcia.
W aktywatorze Apex nie można używać statycznych słów kluczowych. Wszystkie słowa kluczowe mające zastosowanie do klas wewnętrznych mogą być użyte w wyzwalaczu Apex.
Każdy wyzwalacz definiuje zmienną niejawną, która zwraca kontekst wykonania. Zmienne te są zdefiniowane w systemie. Klasa wyzwalacza. Zmienne te nazywane są zmiennymi kontekstowymi. Poniższy zrzut ekranu pokazuje zmienną kontekstową obsługiwaną przez wyzwalacz wierzchołkowy.
Poniżej przedstawiono rozważania dotyczące zmiennej kontekstowej w wyzwalaczu wierzchołkowym:
- Nie używaj trigger.new i trigger.old w operacjach DML.
- Trigger.new nie może zostać usunięty.
- Trigger.new jest tylko do odczytu.
- Trigger.new może zostać użyty do zmiany wartości pól tego samego obiektu tylko przed wyzwalaczem.
Poniżej zrzuty ekranu przedstawiają rozważania dotyczące konkretnych działań w różnych zdarzeniach wyzwalających.
Klasa wsadowa w Apex
Klasa Batch w Salesforce jest używana do przetwarzania dużej liczby rekordów, które przekroczyłyby limity Apex Governor, gdyby były przetwarzane normalnie. Klasa Batch wykonuje kod asynchronicznie.
Oto zalety klasy wsadowej:
- Klasa wsadowa przetwarza dane w kawałkach i jeśli fragment nie zostanie pomyślnie przetworzony, wszystkie pomyślnie przetworzone fragmenty nie zostaną wycofane.
- Każda porcja danych w klasie wsadowej przetwarzana przy użyciu nowego zestawu limitów zarządcy, które zapewniają wykonanie kodu w ramach limitów wykonawczych zarządcy.
- Baza danych. Interfejs wsadowy musi być zaimplementowany przez klasę wierzchołkową, aby mógł być używany jako klasa wsadowa. Zapewnia trzy metody, które muszą zostać zaimplementowane przez klasę wsadową.
Poniżej przedstawiono trzy metody udostępniane przez interfejs Database. Batchable:
1.start()
Ta metoda generuje zakres rekordów lub obiektów, które mają zostać przetworzone przez metodę interfejsu execute. Podczas wykonywania partii jest wywoływana tylko raz. Ta metoda zwraca obiekt Database.QueryLocator lub Iterable. Liczba rekordów pobranych przez zapytanie SQL przy użyciu obiektu Database.QueryLocator wynosi 50 milionów rekordów, ale przy użyciu obiektu iterowalnego całkowita liczba rekordów, które mogą zostać pobrane przez zapytanie SQL, wynosi tylko 50000. Iterable służy do generowania złożonego zakresu dla klasy partii.
Składnia metody startowej:
global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) {}
2.wykonaj()
Ta metoda jest używana do przetwarzania każdego fragmentu danych. Dla każdego fragmentu rekordów wywoływana jest metoda wykonania. Domyślny rozmiar partii do wykonania to 200 rekordów. Metoda Execute przyjmuje dwa argumenty:
Odwołanie do obiektu Database.BatchableContext,
Lista sObjects, taka jak List lub lista sparametryzowanych typów. Składnia metody wykonania:
global void execute(Database.BatchableContext BC, list<P>){}
3.zakończ()
Metoda finish jest wywoływana raz podczas wykonywania klasy batch. Operacje post-processingu mogą być wykonywane w metodzie finish. Na przykład: wysyłanie e-maila z potwierdzeniem. Ta metoda jest wywoływana, gdy cały batch zostanie przetworzony. Składnia metody Finish:
global void finish(Database.BatchableContext BC){}
Obiekt Database.BatchableContext
Każda metoda Database. Interfejs Batchable zawiera odwołanie do obiektu Database.BatchableContext.
Obiekt ten służy do śledzenia postępu zadania wsadowego.
Poniżej przedstawiono metody instancji udostępniane przez BatchableContext:
- getChildJobId(): Ta metoda zwraca identyfikator aktualnie przetwarzanego zadania wsadowego.
- getJobId(): Ta metoda zwraca identyfikator zadania wsadowego.
Poniżej znajduje się składnia klasy wsadowej:
global class MyBatchClass implements Database.Batchable<sObject> { global (Database.QueryLocator | Iterable<sObject>) start(Database.BatchableContextbc) { // collect the batches of records or objects to be passed to execute } global void execute(Database.BatchableContextbc, List<P> records){ // process each batch of records } global void finish(Database.BatchableContextbc){ // execute any post-processing operations } }
Metoda Database.executeBatch
Do wykonania klasy wsadowej używana jest metoda Database.executeBatch.
Ta metoda przyjmuje dwa parametry: Instancję klasy wsadowej do przetworzenia, Parametr Opcje określający rozmiar wsadu, jeśli nie został określony, przyjmuje domyślny rozmiar 200.
Składnia Database.executeBatch:
Database.executeBatch(myBatchObject,scope)
Wykonywanie nazwy klasy wsadowej MyBatchClass:
MyBatchClassmyBatchObject = new MyBatchClass(); Id batchId = Database.executeBatch(myBatchObject,100);
Baza danych.stanowa
Klasa wsadowa jest domyślnie bezstanowa. Za każdym razem, gdy wywoływana jest metoda wykonywania, odbierana jest nowa kopia obiektu, inicjowane są wszystkie zmienne klasy.
Database.stateful został zaimplementowany, aby uczynić klasę wsadową stanową.
Jeśli Twoja klasa wsadowa zaimplementowała Baza danych interfejs stanowy, wszystkie zmienne instancji zachowują swoje wartości, ale zmienne statyczne są resetowane pomiędzy transakcjami.
Podsumowanie
- Apex to silnie typizowany, obiektowy system język programowania który kompiluje się i działa na platformie force.com
- Język programowania Apex nie uwzględnia wielkości liter
- Dwa typy działań w Apex to 1) akcja programisty 2) akcja użytkownika końcowego
- Apex pomaga tworzyć usługi internetowe integrujące Salesforce z innymi aplikacjami.
- Typy danych obsługiwane przez apex to: 1).Prymitywny 2) Kolekcje 3) sObject, Enums, 4) Klasy, 5) Obiekty i interfejsy
- Usługi Apex obejmują publiczne, prywatne, chronione i globalne wsparcie
- Słowa kluczowe używane w Apex to: 1) Z udostępnianiem, 2) Bez udostępniania, 3) Statyczny, 4) Końcowy 5) Powrót, 6) Null, 7) Wirtualny, 8) Streszczenie
- Łańcuch to zestaw znaków bez ograniczeń
- Limity gubernatora Apex to limity narzucane przez silnik wykonawczy Apex w celu zapewnienia, że dowolny kod i procesy wierzchołka drogi startowej
- Gettera i settera można używać do wykonywania kodu przed uzyskaniem dostępu do wartości właściwości lub jej zmianą
- Istnieją trzy sposoby tworzenia klas Apex w Salesforce: 1) Konsola programisty 2) IDE Force.com i 3) Strona ze szczegółami klasy Apex.
- Wyzwalacze Apex umożliwiają uruchomienie niestandardowego Apex przed i po wykonaniu operacji DML.
- Klasa wsadowa w Salesforce służy do przetwarzania dużej liczby rekordów, które w przypadku normalnego przetwarzania przekroczyłyby limity regulatora wierzchołkowego.