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

Tetsuya Anzawa [E-MAIL ADDRESS DELETED]
2008年 7月 24日 (木) 10:08:10 JST


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


----- Original Message ----- 
From: "Junichi Kato" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, July 23, 2008 7:06 PM
Subject: [Seasar-user:15129] Re:[S2Chronos] ダイナミックトリガ?


> 2008/07/23 18:24 Tetsuya Anzawa <[E-MAIL ADDRESS DELETED]>:
>> 安澤です。
>> いつもお世話になっております。
>>
>> ご回答ありがとうございました。
>> 文中にコメント致します。
>>
>> ----- Original Message ----- From: "Junichi Kato" <[E-MAIL ADDRESS DELETED]>
>> To: <[E-MAIL ADDRESS DELETED]>
>> Sent: Wednesday, July 23, 2008 6:02 PM
>> Subject: [Seasar-user:15125] Re:[S2Chronos] 繝�繧、繝翫Α繝・け繝医Μ繧ャ・ 
>> 
>>
>>
>>> 安藤さん,
>>> コミッタの加藤(j5ik2o)です.
>>>
>>> お世話になっております.
>>>
>>> CDelayTriggerとしては,
>>> public void setDelay(long delay) {
>>> this.delay = System.currentTimeMillis() + delay;
>>> }
>>> で,現在時刻にディレイさせる秒数を足しdelayを作成し,
>>>
>>> public boolean isStartTask() {
>>> // snip
>>> return (System.currentTimeMillis() >= delay);
>>> }
>>> で,現在時刻がdelayを超えているかチェックしているだけになります.
>>>
>>>
>>> タスククラスのgetTriggerは,スケジューラから定期的に呼び出されるのでそのたびにCDelayTrigger#setDelayを呼び出していると,いつまでたってもタスクが起動しないことになります.
>>> そのような状況にはなっていないでしょうか?(CCronTriggerはsetExpressionで毎回設定されても問題は発生しません)
>>> よろしくお願いします.
>>>
>>
>> 了解です。
>> 現時点では、CDelayTriggerは外部情報(DBなど)によって動的にディレイタイムを設定できない、ということになりますか。
>
> たとえば,
>
> CDelayTrigger#setDelayを,
>
> if ( delayTrigger.getDelay() != bcDto.getDelay() ){
>     delayTrigger.setDelay(bcDto.getDelay() );
> }
>
> とするのはどうでしょうか?
>
> 無条件に毎回setDelayされるのが問題ですので,それを回避できればと思います.
> よろしくお願いいたします.
>

ですね。
ありがとうございました!

>>
>> タスクのトリガ及び、トリガのプロパティを外部情報(DBなど)によって動的に切り替えるには、
>> 私のサンプルの方法で基本的に問題はないが、期待どおりに動作するかどうかはトリガの実装による、
>> といったところでしょうか。
>>
>> また宜しくお願い致します。
>>
>>>
>>> 2008/07/23 17:11 Tetsuya Anzawa <[E-MAIL ADDRESS DELETED]>:
>>>>
>>>> 安澤です。
>>>> いつもお世話になっております。
>>>>
>>>> タスクのトリガ及びトリガのプロパティを外部情報(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 mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>
>>>
>>>
>>>
>>> --
>>> /**
>>> * name : Junichi Kato
>>> * email : [E-MAIL ADDRESS DELETED]
>>> *
>>> * blog : http://d.hatena.ne.jp/j5ik2o/
>>> *
>>> * commiting projects :
>>> * http://jiemamy.org/
>>> * http://s2chronos.sandbox.seasar.org/
>>> * http://s2config.sandbox.seasar.org/
>>> */
>>> _______________________________________________
>>> Seasar-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>>
>
>
>
> -- 
> /**
> * name : Junichi Kato
> * email : [E-MAIL ADDRESS DELETED]
> *
> * blog : http://d.hatena.ne.jp/j5ik2o/
> *
> * commiting projects :
> * http://jiemamy.org/
> * http://s2chronos.sandbox.seasar.org/
> * http://s2config.sandbox.seasar.org/
> */
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 



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