Praktik Terbaik Metode Batch Start: DML / Scheduling?
Selama beberapa desain solusi, tim saya menemukan beberapa kerumitan seputar penjadwalan batch. Untuk mempertahankan kinerja, kami telah ditanyai apakah boleh menjadwalkan batch tindak lanjut dalam startmetode daripada finishmetode. Tanggapan awal kami adalah bahwa melakukan hal itu akan melanggar praktik terbaik, tetapi tidak yakin bagaimana mengartikulasikan dengan jelas potensi risiko yang lebih besar daripada manfaatnya. Apakah mengubah status database dapat diterima untuk metode yang mengembalikan pencari lokasi kueri? Apa risiko konkret yang terlibat, selain dari potensi tabrakan pekerjaan jika Job1 masih berjalan saat Job2 dimulai?
Jawaban
Perbedaannya adalah bahwa metode start "chaining" tidak akan berfungsi. Database.executeBatch dari metode awal menghasilkan:
| FATAL_ERROR | System.AsyncException: Database.executeBatch tidak bisa dipanggil dari awal batch, eksekusi batch, atau metode masa depan.
Ini bahkan tidak bertentangan dengan praktik terbaik, ini secara harfiah adalah batasan desain. Gunakan metode Schedulable memanggil dua metode database.executeBatch sebagai gantinya.
Kadang-kadang ada baiknya memeriksa Gubernur dan Batasan Eksekusi dan dokumentasi lainnya bahkan sebelum memikirkan solusi.