イベントを順番に一定間隔を空けて実行させる方法・仕組み
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-13-2022 09:39 PM
ある特定のイベントがほぼ同時に呼び出されることがあるが、同時に実行されると問題がある為、
実行が重ならないよう、一定間隔を空けて実行させるようなServiceNowの仕組みはありますか?
仕組みが標準でなければ、いい方法・アイデアを教えてください。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-13-2022 11:24 PM
返信ありがとうございました。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-18-2022 07:25 AM
ScheduleJobと同じE-learningで扱われていますが、EventとScript Actionを利用されるのはいかがでしょうか。
https://docs.servicenow.com/bundle/sandiego-platform-administration/page/administer/platform-events/reference/r_ScriptActions.html
Eventには時刻を設定することができます。
なので、あるスクリプトが動いた際に、同時に処理をしてはいけないScriptが処理中の場合に、1分延期すると言ったことが可能になります。
※依存関係のあるスクリプトの実行状態管理が必要です。
優先すべき処理をScheduledJobで定義しておき、そのJobが動いていないときに動かしたいScriptをScript Actionで定義するというのも可能かなと思います。
ご質問に答えられていますでしょうか。何かお力に慣れれば幸いです。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
04-19-2022 04:07 AM
レスありがとうございます。
・実現したいことは、例えば、Eventがほぼ同時に3個発生する場合、そのEventのScript Actionが約10秒ごとに順番に1つずつ実行されることです。(1個目のEventのScript Actionが実行開始、約10秒後に2個目のEventのScript Actionが実行開始、その約10秒後にEventのScript Actionが実行開始 というようなイメージです)
・Learningの下記記事で、Custom Queues を使って1つずつ順番に実行されるようにしました。
https://developer.servicenow.com/dev.do#!/learn/learning-plans/sandiego/servicenow_application_developer/app_store_learnv2_automatingapps_sandiego_using_custom_queues_advanced_topic
また、Schedule Item の Trigger typeに 「Interval」または「Repeat」を指定、時間に10秒を指定、そうすることによって、Schedule Item自体は一定間隔の10秒を空けて起動できるようにはできましたが、Schedule Itemと関連づけたEventのScript Actionについては、1つのScript Actionが実行完了すれば、すぐさま次のScript Actionの実行に移ってしまうため、10秒間に複数のScript Actionが実行されてしまいます。
・ひとまずは、一定時間間隔を取る方法として、EventのScript Action に gs.sleep(10000) を指定し、実行開始時刻を一定時間間隔を取れるようにしました。
・Schedule Itemの1回の起動につき、未実行のScript Actionが多数あっても、1つだけScript Actionできるようにしたいです。