tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Intriguing Design Pattern for Scheduled APEX を試してみた。

スケジュール化したApexクラスを編集したい場合、

スケジュールを削除する必要があります。

 

それを回避する為に次の方法がありますよ。と紹介されていたサイトのやり方を

試してみました。

 

参考サイト:Advanced Apex Programming 
http://advancedapex.com/2012/11/14/scheduledapex/ 

 

 

スケジュール用クラスと処理用クラスを別にするやり方になります。

 

■スケジュール用クラス

global class ScheduleTest Implements Schedulable {
  
  public Interface IScheduleTest {
    void execute(SchedulableContext sc);
  }

  global void execute(SchedulableContext sc) {
    Type targettype = Type.forName('CalledByScheduleTest');
    
    if(targettype!=null) {
      IScheduleTest obj =
      (IScheduleTest)targettype.NewInstance();
      obj.execute(sc);
    }
  }
}

 

■処理用クラス

public class CalledByScheduleTest implements ScheduleTest.IScheduleTest {
    
  public void execute(SchedulableContext sc) {
    /* ここで処理を記載 */
  }
  
}

 

上記のように実装します。

 

処理用のクラスを別にすることでスケジュール化後も処理の変更が可能になる

やり方だそうです。

 

こんなやり方があるんですね。ヽ(=´▽`=)ノ