Inledning
för affärsscenarier som kräver plattformen för att bearbeta mer än 50000 poster, Batch Apex kommer till undsättning. Batch Apex underlättar asynkron bearbetning av posterna i flera satser eller bitar och är enkelt att implementera för en utvecklare.
implementera Batch Apex
Batch Apex implementerar databasen.batchable gränssnitt. Gränssnittet har Start (), Execute() och Finish () metoder som ska implementeras i Batch Apex-klassen.
- Startmetod: Startmetod är en samlingspunkt för de poster som ska behandlas i exekveringsmetoden för batchens apex
- exekveringsmetod: den faktiska behandlingen av posterna sker i exekveringsmetoden.
- avsluta metod: Avsluta metoder kan ha efter jobbet bearbetning åtgärder som att skicka e-post eller det kan också användas för att kedja en annan sats klass.
schemalägga Batch Apex
Metod 1: Använda OOTB schema Apex funktionalitet
steg:
- klicka på Setup och Sök efter Apex-klasser i snabbsökningsrutan.
- klicka på knappen schema Apex längst upp.
3. Fyll i informationen på sidan Schedule Apex record och spara. Apex-klassen ska vara Scheduler-klassen som implementerar metoden executebatch (batch).
kodavsnitt för Schemaläggningsklassen:
global class AccBatchScheduleClass implements Schedulable { global void execute(SchedulableContext ctx) { AccBatchApex batch = new AccBatchApex(); database.executebatch(batch); }}
Metod 2: anropa Batchklass via Schemaläggbar Apex:
Apex-klassen ska skapas som ska implementera den Schemaläggbara apex. Den Schemaläggbara apex måste implementera systemet.Schedule () metod för att köa batch apex i exekveringskön. systemet.Schema () metod förväntar tre argument nämligen Jobbnamn, Cron uttryck för batchschemat och batch klassnamn.
prov schemaläggnings Apex:
Batch Apex kedja
med uppkomsten av API version 29.0 och efter kan en batchklass kedjas till en annan batchklass. Kedjning av batch apex kickstartar utförandet av den kedjade batchklassen när utförandet av basbatchklassen är klar. Maximalt kan endast 5 batchjobb vara kedjade till varandra. Exempel på kodavsnitt för att kedja batchens Apex illustreras nedan:
Batch Apex exempel
användningsfall: fyll i Faktureringsstaten som Kalifornien för alla konton med land som USA och ingen faktureringsinformation.
Lösningsdesign: Organisationen har mer än 50k-poster som måste skummas för den saknade faktureringsinformationen, så att skriva Batch-spetsen är den optimala lösningen. Även Triggers, arbetsflöden, Processbyggare etc. kommer att behöva en DML-operation för att avfyra så att dessa lösningar inte passar för att uppfylla affärskravet.
saker att komma ihåg
- upp till 5 batchjobb kan köas eller vara aktiva samtidigt.
- det maximala antalet batch Apex-metodkörningar per 24—timmarsperiod är 250 000, eller antalet användarlicenser i din organisation multiplicerat med 200-beroende på vilket som är störst.
- högst 50 miljoner poster kan returneras i QueryLocator-objektet. Om mer än 50 miljoner poster returneras avslutas batchjobbet omedelbart och markeras som misslyckat.
- om startmetoden för batchklassen returnerar en QueryLocator kan parametern för valfritt omfång för executeBatch ha ett maximalt värde på 2 000.
- om startmetoden för batchklassen returnerar en iterabel har parametervärdet omfattning ingen övre gräns.
- start -, Kör-och slutmetoderna kan implementera upp till 100 bildtexter vardera. Implementera AllowsCallouts för att aktivera bildtexter från Batch apex.
- metoder som deklareras som future kan inte anropas från en batch Apex-klass.
- alla metoder i klassen måste definieras som globala eller offentliga.
optimera din implementering
- Batch Apex-jobb körs snabbare när startmetoden returnerar ett QueryLocator-objekt som inte innehåller relaterade poster via en underfråga. Att undvika relationsunderfrågor i en QueryLocator gör att batchjobb kan köras med en snabbare, chunked implementering.
- för att säkerställa snabb körning av batch jobb, minimera webbtjänst bildtext gånger och ställa frågor som används i batch Apex kod.
- för varje 10 000 AsyncApexJobrecords skapar Apex en asyncapexjob-post av typen BatchApexWorker för internt bruk. När du frågar efter alla asyncapexjob-poster rekommenderar vi att du filtrerar bort poster av typen BatchApexWorker med hjälp av JobType
- för en omräkning av delning rekommenderar vi att exekveringsmetoden tar bort och sedan återskapar All Apex-hanterad delning för posterna i satsen. Denna process säkerställer att delningen är korrekt och fullständig.
- använd testmetoderna startTest och stopTest runt executeBatch-metoden för att säkerställa att den är klar innan du fortsätter testet.