[UiPath] Orchestrator関連のシステム構成図を整理してみた(よくわかるモダンフォルダ番外編)

こんにちは。[UiPath Friendsコミュニティ](https://uipath-friends.doorkeeper.jp/)運営メンバの @masatomix です。

## イントロ

前回の記事「[よくわかるモダンフォルダ(基本編)](https://qiita.com/masatomix/items/159d652027a80ff91002)」でモダンフォルダについて記事を書きましたが、**UiPath Orchestrator 上で出てくる用語や、それらのつながり(関連)など、いわゆる構成図的なモノをちゃんと整理していなかった**ので、今回は構成図を整理していきます。

だいたい、以下のスコープで整理しています。

1. Orchestratorに出てくるリソース (マシン、ユーザ、パッケージ、フォルダ) などの全体の構成
2. フォルダ内のリソースにスコープをあてた構成図
3. モダンフォルダをグループで管理した場合の関連がわかる、構成図

ここでいう構成図とは、下記のようなものです。

![orch-構成図000](https://imgur.com/zTEAnwz.png)

こんな登場人物たちを整理しておこう、という備忘メモです。

## 記事の対象のかた

- 会社で UiPath Orchestrator(以下OC)が導入されててなんとなく触ってるけど、もうちょっと構成をちゃんと知りたいなー、って方。
- でも [UiPath Academy](https://academy.uipath.com/jp/learningpath/uipath-orchestrator-%E5%9F%BA%E7%A4%8E%E3%82%B3%E3%83%BC%E3%82%B9) やるほどでもないんだよなー、、という方。

### 前提の環境

| 環境の項目 | 値   |
| ------ | ---- |
| Orchestrator | オンプレのOrchestrator 2020.10.7 |
| Robot | UiPath Robot (v20.10.9) サービスモード <br />(ロボット側は別に何でもOK) |

![orch-Qiita](https://imgur.com/oIBujW4.png)

## 構成図： 全体像

まずは全体の構成図です。

![orch-構成図000](https://imgur.com/zTEAnwz.png)

### 大事なポイント

#### マシン、ロボット、ユーザについて

- **ロボットの概念は「あるユーザがARやURを使える・使えない」などの設定レベル**まで、簡略化された[^1]。ロボットはもはや、あまり表に出てこない。(文脈によってロボットとかユーザって書きますが、ほぼ意味は同じ)
- したがって **ロボットはアカウント単位で管理**され、マシンごとには管理されない[^2]。
- ただし**Unattended Robot (UR)を動かしたいPCのみ「URはこの端末でうごかすよ」という追加設定(マシンキーという)** が必要。
    - マシンキーは「マシンテンプレート[^3]」というのを使って、**PC間で共有できる**ものになっている
    - Attended Robotもこのマシンキー接続を用いてもよいが、**対話型ログインという便利な機構を用いる方がシンプル**でよい。

#### フォルダ、パッケージ、プロセスについて

- ロボットがパッケージ(=ワークフロー) を実行できるようにするには、**ユーザとパッケージ双方をフォルダに紐付ける**、という作業で行う。**紐付いたパッケージをプロセス**と呼ぶ
- **ユーザは紐付いたフォルダ内を参照できる**ようになり、フォルダ内のプロセスを実行可能になる
- URとして実行したい場合は、追加で「このマシンキーはこのフォルダを参照可能」というマシンキーの紐付けが必要
- **フォルダ内には複数のパッケージ**を配置可能だし、逆に**パッケージも複数フォルダ**にリリース可能
- **フォルダ内には複数のユーザ**を追加可能だし、逆に**ユーザも複数フォルダ**に紐付け可能

[^1]: 実際OC2021のARについてはアカウントを入れる欄すら、ない)
[^2]: もともと「フローティングロボット」として存在していた機構がデフォルトになった、ってこと。ログインアカウント nコ x PC m台 という膨大なロボットを作る、などの概念がなくなった。逆に、おなじWindowsアカウントで、ワークフローをPC単位で使い分ける、とかはできなくなっちゃったけどね。
[^3]: マシンテンプレートも、フローティングロボットとともに昔からありましたが、クラシックフォルダの時はそんな普及していなかった

ちなみにURとマシンテンプレートなどについては、動画でまとめたことがあるのでご興味がありましたらどうぞ。

参考: 

https://qiita.com/masatomix/items/c63115254ed59d06ff9a


## 構成図：フォルダ内のリソース

先の全体像は、フォルダ内のリソースを少し省略して書いてあるので、それらにフォーカスした構成図がこちら。

![orch-構成図002](https://imgur.com/mlpUMsS.png)

### 大事なポイント

フォルダの配下には、おもにジョブとトリガーとアセットとキュー、そしてフォルダを配置可能です。

#### サブフォルダの機構

- サブフォルダは、**フォルダのなかにフォルダを配置できる機構**のこと。**親フォルダのリソースへアクセス可能なユーザ達は、サブフォルダのリソースへのアクセスも可能**という仕組み。図では「部外者用フォルダ」内のリソースへアクセス可能なのは
    - フォルダBのユーザ user003～user005
    - 直接紐付けた、user002

となります。

ご参考: 

https://qiita.com/masatomix/items/159d652027a80ff91002#%E7%89%B9%E5%BE%B43-%E9%9A%8E%E5%B1%A4%E6%A7%8B%E9%80%A0%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E6%A8%A9%E9%99%90%E3%81%AE%E7%B6%99%E6%89%BF

#### ジョブ、トリガー、アセット、キュー


- [ジョブ](https://docs.uipath.com/orchestrator/lang-ja/v2020.10/docs/about-jobs)は、**プロセスを動かしたときの記録**で、プロセスを動かすことを「ジョブを開始する」という
- [トリガー](https://docs.uipath.com/orchestrator/lang-ja/v2020.10/docs/about-triggers)は、条件にしたがって**ジョブを開始する機能**。一定時間ごとなど時間をトリガーにしたいわゆるスケジューラと、監視しているキューにデータが投入されたら起動する、キュートリガーがある
- [アセット](https://docs.uipath.com/orchestrator/lang-ja/v2020.10/docs/about-assets)は、ワークフロー全体で共有したい情報を**Key/Value形式でサーバに保管**できる機能。情報はシステム全体で共通にもできるし、ユーザ単位に個別のValueを設定できたりします。
- [キュー](https://docs.uipath.com/orchestrator/lang-ja/v2020.10/docs/about-queues-and-transactions)は、大量のデータなどを**複数のワークフローで手分けして処理するときなどに便利なデータを格納**しておく領域です[^4]。複数のワークフローがここからデータを取り出し、処理をしたい場合などに使います。


>--**2021/09/14追記**--
アセットは**システム全体で共通にもできる**と書きましたが、注意点があるのでちゃんと書きます。
>**アセットは正確には「フォルダ名+アセット名」と指定するのが正しく、その前提でシステム全体で共通**にすることはできます(アクティビティ上では、フォルダパスというプロパティでフォルダを指定する)。
>
>一方「**フォルダ名を省略すると、実行しているプロセスがいるフォルダの、アセットが使われる**」ため、結果、同じアセット名でも「実行されるフォルダによって、適用されるアセットが異なる」場合がありえます。。
>
>後半だけ見ると、**システム全体じゃなくて、フォルダ内で共通じゃん** って思えてきますので、ご注意ください。
>この仕様自体は、開発フォルダと本番フォルダでアセットの値を異なるモノにできる、など利用価値はいろいろありそうですが、クラシックフォルダ時にはなかった機能なので、考え方を変える必要がありそうです。
>(OC2021でアセットのリンク機能というのが追加されました。これは別フォルダのアセットを「自フォルダにショートカットのように配置する」機能なのですが、これはOC2020から必須の機能だったと思います)



[^4]: なんかこうかくとアセットと何が違うのってみえますが、アセットは固定的な共有情報などを保管する目的のもので、キューは日々の大量処理データなどをココにため込んでおいて、ワークフロー達がここから順番にデータを取り出して処理をしていく、みたいな目的で使います。

ちなみに、キューやアセットについてはかつてハンズオンをしたことがあるので、ご興味がありましたらどうぞ。

参考: 

https://qiita.com/masatomix/items/cb9c265f1d8010bed50b

## 構成図： モダンフォルダへの紐付けをグループで行った場合

**フォルダへの紐付けはユーザだけでなく「グループ」を紐付けることも可能**です。

![orch-構成図003](https://imgur.com/FjODHVN.png)

### 大事なポイント

ここで出てくる「グループ」ですが、**オンプレのWindows認証環境下では「ADのグループ」**、**クラウドの場合はAutomation Cloud上で作成した「グループ」**(デフォルトだとAutomation Usersとかが定義されてるアレです) などのことですね。

ユーザでなくグループを紐付けることで、そのグループに属するユーザをいちどにフォルダに紐付けることが可能になり、この図のとおり**設定がとってもシンプル**になります[^4]。

グループの機能は、ライセンスのアサインやユーザの作成、ロールの継承など様々なところで管理を楽にするので積極的に使っていきたいですね。

[^4]: ただしグループ単位の紐付けはAttended系ロボットだけなのでご注意


https://qiita.com/masatomix/items/159d652027a80ff91002#%E7%89%B9%E5%BE%B44-%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E6%A8%A9%E9%99%90%E3%81%AE%E7%B6%99%E6%89%BF

以上、構成図のご紹介でした。いままで構成図を説明できてなくてモヤモヤしていたのですが、スッキリしました。

おつかれさまでした！

## 関連リンク

- [UiPath Academy: UiPath Orchestrator 基礎コース](https://academy.uipath.com/jp/learningpath/uipath-orchestrator-%E5%9F%BA%E7%A4%8E%E3%82%B3%E3%83%BC%E3%82%B9)
- [UiPath Academy: UiPath Orchestrator 管理コース](https://academy.uipath.com/jp/learningpath/uipath-orchestrator-%E7%AE%A1%E7%90%86%E3%82%B3%E3%83%BC%E3%82%B9)