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