Inleiding tot Batch Apex + voorbeelden

Deel dit artikel…

Inleiding

voor bedrijfsscenario ‘ s waarbij het platform meer dan 50000 records moet verwerken, komt Batch Apex te hulp. Batch Apex vergemakkelijkt asynchrone verwerking van de records in meerdere batches of brokken en is eenvoudig te implementeren voor een ontwikkelaar.

implementatie van Batch Apex

Batch Apex implementeert de Database.batchable interface. De interface heeft Start (), Execute() en Finish () methoden die moeten worden geïmplementeerd in de Batch Apex klasse.

  1. startmethode: startmethode is een verzamelpunt voor de records die moeten worden verwerkt in de uitvoeren methode van de batch apex
  2. uitvoeren methode: de werkelijke verwerking van de records vindt plaats in de uitvoeren methode.
  3. Afwerkmethode: Afwerking methoden kunnen post job processing acties zoals het verzenden van de e-mails of het kan ook worden gebruikt om een andere batch klasse keten.

planning van de Batch Apex

Methode 1: gebruik van OOTB Schedule Apex functionaliteit

stappen:

  1. klik op Setup en zoek naar Apex-klassen in het vak Snel zoeken.
  2. klik op de Plan Apex knop in het bovenste paneel.

3. Vul de informatie in op de agenda Apex record pagina en sla op. De Apex-klasse moet de Scheduler-klasse zijn die de methode executebatch(batch) implementeert.

codefragment voor de Scheduler-Klasse:

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

Methode 2: Batchklasse aanroepen via Plannable Apex:

de Apex-klasse moet worden aangemaakt die de Plannable apex moet implementeren. Het Plannbare apex moet het systeem implementeren.Schedule () methode om de batch apex in de uitvoeringswachtrij te onderzoeken. systeem.Schedule () methode verwacht drie argumenten te weten Taaknaam, cron expressie voor de batch schema en de batch Klasse naam.

sample Scheduleable Apex:

Batch Apex Chaining

met het begin van API versie 29.0 en na, een batch klasse kan worden geketend aan een andere batch klasse. Chaining van batch apex kickstart de uitvoering van de geketende batch klasse zodra de uitvoering van de basis batch klasse is voltooid. Maximaal, slechts 5 Batch banen kunnen worden geketend aan elkaar. Voorbeeld codefragment voor het koppelen van de Apex van de batch wordt hieronder weergegeven:

Apex van de Batch voorbeeld

Use Case: vul de Factureringsstaat in als Californië voor alle rekeningen met land als VS en geen informatie over de Factureringsstaat.

Oplossingsontwerp: De org heeft meer dan 50K records die moeten worden afgeroomd voor de ontbrekende facturering staat informatie dus het schrijven van de Batch Apex is de optimale oplossing. Ook Triggers, Workflows, Process Builders etc. zal een DML operatie nodig om te vuren, zodat deze oplossingen niet passen om te voldoen aan de zakelijke eis.

onthouden

  • tot 5 batch-taken kunnen gelijktijdig in de wachtrij of actief worden geplaatst.
  • het maximum aantal batch Apex methode uitvoeringen per periode van 24 uur is 250.000, of het aantal gebruiker licenties in uw org vermenigvuldigd met 200-afhankelijk van wat groter is.
  • er kunnen maximaal 50 miljoen records worden geretourneerd in het QueryLocator-object. Als er meer dan 50 miljoen records worden geretourneerd, wordt de batchtaak onmiddellijk beëindigd en gemarkeerd als mislukt.
  • als de startmethode van de batchklasse een QueryLocator retourneert, kan de optionele scope parameter van executeBatch een maximale waarde van 2.000 hebben.
  • als de startmethode van de batchklasse een iterabel retourneert, heeft de parameter scope geen bovengrens.
  • de methoden start, Uitvoeren en voltooien kunnen tot 100 callouts per stuk implementeren. Implementeer AllowsCallouts voor het inschakelen van callouts van de batch apex.
  • Als toekomst gedeclareerde methoden kunnen niet worden aangeroepen vanuit een batch Apex-klasse.
  • alle methoden in de klasse moeten worden gedefinieerd als globaal of openbaar.

uw implementatie optimaliseren

  • Batch Apex-taken lopen sneller wanneer de startmethod een QueryLocator-object retourneert dat geen gerelateerde records bevat via een subquery. Het vermijden van relatie subqueries in een QueryLocator maakt batch banen te draaien met behulp van een snellere, chunked implementatie.
  • om een snelle uitvoering van batch-taken te garanderen, minimaliseert u de callouttijden van de webservice en stemt u queries af die in uw batch Apex-code worden gebruikt.
  • voor elke 10.000 AsyncApexJobrecords maakt Apex een asyncapexjob-record van het type BatchApexWorker voor intern gebruik. Wanneer u alle asyncapexjob-records opvraagt, raden wij u aan records van het type BatchApexWorker te filteren met behulp van het JobType
  • voor een herberekening van delen, raden wij aan dat de methode uitvoeren alle Apex-beheerde delen voor de records in de batch verwijdert en opnieuw aanmaakt. Dit proces zorgt ervoor dat delen accuraat en volledig is.
  • gebruik de testmethoden startTest en stopTest rond de executeBatch-methode om ervoor te zorgen dat deze klaar is voordat u verder gaat met uw test.

You might also like

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.