0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[ODC]Timer実行中のWake Timer Actionの効果を確認する

Posted at

Timer全体については、以下の記事で、OutSystems 11と比較しながら見た。

その中で、ODCのTimerについては、Timer毎に個別のコンテナが作られ、コンテナ内でスケジュールを管理するという記述があった (cronを使っているらしい)。

次回実行管理の仕組みが(O11から)変わっていることから、実行中にWake Timer Actionを使った場合の動作がどうなるかを確認しておきたい。

環境情報

ODC Studio(Version 1.4.21)

先に結論(確認結果)

  • Timer実行中にWake Timerを呼ぶと、Timer終了後、再び動き始める
  • このときNext runには何も設定されない(ODC Portalから、未実行のTimer実行リクエストが溜まっていることは判断できない)
  • Timer実行中にWake TimerをN (> 1) 回呼んでも、その後実行されるTimerは1回だけ(リクエスト全部がキューされるわけでなく、次回実行予定があるか、のフラグ管理に見える)

テスト用セットアップ

テストシナリオ

  • 実行に時間がかかるTimerを準備する
  • そのTimerをWake Timerで起動する画面を用意する
  • 画面からWake Timerを数秒おきに実行し、以下の点を確認する
    • Timerは何回実行されるか
    • Next runを始めとするTimerのプロパティはどう変化するか

テスト用実装

Timerを用意

実行時間が1分になるように実装するので、わかりやすくOneMinuteTimerという名前で作成。
image.png

TimerのActionを用意

OneMinuteTimerに対応するActionの実装。
今回の検証に中身は必要ないため、(System)/Sleep Actionで1分間止めるだけにしておいた。前後でLogMessageを出力し、処理開始と終了をODC PortalのLogsで追えるようにしてある。
image.png

ScreenとWake TimerするButtonを用意

UIはScreen上にButtonを配置するだけなので省略。
Buttonのイベントハンドラーは、以下のServer Actionを呼ぶ(LogMessageはLogsで追えるように配置。Wake Timerを呼ぶ)。
image.png

動作確認

Wake Timer Actionを三回呼んだ場合

1回目のWake TimerでServer Actionの実行開始を確認後、Wake Timerを2回呼んだ後でODC Portalを確認。
Next runは設定されず。
image.png

以下はODC PortalのLogsのスクリーンショット。Message末尾が

  • Start: TimerのAction開始
  • End: TimerのAction終了
  • Wake: Wake Timer Action呼び出し

を示す。

吹き出しに書いたように、

  • 1回目のWakeによってTimerが開始されたのを、Startのログで確認してから、さらにWake Timerを2回呼んでいる
  • Timer実行中のWake Timer呼び出しは空振りにはならず、実行中のTimerが終わるともう一度実行開始する
  • ただし、このWake Timer呼び出しが複数あったとしてもTimerが実行されるのは一度(スクリーンショットではTimer実行中に2回Wakeされているのに、End後にTimerは一回だけ実行された)
    image.png

Timerが開始する前に2回目以降のWake Timerを呼んだ場合

Timerは1回しか実行されない。
image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?