【UiPath】モダンフォルダーを使ってロボットを共有する

# はじめに

UiPath Orchestratorを使っていて、複数のテナント間でロボットを共有できないかと悩んでいました。
先に結果を書いてしまうと、「複数のテナント間」では不可能なのですが、「モダンフォルダーによるフォルダー間」であればロボットを共有できることがわかりました。

# モダンフォルダーについて

Orchestratorのリソースはフォルダー単位で管理されるものがありますが、フォルダーの種類として「クラシックフォルダー」と「モダンフォルダー」があります。

それぞれの違いについては、以下のUiPath Orchestratorのリファレンスを参照してください。
https://docs.uipath.com/orchestrator/lang-ja/docs/key-features-and-behavior

なお、クラシックフォルダーは将来的に廃止されることが決まっているようです。
つい最近リリースされたバージョン20.10LTSでもモダンフォルダーがデフォルトになっているようなので、今後はモダンフォルダーを使うことになるのでしょう。
詳しい違いなど、改めて記事としてまとめてみたいと思います。

# やりたかったこと

・UiPath Robotサービスが実行されている端末を、複数のテナントで共有する。
・２つの端末がどちらもRPA実行中の状態で他の実行指示が来た場合は、終わるまで待っていてくれれば良い。
ということを考えました。

１つのテナントでシナリオを実行している時間が少ない（UiPath Robot端末の専有時間が少ない）のであれば、複数のテナント間で共有できれば、ロボットを効率的に使えるなぁと思ったからです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/2473f633-ff0a-e258-fdea-6a2c5b612d88.png)

# テナント間では共有できない

Orchestratorにロボットを作るには、まずマシンを作る必要があります。
作成したマシンの「マシンキー」をRobotに設定しますが、そもそもマシンはテナント毎に作らなければなりません。
つまり、RobotにはひとつのテナントURLおよびマシンキーしか登録できないため、テナント間で共有することはできません。

# モダンフォルダーを使ってやってみる

そこでモダンフォルダーの登場です。
モダンフォルダーであれば、ロボットは複数のフォルダーに所属することができます。

## マシンテンプレートの作成

モダンフォルダーの場合、マシンは「マシンテンプレート」として作成する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/992aea7c-3614-3077-94ee-9c58b16d130c.png)

こんな感じで作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/b4978744-03c5-b28f-f2ca-8e12bd01a3da.png)

今回はロボットを２つ用意する想定なので、同様に2つ目も作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/a7f6efac-ee56-13ce-bd89-48ed0fb78300.png)

あとは、各Robot端末に、それぞれのマシンキーを設定します。
ここはクラシックフォルダーの時のマシンと同じです。

## フォルダーを作る

今回はこのような構成にしてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/80b3610c-be13-1f03-5f31-17ec80ee2ffc.png)

## ユーザー（ロボット）を作る

クラシックフォルダーとモダンフォルダーの大きな違いの１つなのですが、クラシックフォルダーでは「ロボット」を作成していましたよね。
モダンフォルダーでは「ロボット」を作成しません。
というか、そもそもモダンフォルダーには「ロボット」を作成**できません**。

ではどうするのかというと、「ユーザー」を作ります。
ユーザーを作ると、自動的にロボットが作成されます。

まずは作ってみましょう。
「ユーザー名」はOrchestrator上のユーザー名です。ここでは、「robot1」としています。
「ロール」には「Allow to be Automation User」を**忘れずに**指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/315c20a4-a5f2-61e6-d9f1-67c0c3367784.png)

次に、「③ Unattendedロボット」に移ります。

「このユーザーに対してUnattendedロボットを自動的に作成する」をONにします。
「ドメイン\ユーザー名」と「パスワード」には、自動操作を行うOSアカウントのユーザー名とパスワードを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/7f164f2b-a59d-6d17-1090-030bf1b710e5.png)

今回はロボットを2つ用意するので、同様に2つ目のロボットユーザーも作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/f556b4dc-01eb-f520-b98c-68a210a38c5b.png)

## フォルダーにユーザーを割り当てる

モダンフォルダーでは、フォルダーにロボットユーザーを割り当てる必要があります。
A事業部フォルダーを選択し、「ユーザーを割り当て」ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/71fce589-607c-6c66-0d3a-218610715a74.png)

割り当てるロボットユーザー、ここではrobot1を選択します。
ロールには、「Automation User」を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/cb426904-c09f-b382-cc26-a91ca0e43f6d.png)

同様に2つ目のロボットユーザーも割り当て、さらにB事業部フォルダーにも同様に割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/687eb0d5-eddb-c936-0393-7ff960d7feb6.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/e93a8b2e-a186-4463-bb1b-6df0e95f52ec.png)

## フォルダーにマシンを割り当てる

ユーザーと同様に、フォルダーにマシンテンプレートも割り当てる必要があります。
A事業部フォルダーを選択し、「マシンテンプレートを管理」ボタンを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/fef3fc04-7437-ccb7-c1da-03818ffcf509.png)

2つのマシンテンプレートを割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/4241b1c2-74de-82c0-7fae-d6a7607e7903.png)

B事業部フォルダーも同様に割り当て、以下のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/fae5ca8e-f431-0d57-1468-bb476a6e3981.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/9b688535-fb12-c1fd-7dbb-49b615cf99ff.png)

これで準備OKです！

# 動かしてみる

以下はプロセスの実行画面です。
このまま「開始」を押すと、空いているマシンでシナリオが実行されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517338/32a83d4f-048c-146d-a163-2f2c94d50d1f.png)

# おわりに

「テナント間の共有」という目的は達成できていませんが、モダンフォルダーを使えば似たような構成ができますね。
そもそもクラシックフォルダーでは「サブフォルダー」という概念がありませんでした。
重要なのは「フォルダーの構成をどうするか？」なのかもしれません。

ちなみに、モダンフォルダーがリリースされたのが最近だからなのか、モダンフォルダーに関する技術的な情報があまりないんですよね。
このあと、もう少しモダンフォルダーに関する情報を記事にしたいと思います。