top / index / prev / next / target / source

2020-12-27 diary: [Force.com][Apex] シンプル・バッチ定期実行サンプル

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

[Force.com][Apex] シンプル・バッチ定期実行サンプル

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 $

登場キーワード


この日記について