UiPath Orchestratorにおける障害の通知、ジョブの保留について(本編の超要約版)


> 本資料は
> [UiPath OrchestratorのTIPS集。障害の通知、ジョブの保留についてご紹介](https://qiita.com/masatomix/items/75381bf769588ff7f428)
> の超要約資料です。きになるところは本編をご確認ください。


## 要約

- **ロボットの使用不可能状態**や**ワークフローの異常終了**について「OC画面上のダイアログやアラート一覧画面」「ユーザに紐付いたアドレスでアラートメールを受信すること」で、それらの検知ができます。

- またジョブの投入について、稼働するロボットを動的に割り当てる機能によって**ロボットが空いていないときにもジョブの投入をする**ことができます。

- ロボットを指定して手動でワークフローを実行したいとき、**そのロボットですでに同じワークフローがジョブ登録されている場合**は「すでに保留中ジョブが存在する」となってジョブの投入ができないのでご注意ください。

- スケジュール実行について、**そのロボットですでに同じワークフローがジョブ登録されている場合**は「すでに保留中ジョブが存在する」となって、エラーとして処理(アラート通知)されるのでご注意ください。


----

## ジョブ実行中に、ワークフローが異常終了したばあい

**「Attendedロボについて、ユーザがタスクトレイからワークフローを実行」** したり **「Unattendedロボについて、OC画面からジョブ実行」** したときに、そのワークフローが異常終了した場合

![errorP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/b492a6ba-8b58-b60b-5ed6-b57642a5d6f0.png)

このような異常終了するワークフローを実行した場合、基本的には**ロボット自体の障害検知と同様**、

- OC画面上での「xxx の # ジョブは # ロボット xxx で失敗しました。」などの通知ダイアログ。またアラート画面による一覧表示
- 定期的なメールによる通知

によって障害が通知されます。

ジョブが失敗したときのOC上のエラーダイアログ:
![job001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/208c7f3c-cb07-924c-a1e9-e54ccc48d6ab.png)


アラート画面による一覧表示:
![e99.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/b9dd9a87-1dc2-5b86-7f5c-2cbfb9890291.png)


定期的なメールによる通知:
![job002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/66256e8e-e75a-cb0f-200c-34cd1b252ab4.png)

ジョブ画面の詳細表示で、障害が発生した原因を確認できます
![d000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/8fd02c95-b9cd-f0ad-1556-ac04844b4c09.png)

詳細表示
![d001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/88edcd13-1b57-507e-e605-2d0d6c04c734.png)



## ジョブの保留とは

Orchestratorには**実行待ちのジョブは保留にしておいて、空きができしだい順次実行する**という機構があります。

ジョブが「保留中」状態とは、ロボットがワークフローを実行中、もしくはワークフローの実行が不可能な状態のときに、ロボットがワークフローを実行可能になるまで待っているという状態です。

![j000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/bcad8b06-2156-949a-7bf0-53a004023d9c.png)

またジョブの実行には、

- **ジョブ作成時にロボットを直接指定する「(ロボットグループ内の)特定のロボット」**
- **実行時に空いているロボットをOCが選んで実行する「(ロボットグループ内の)いずれかに動的に割り当てる」**

という2つの方法があります。

![j001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/bf559230-c152-8680-3728-5b6d148322d9.png)


「動的に割り当てる」方法は、ロボットグループに複数台のロボットが登録されているとして、**稼働できるいずれかのロボットで**順次ワークフローを処理します。



特定のロボット、の制約:
「あるロボットについて**同じワークフローは**ひとつしか保留中にできない」
ロボット上であるワークフローが保留中になっていると、そのロボットに**同じワークフローをさらに投入しようとすると「既に保留中がある」というエラーが発生して、投入ができない**ようになっています。
![j002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/0685d5f5-511b-f398-9c8c-187a71126474.png)

→ その場合は「動的に割り当てる」を利用してください。

動的割り当てなら、同じワークフローを、複数投入できる様子
![j003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/03c3e012-7005-df7f-39ce-540edfbfa783.png)

### スケジューラがジョブを作成しようとしたとき、ロボットに空きがない場合の注意

スケジューラが**同じジョブを連続で投入**すると、ロボットが実行不可の状態のとき、1つめは保留中として投入されますが、次以降のジョブは「ロボットには既にこのプロセスに対する保留中のジョブがあります」エラーとなり、アラート通知されます。

ダイアログ
![s001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/5afaf6fd-b72a-27a2-d414-7db600eea815.png)

一覧画面
![s002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/a22dbd4d-d509-1b6d-3956-24ecbcbd2934.png)


「**あるロボットについて、同じワークフローはひとつしか保留中にできない**」の制約で動いているので、別のワークフローのジョブを投入することは問題なく可能です。
![s003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/59129f43-9d1a-9c07-43c7-2cec295c5862.png)

### ロボットたちが実行不可能状態のまま復旧せず、ジョブが保留される場合の注意

ロボットがワークフローの実行が不可能な状態 (トレイから「切断」を押していたり、ネットワークが切れて無応答状態など) の場合でも、ジョブの投入は可能です(スケジュールからの投入時も同様)。そのときはジョブの状態が「保留中」となるのですが、**ロボットが復旧しない限り、ずっと保留中のまま**となってしまいます。保留中のばあいは障害の通知も来ませんので、ご注意ください。

もちろんロボットが復旧したら、ジョブは実行開始されます。
![job005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73777/913c30dc-9401-82db-f9f4-8a3804726564.png)



## 関連リンク
- [UiPath OrchestratorのTIPS集。障害の通知、ジョブの保留についてご紹介](https://qiita.com/masatomix/items/75381bf769588ff7f428) こちらが本編