Timerの実行状況はService Centerで確認できる(モジュールページのTimersタブや、Monitoring > Timersページで)。(System)から参照できるEntityを検索することで同じことができるのでその方法をメモ。
環境
Personal Environment(Version 11.16.0 (Build 35766))
Service Studio(Version 11.53.11)
サンプルモジュール
ForgeコンポーネントのV1.0.9。
MainFlow > TimerEntity Screen
ドキュメント
Timer
日本語版のページもあるが、2022/08/17時点では中身がほぼ空なので、英語版を確認する必要がある。
Entity
以下のEntityについては、今回必要な部分のみに言及。
その他の情報については、ドキュメントの項に貼ったリンク先を参照。
Meta_Cyclic_Job
Timerの定義を格納するEntity。
その環境における、該当Timerの設定値(実行スケジュール等)も持っているが、ここでは以下の属性だけを確認する
- Id属性:実行情報を持つCyclic_Job_Sharedを検索するための属性
- Espace_Id属性:Timerが作られたeSpaceのId。Built-In FunctionのGetEntryEspaceId()を使ったり、Service Centerで該当eSpaceのページを開き、そのクエリストリングから取得できる
- Name属性:Timerの名前
Cyclic_Job_Shared
Timerの実行情報を格納するEntity。マルチテナントでないものに限る。マルチテナントのTimerは
Cyclic_Jobという別のEntityにある。
Meta_Cyclic_Job Identifier型の属性が主キーなので、TimerがあるeSpaceのIdとTimer名でMeta_Cyclic_Jobを検索し、そのIdをこのEntity検索に使えば1レコードだけ取得できる。
- Is_Running_Since属性:Date Time型。実行中にのみ、開始日時が設定される。よってこの属性が設定されているときはTimer実行中と判定できる
- Number_Of_Tries属性:何回目の試行か。Timerは、エラー発生時に環境ごとに定められた回数(デフォルト3回)を上限としてリトライが行われる。
- Last_Run属性:Date Time型。最後のTimer実行が開始した日時。エラー発生してリトライするときは、最後のリトライの開始日時が設定される(1回目ではない)
サンプル実装
Aggregateを使い、特定のTimerのステータスを取得する方法。
参照追加
(System)の下にあるMeta_Cyclic_JobとCyclic_Job_Sharedへの参照を追加。
Aggregate
Sourcesタブ。Meta_Cyclic_Job Identifier型の属性同士でジョインしている。
以下の条件は、同じeSpace内にあるDummyTimerという名前のTimerを検索するときの条件。
サンプルの実行イメージ
起動ボタンをクリックすると、同じeSpace内のDummyTimerというTimerを実行する。
確認ボタンをクリックすると、その時点のDummyTimerの実行状態をEntityから検索して幼児する。
②の行の右側に、Is_Running_SinceとNumber_of_Tries属性の値を表示。
③の行の右側に、Last_Run属性を表示。