Schedulableインターフェース
指定の時刻に実行したい処理はSchedulableインターフェースを実装したApexクラスに記述することで可能となります。
公式:Apex スケジューラを使用したジョブのスケジュール
CRON式
スケジュール化する際に日時の指定をする際にCRON式を用いて表現します。
公式:Apex スケジューラ下のほうにCRON式の構文が載っています。
ソースコード
Schedulableインターフェースを実装したクラスから前Challengeで作成したメソッドを呼び出すだけです。
コード
global class WarehouseSyncSchedule implements Schedulable{
// implement scheduled code here
global void execute(SchedulableContext ctx){
WarehouseCalloutService.runWarehouseEquipmentSync();
}
}
スケジュール化の方法は3つあります。
- Debugの匿名ウィンドウから実行
- 上記WarehouseSyncScheduleクラスに記述
- UIを使ってスケジュール
コード
String sch = '00 00 17 * * ?';//JST 5pm==PST 1am. My org is set in JST
System.schedule('WarehouseSyncScheduleTest', sch, new WarehouseSyncSchedule());
1,2番では上記コードを実行/記述します。(私は3番を用いたので検証はできていないです)
Google先生によると、米国太平洋標準時(PST)の午前1時は日本標準時(JST)の午後5時に相当するとのことです。
組織の標準時を修正してもチェックは通りますが、私はJST PM5時で通しました。設定変えるの面倒
3番はSetUpのQuick Findにて、Apex classes
と入力し、Apex classesをクリックします。
Schedule Apex
というボタンをクリックすればスケジュールの作成が可能です。
(Schedulableクラスが表示されない場合、WarehouseSyncScheduleクラスを再度編集して保存すると表示されることがあります)