[Seasar-user:15123] [S2Chronos] ダイナミックトリガ?

Tetsuya Anzawa [E-MAIL ADDRESS DELETED]
2008年 7月 23日 (水) 17:11:31 JST


安澤です。
いつもお世話になっております。

タスクのトリガ及びトリガのプロパティを外部情報(DBなど)によって動的に切り替えたいと
考えています。
例えば、クーロントリガとディレイトリガを外部情報(DBなど)によって動的に切り替える場合、
以下のような手法でよいのでしょうか?
ほかに正しいやり方がありましたらご教授願います。

ちなみに、以下のサンプルではクーロントリガはそれなりに動きましたが、
ディレイトリガはタスク起動されませんでした。
サンプルの動作詳細は、以下の手法がありだった場合に別途質問させて頂きます。


@Task
public class TestTask {

    private static Logger log = Logger.getLogger(TestTask.class);

    /**
     * ダイナミックトリガー
     */
    private TaskTrigger trigger;
    /**
     * クーロントリガー
     */
    private CCronTrigger cron_trigger = new CCronTrigger();
    /**
     * ディレイトリガー
     */
    private CDelayTrigger delay_trigger = new CDelayTrigger();
    /**
     * ノンディレイトリガー
     */
    private CNonDelayTrigger nondelay_trigger = new CNonDelayTrigger();


    /**
     * バッチ制御テーブルの共通DAO
     */
    public BatchControlDao batchControlDao;


    /**
     * 初期化処理
     */
    @NextTask("taskA")
    public void initialize() {
        log.info("[initialize()]" + this.getClass().getSimpleName());
    }

    /**
     * タスク処理
     */
    public void doTaskA() {
        log.info("[doTaskA()]" + this.getClass().getSimpleName());
    }

    /**
     * 終了処理
     */
    public void destroy() {
        log.info("[destroy()]" + this.getClass().getSimpleName());
    }


    /**
     * ダイナミックトリガー
     * @return
     */
    public TaskTrigger getTrigger() {

        //DBより本タスクのバッチ制御データを取得
        BatchControlDto bcDto = 
this.batchControlDao.selectById("hmma00790");

        //ダイナミックトリガーの設定
        if(null != bcDto.getExpression()){
          //dbにexpressionが設定されていたら
          this.cron_trigger.setExpression(bcDto.getExpression()); //プロパティを動的にセット
          this.trigger = this.cron_trigger;
        }else if(null != bcDto.getDelay()){
          //dbにdelayが設定されていたら
          this.delay_trigger.setDelay(bcDto.getDelay); //プロパティを動的にセット 

          this.trigger = this.delay_trigger;
        }else{
          this.trigger = this.nondelay_trigger;
        }

    return this.trigger;
  }
}

以上、宜しくお願い致します。



Seasar-user メーリングリストの案内