Introducere în lot Apex + Exemple

partajați acest articol…

Introducere

pentru scenarii de afaceri care necesită platforma pentru a procesa mai mult de 50000 de înregistrări, lot Apex vine la salvare. Lot Apex facilitează procesarea asincronă a înregistrărilor în mai multe loturi sau bucăți și este simplu de implementat pentru un dezvoltator.

implementarea Batch Apex

Batch Apex implementează baza de date.interfață batchable. Interfața are metode Start (), Execute() și Finish () care ar trebui implementate în clasa Batch Apex.

  1. Startmethod: metoda Start este un punct de colectare pentru înregistrările care urmează să fie procesate în metoda execute a lotului apex
  2. metoda Execute: procesarea efectivă a înregistrărilor are loc în metoda execute.
  3. metoda de finisare: Metodele de finisare pot avea acțiuni de procesare post-job, cum ar fi trimiterea de e-mailuri sau pot fi, de asemenea, utilizate pentru a înlătura o altă clasă de loturi.

programarea lotului Apex

Metoda 1: utilizarea funcționalității OOTB Schedule Apex

pași:

  1. Faceți clic pe Configurare și căutați clase Apex în caseta Căutare rapidă.
  2. Faceți clic pe butonul Program Apex din panoul superior.

3. Completați informațiile de pe pagina de înregistrare a programului Apex și salvați. Clasa apex ar trebui să fie Clasa de planificare care implementează metoda executebatch(lot).

fragment de cod pentru clasa Scheduler:

global class AccBatchScheduleClass implements Schedulable { global void execute(SchedulableContext ctx) { AccBatchApex batch = new AccBatchApex(); database.executebatch(batch); }}

Metoda 2: invocarea clasei Batch prin Apex Schedulable:

ar trebui creată clasa Apex care ar trebui să implementeze Apex Schedulable. Apex Schedulable trebuie să pună în aplicare Sistem.Program () metoda de a pune în aplicare Apex lot în coada de execuție. Sistemul.Program () metoda se așteaptă trei argumente nume de locuri de muncă viz, expresie Cron pentru programul de lot și numele clasei lot.

exemplu Schedulable Apex:

lot Apex înlănțuirea

cu debutul versiunii API 29.0 și după aceea, o clasă de lot poate fi înlănțuită într-o altă clasă de lot. Înlănțuirea lotului apex începe executarea clasei lotului înlănțuit odată ce execuția clasei lotului de bază este terminată. La maxim, doar 5 locuri de muncă lot poate fi legat unul de altul. Exemplu de fragment de cod pentru înlănțuirea vârfului lotului este ilustrat mai jos:

exemplu de vârf al lotului

caz de Utilizare: populați starea de facturare ca California pentru toate conturile cu țara ca SUA și fără informații despre starea de facturare.

Proiectarea Soluției: Org are mai mult de 50K înregistrări care trebuie să fie degresat pentru informațiile de Stat de facturare lipsă, astfel scris Apex lot este soluția optimă. De asemenea, declanșatoare, fluxuri de lucru, constructori de procese etc. va avea nevoie de o operațiune de LMD la foc astfel încât aceste soluții nu se potrivesc pentru a satisface cerința de afaceri.

lucruri de reținut

  • până la 5 locuri de muncă lot pot fi puse în coadă sau activ concomitent.
  • numărul maxim de execuții ale metodei batch Apex pe o perioadă de 24 de ore este de 250.000 sau numărul de licențe de utilizator din organizația dvs. înmulțit cu 200-oricare dintre acestea este mai mare.
  • un maxim de 50 de milioane de înregistrări pot fi returnate în obiectul QueryLocator. Dacă sunt returnate mai mult de 50 de milioane de înregistrări, lucrarea lot este imediat terminată și marcată ca eșuată.
  • dacă startmethod din clasa lot returnează un QueryLocator, parametrul domeniu opțional de executeBatch poate avea o valoare maximă de 2.000.
  • dacă metoda de pornire a clasei batch returnează un iterabil, valoarea parametrului scope nu are limită superioară.
  • metodele start, execute și finish pot implementa până la 100 de explicații fiecare. Punerea în aplicare AllowsCallouts pentru activarea înștiințări de la Apex lot.
  • metodele declarate ca viitoare nu pot fi apelate dintr-o clasă apex de lot.
  • toate metodele din clasă trebuie definite ca globale sau publice.

optimizarea implementării

  • lucrările Batch Apex rulează mai repede când startmethod returnează un obiect QueryLocator care nu include înregistrări asociate printr-o subinterogare. Evitarea subqueries relație într-un QueryLocator permite locuri de muncă lot pentru a rula folosind o implementare mai rapid, chunked.
  • pentru a asigura executarea rapidă a lucrărilor de lot, minimizați timpii de apelare a serviciului Web și interogările de ton utilizate în codul dvs.
  • pentru fiecare 10.000 AsyncApexJobrecords, Apex creează o înregistrare AsyncApexJob de tip BatchApexWorker pentru uz intern. Când interogarea pentru toate înregistrările AsyncApexJob, vă recomandăm să filtrați înregistrările de tip BatchApexWorker folosind JobType
  • pentru o recalculare de partajare, vă recomandăm să execute metoda șterge și apoi re-crea toate Apex managed sharing pentru înregistrările din lot. Acest proces asigură că partajarea este corectă și completă.
  • utilizați metodele de testare startTest și stopTest în jurul metodei executeBatch pentru a vă asigura că se termină înainte de a continua testul.

You might also like

Lasă un răspuns

Adresa ta de email nu va fi publicată.