Úvod do dávkového Apex + příklady

Sdílet tento článek…

Úvod

Pro obchodní scénáře, které vyžadují platformu pro proces více než 50.000 záznamy, Dávkové Apex přichází na pomoc. Dávkové Apex usnadňuje asynchronní zpracování záznamů v několika dávkách nebo kousky a je jednoduché na implementaci pro vývojáře.

implementace dávkového Apex

dávkový Apex implementuje databázi.batchable rozhraní. Rozhraní má metody Start (), Execute () a Finish (), které by měly být implementovány ve třídě Batch Apex.

  1. Startmethod: Start metoda je sběrné místo pro záznamy, které mají být zpracovány do metody execute batch apex
  2. Execute: Skutečné zpracování záznamů probíhá v execute.
  3. metoda dokončení: Finish metody mohou mít po zpracování úlohy akce, jako je odesílání e-mailů, nebo to může být také použit k řetězce další dávkové třídy.

Plánování Dávkové Apex

Metoda 1: Použití OOTB Plán Apex funkce

Kroky:

  1. Klikněte na Nastavení a hledat pro Apex Třídy v rychle najít krabici.
  2. klikněte na tlačítko Plán vrcholu v horním panelu.

3. Vyplňte informace na stránce záznamu plánu Apex a uložte. Třída apex by měla být třída plánovače implementující metodu executebatch (batch).

Fragment Kódu pro Plánovač Třídy:

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

Metoda 2: Vytvořit Dávkové Třídy prostřednictvím Plánovacích Apex:

Apex třídy by měly být vytvořeny, které by měly realizovat Plánovacích apex. Plánovatelný apex musí implementovat systém.Plán () metoda pro dotazování dávkového vrcholu ve frontě provádění. systém.Plán () metoda očekává tři argumenty viz název úlohy, výraz Cron pro dávkový plán a název třídy šarže.

Sample Schedulable Apex:

Batch Apex Chaining

s nástupem API verze 29.0 a poté může být třída šarží připoutána k jiné třídě šarží. Chaining of batch apex kickstarts provedení třídy chained batch jakmile je provedení třídy base batch dokončeno. Maximálně lze k sobě připojit pouze 5 dávkových úloh. Ukázka kódu pro řetězení šarže Apex je znázorněno níže:

Batch Apex Příklad

Případ Použití: Vyplnění Vyúčtování Státě, jako je Kalifornie pro všechny Účty se Země jako USA a ne Fakturace, informace o Stavu.

Návrh Řešení: Org má více než 50k záznamů, které je třeba odstředit pro chybějící informace o stavu fakturace, takže psaní dávkového vrcholu je optimálním řešením. Také spouští, pracovní postupy, stavitelé procesů atd. bude potřebovat operaci DML, aby vystřelila, takže tato řešení neodpovídají požadavkům podniku.

věci k zapamatování

  • až 5 dávkové úlohy mohou být zařazeny do fronty nebo aktivní souběžně.
  • maximální počet provedení dávkové metody Apex za 24hodinové období je 250 000 nebo počet uživatelských licencí ve vašem org vynásobený 200-podle toho, co je větší—
  • v objektu QueryLocator lze vrátit maximálně 50 milionů záznamů. Pokud je vráceno více než 50 milionů záznamů, je dávková úloha okamžitě ukončena a označena jako neúspěšná.
  • pokud startmethod třídy batch vrátí QueryLocator, volitelný parametr scope executeBatch může mít maximální hodnotu 2 000.
  • pokud metoda start třídy batch vrátí iterable, hodnota parametru scope nemá horní limit.
  • metody start, execute a finish mohou implementovat až 100 popisků. Implementovat AllowsCallouts pro povolení popisky z dávkového apex.
  • metody deklarované jako budoucí nelze volat z dávkové třídy Apex.
  • všechny metody ve třídě musí být definovány jako globální nebo veřejné.

Optimalizace Provádění

  • Apex Batch jobs běžet rychleji, když startmethod vrátí QueryLocator objekt, který nezahrnuje související záznamy pomocí poddotaz. Vyhýbání se poddotazům vztahů v Querylocatoru umožňuje spouštění dávkových úloh pomocí rychlejší implementace s kousky.
  • Chcete-li zajistit rychlé provádění dávkových úloh, minimalizujte časy popisu webových služeb a vyladěte dotazy použité v kódu dávkového Apex.
  • Pro každý 10,000 AsyncApexJobrecords, Apex vytváří AsyncApexJob záznam typu BatchApexWorker pro vnitřní použití. Při dotazování pro všechny AsyncApexJob záznamy, doporučujeme odfiltrovat záznamy typu BatchApexWorker pomocí JobType
  • Pro sdílení přepočet, doporučujeme metoda execute odstranit a pak znovu vytvořit všechny Apex podařilo sdílení záznamů v dávce. Tento proces zajišťuje, že sdílení je přesné a úplné.
  • Použití Zkušební metody startTest a stopTest kolem executeBatch metody, aby zajistily, že to skončí před pokračováním testu.

You might also like

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.