Bevezetés
olyan üzleti forgatókönyvek esetén, amelyek megkövetelik, hogy a platform több mint 50000 rekordot dolgozzon fel, a Batch Apex mentésre kerül. A Batch Apex megkönnyíti a rekordok aszinkron feldolgozását több tételben vagy darabban, és egyszerűen megvalósítható egy fejlesztő számára.
végrehajtási Batch Apex
Batch Apex végrehajtja az adatbázist.batchable interfész. Az interfésznek Start (), Execute() és Finish () metódusai vannak, amelyeket a Batch Apex osztályban kell végrehajtani.
- Startmethod: a Start metódus a kötegelt apex
- Execute metódus execute metódusában feldolgozandó rekordok gyűjtőhelye: a rekordok tényleges feldolgozása az execute metódusban történik.
- befejezési módszer: A befejezési módszerek lehetnek munka utáni feldolgozási műveletek, például az e-mailek küldése, vagy felhasználhatók egy másik kötegelt osztály láncolására is.
a kötegelt Apex ütemezése
1. módszer: az OOTB Schedule Apex funkció használata
lépések:
- kattintson a Beállítás gombra, és keresse meg az Apex osztályokat a Gyorskeresés mezőben.
- kattintson a csúcs ütemezése gombra a felső panelen.
3. Töltse ki az Apex rekord ütemezése oldalon található információkat, és mentse el. Az apex osztálynak az Executebatch(batch) metódust végrehajtó ütemező osztálynak kell lennie.
kódrészlet az ütemező osztályhoz:
global class AccBatchScheduleClass implements Schedulable { global void execute(SchedulableContext ctx) { AccBatchApex batch = new AccBatchApex(); database.executebatch(batch); }}
2. módszer: kötegelt osztály meghívása ütemezhető Apex segítségével:
létre kell hozni az Apex osztályt, amelynek végre kell hajtania az ütemezhető apexet. Az ütemezhető apexnek végre kell hajtania a rendszert.Schedule() metódus a kötegcsúcs lekérdezéséhez a végrehajtási sorban. A Rendszer.A Schedule() metódus három argumentumot vár el: a Feladat neve, a kötegelt ütemezés Cron kifejezése és a kötegelt osztály neve.
Minta ütemezhető Apex:
kötegelt Apex láncolás
az API 29-es verziójának megjelenésével.0 és utána egy kötegelt osztály láncolható egy másik kötegelt osztályhoz. A kötegelt apex láncolása elindítja a láncolt kötegosztály végrehajtását, miután az alap kötegosztály végrehajtása befejeződött. Legfeljebb csak 5 kötegelt munkát lehet egymáshoz láncolni. A kötegcsúcs láncolására szolgáló mintakódrészlet az alábbiakban látható:
Kötegcsúcs példa
használati eset: töltse fel a számlázási állapotot Kaliforniaként minden olyan fiók esetében, ahol az ország USA, és nincs számlázási állapot információ.
Megoldástervezés: Az org-nak több mint 50 ezer rekordja van, amelyeket le kell fedni a hiányzó számlázási Állapotinformációkhoz, így a kötegelt csúcs írása az optimális megoldás. Is kiváltja, munkafolyamatok, folyamat építők stb. szüksége lesz egy DML művelet tűz, így ezek a megoldások nem felelnek meg az üzleti követelménynek.
emlékezetes dolgok
- legfeljebb 5 kötegelt feladat lehet sorban vagy aktív egyidejűleg.
- a kötegelt Apex metódus-végrehajtások maximális száma 24 órás időszakonként 250 000, vagy az org felhasználói licenceinek száma 200—zal szorozva-attól függően, hogy melyik a nagyobb.
- legfeljebb 50 millió rekord adható vissza a QueryLocator objektumban. Ha több mint 50 millió rekordot ad vissza, a kötegelt feladat azonnal megszűnik, és sikertelen.
- ha a kötegelt osztály startmethod értéke QueryLocator, akkor az executebatch opcionális scope paraméterének maximális értéke 2000 lehet.
- ha a kötegelt osztály indítási metódusa iterálható értéket ad vissza, a scope paraméter értéke nem rendelkezik felső korláttal.
- a start, execute és finish metódusok egyenként akár 100 feliratot is végrehajthatnak. Végre AllowsCallouts engedélyezéséhez feliratokat a Batch apex.
- a future-ként deklarált módszerek nem hívhatók meg kötegelt Apex osztályból.
- az osztály összes metódusát globálisnak vagy nyilvánosnak kell meghatározni.
a megvalósítás optimalizálása
- a kötegelt Apex feladatok gyorsabban futnak, ha a startmethod olyan QueryLocator objektumot ad vissza, amely nem tartalmaz kapcsolódó rekordokat egy alkérdésen keresztül. A querylocator kapcsolati alkereséseinek elkerülése lehetővé teszi a kötegelt feladatok gyorsabb futtatását, darabolt megvalósítás.
- a kötegelt feladatok gyors végrehajtásának biztosítása érdekében minimalizálja a webszolgáltatás felhívási idejét és a kötegelt Apex kódban használt lekérdezések hangolását.
- minden 10 000 AsyncApexJobrecords, Apex létrehoz egy Asyncapexjob rekord típusú BatchApexWorker belső használatra. Az összes AsyncApexJob rekord lekérdezésekor azt javasoljuk, hogy szűrje ki a BatchApexWorker típusú rekordokat a JobType
- használatával megosztási újraszámításhoz, javasoljuk, hogy az execute metódus törölje, majd hozza létre újra az összes Apex felügyelt megosztást a kötegben lévő rekordokhoz. Ez a folyamat biztosítja, hogy a megosztás pontos és teljes legyen.
- használja a Starttest és stopTest Tesztmódszereket az executeBatch metódus körül, hogy megbizonyosodjon arról, hogy befejeződik-e a teszt folytatása előtt.