[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 メーリングリストの案内