長時間実行中のジョブを検知する方法はあるか?

こんにちは。
いつも勉強させて頂いておりま・・したが最近はアクセスする余裕がありませんでした。

今回質問させて頂きたいのは、Orchestrator上から都度ジョブ登録して
UnattendedRobotで実行しているプロセスが、一定時間以上「実行中」のままであった場合に
・それを検知する手段は何かしらOrchestratorに用意されているか
・可能であれば検知した結果、アラートメールを投げたりする等なにかアクションができないか
という点となります。

トリガー登録してスケジュール実行しているジョブについては
一定時間が経過したら強制終了させることはできそうなのですが、
手動実行のものについては記載が見つからず、皆様の知恵をお借りできればと考えている次第です。

よろしくお願いいたします。

(即追記)
すみません、肝心のバージョン情報が漏れていました・・。
当方の環境は「Orchestrator 2019.10.18」で運用しております。

Orchestrator自体には、ジョブの実行時間に基づく検知・通知を行う機能はありません。
そのため別途、ジョブの実行時間を取得して必要に応じ処理を行うような仕組みを構築する必要があります。
様々な手法があると思いますが、「Orchestrator APIを利用してジョブの情報を取得し、予め定義した時間を超えた場合に当該ジョブを終了させる」ということは技術的には可能です(UiPathのワークフローとして組むことも出来ないわけではありません)。

上記設定についての補足となりますが、この「一定時間」の開始起点となる時刻は、ジョブが「実行中」となってからではなく、ジョブが「実行中」または「保留中」になったタイミングです。すなわち、ジョブの一覧に追加された時点から一定時間が経過したら、ということになります。

1 Like

ジョブのロングラン監視機能ほしいですよね。
OrchestratorはWebサーバーでイベント発生で動くので、現状、自分でタイマー実行が出来ない気がします。

監視用のロボットフローを作って、Orchestratorのスケジュール設定で実行させて、API叩いて検出するのが王道な気もしますが、
以下のような方法でも可能だと思います。

1)SQLServerのエージェントジョブで、ジョブテーブルから実行中で一定時間経過したものを抽出し、通知する(メールなど)
2)SQLServerまたはOrchestratorのタスクスケジューラトリガーで、SQLServerのジョブテーブルからSQLCMDまたはPowershell等からSQLで・・・同上
3)Orchestratorのタスクスケジューラトリガーで、OrchestratorのAPIから実行中で一定時間経過した・・・同上
4)他のマシンのタスクスケジューラトリガーで、OrchestratorのAPIから・・・同上
5)AzureFunction等のサーバーレスアプリで、OrchestratorのAPIから・・・同上

「2」はやったことがあります。(オンプレ版Orchestratorで)

間違ってたらスイマセン。

3 Likes

なるほど、情報ありがとうございます。
API経由でジョブ状況を監視するプロセス、を常時/定期的に稼働させるようなイメージになりそうですね・・。
トリガー実行ジョブの強制終了の情報についても重ねてありがとうございました。

なるほど、DBから直接情報を引っこ抜いてくる方法なんかもあるんですね。
そっちの発想はなかったので刺激になります。
APIとどっちで実装するかは検討する必要がありそうですが、非常に参考になりました。
ありがとうございます。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.