毎年1回だけ動かしたいApexバッチのスケジューリング
1年に1回だけ動くApexバッチのスケジュールは、
画面からスケジュールしようとしてもできない。
// そもそもこの画面が分かりにく過ぎるという問題はさておき
画面からできないなら、バッチの中でスケジュールしてあげるしかない。
ということで、finishメソッドで来年分をスケジューリングしました。
/** * finishメソッド */ global void finish(Database.BatchableContext bc){ // 来年のスケジュールを設定(初回実行予定2016年4月1日、以降毎年4月1日に実行させる) String strCron = '0 0 0 1 4 ? ' + String.valueOf(来年); system.schedule('年次バッチ', strCron, new SchedulerClass()); }
・初回を画面からスケジュールする
(そのバッチが実行されれば、finishメソッドで次回がスケジュールされる)
・来年ってところはうまくバッチ実行日の来年を西暦で入れてNE
際限無く動くので、一応それは要注意。