top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
Apex
でのシンプルな定期実行のサンプル(数分おき)を軽く書いてメモしておきます。
global class MyScheduler implements Schedulable {
global void execute(SchedulableContext sc) {
MyBatch bat = new MyBatch();
Database.executeBatch(bat);
removeCurrentSchedule(sc);
doNextSchedule();
}
void doNextSchedule() {
Datetime nextTime = Datetime.now().addMinutes(3);
String sch = nextTime.format('0 m H d M ? yyyy');
MyScheduler mysch = new MyScheduler();
String jobName = 'MySch_' + nextTime.format('yyyyMMddHHmm');
String jobId = System.schedule(jobName, sch, mysch);
}
void removeCurrentSchedule(SchedulableContext sc) {
CronTrigger ct = [SELECT Id FROM CronTrigger WHERE Id = :sc.getTriggerId()];
System.abortJob(ct.id);
}
}
おおよそこれで大丈夫そうですが、連続運転や負荷試験なんかは別途実施するのがおすすめです。 (バッチの完了を待たずに、次のスケジュールを積んでいる点、スケジュールを削除+新規作成している点など留意)
Last modified: $Date: 2020-12-23 $