UiPath Integration Serviceを学ぶ

# はじめに
この投稿は、UiPath Academyの「UiPath Integration Service」コースの内容を、日本語で説明したものです。英語が苦手なので「翻訳したもの」、というよりは、私が理解し、自分の言葉で説明したものとなります。サンプル等はより簡潔なものとしています。

# 前提条件
以下のコースが修了している程度のStudioの知識が必要です。
* 「Studioでの変数、引数、制御フロー」コース
* 「StudioによるUI操作の自動化」コース

:::note warn
実際は、OrchestratorでUnattended実行の設定ができる程度の知識も必要かなと思います。
:::

# 必要なもの
* AutomationCloudアカウント
* StudioおよびRobotバージョン2021.10以降（最新バージョンを推奨）
:::note info
Community版でOKです。
:::

# UiPath Integration Serviceの概要
複数のサービスにまたがる複雑なワークフローを簡単に統合するサービス(Integration Service)で、大きく以下の3つの機能を有します。
* サービスへ安全に接続できる仕組み(__コネクタ__)
* GoogleドライブやSalesforceなどのサービスへの認証の標準化(__コネクション__)
* 接続されたサービスのイベントに基づく自動化の開始(__トリガー__)

## コネクタ
現在、以下のコネクタが提供されており、どんどん追加されていくことと思われます(2022/06/30時点)。
![コネクタの種類1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/79512895-6a50-a10f-0948-1371c0971183.png)
![コネクタの種類2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/26aee754-6940-fa01-817a-1a68a32b1ff0.png)

## コネクション
コネクタを介して行われる、単一のユーザーと単一の外部アプリケーション間のリンクです。
以下は、UserA,BのGoogleDriveへのコネクションとUserBのTwitterへのコネクションを作成した状態です。
![コネクション.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/16d1551c-a585-da8d-c396-85d72b546205.png)

## トリガー
トリガーは、コネクタから特定のイベントを監視できるようにする仕組みです。
以下は、下記の監視＆実行を行うトリガーを作成した状態です。
1. UserAのGoogleDriveへファイルが追加されるのを監視する
2. ファイルが追加されたら、IntegrationService確認プロセスを実行する

![トリガー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/49b1a918-e630-30af-6191-160e4d935471.png)

# 実践
実際に簡単な自動化プロセスを作成していきます。
UserAのGoogleDriveにファイルが追加されたら、UserBのTwitterにそのファイル名をTweetするというプロセスで実装します。

![unattended.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/bd51118d-1d5a-c158-34a0-649ba0c8d197.png)
## Integration Serviceの起動
Integration Serviceは、Automation Cloud上にあります。赤枠の「Integration Service」をクリックすることで起動します。
（Integration Serviceが表示されていない場合は、青枠の「管理」からIntegration Serviceをプロビジョニングしてください。）
![Integration Serviceを開く.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/bc1378c3-f09a-f207-66c6-f2acfb666459.png)

## コネクションの作成
### Googleドライブのコネクションの作成
コネクタ一覧の中から、Googleドライブをクリックします。
![コネクタ選択(Googleドライブ).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/f970530e-6ad1-1f58-3a07-9115912644cf.png)
コネクションを追加をクリックします。
![コネクション作成(Googleドライブ).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/57832c4d-e436-3bdc-9369-90f69eec9e4d.png)
Googleドライブに接続するアカウントを選択します。
![アカウントの選択(Googleドライブ).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/f2e69d75-d31e-3246-9aea-a05fdad9e005.png)
「Googleドライブのすべてのファイルの表示、編集、作成、削除です。」をチェックし、続行をクリックします。
![アクセス許可(Googleドライブ).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/7783d944-fbab-6113-8bbe-557d91b8aacb.png)
コネクションが作成されました。せっかくなので、コネクション名を変更しておきます。
(作成された直後はアカウントが丸見えなのでというのもあり…)
コネクション名の変更は、名前の横の鉛筆アイコンをクリックし、名前を入力した後、EnterでOKです。
![コネクション名変更(Googleドライブ).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/52a878a4-42da-3b71-057d-eec1e9b7ccc6.png)
### Twitterのコネクションの作成
TwitterのコネクションもGoogleドライブとほぼ同様の手順で作成できます。
こちらもコネクション名を変更してあります。
![コネクション作成(Twitter).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/04d410a9-75da-8888-52b3-093d22fe3a62.png)

## プロセスの作成
### パッケージのインストール
GoogleドライブとTwitterのIntegration Service用のパッケージをインストールします。
* Google Workspace
* UiPath.Twitter.IntegrationService.Activities
:::note info
GoogleドライブとOutlook365以外のIntegrationServiceのパッケージは
　　UiPath.コネクション名.IntegrationService.Activities
という名前になっているようです。
:::
![パッケージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/87ebd355-1377-8e13-9765-3f4c4d495d31.png)

### 引数の定義
トリガーした対象(今回の場合UserAのGoogleドライブへのファイル追加)をプロセスに伝えるための仕組みが用意されています。以下の4つの引数がそれにあたります。それぞれ、String型の入力引数として定義しておきます。
* UiPathEventConnector
* UiPathEvent
* UiPathEventObjectType
* UiPathEventObjectId
![引数の定義.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/027da1b9-ffa8-2835-6dd3-8d42af2f8258.png)
実際に実行した際の引数の値は以下のようになります。
* UiPathEventConnector =[uipath-google-drive]
* UiPathEvent =[CREATED]
* UiPathEventObjectType =[File]
* UiPathEventObjectId =[10xEdxGq398IUeNiDjmToQSwD0MUTZKvq]

### Googleドライブからファイル名を取得
Googleドライブからのファイル名取得は、下図のような簡単なフローで行うことができます。
![Googleドライブ実装.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/27856a00-8d5d-d520-67b7-2f1c316d1e81.png)
1. Googleドライブの処理を作成するには、まず「Googleドライブを使用」を使用します。
2. プロパティの「Integration Serviceを使用」をONにします。
:::note info
アカウント欄にはIntegration Serviceで設定したコネクションが選択できるようになります。今回の場合は、「UserA GDrive」を選択しています。
:::
3.「ファイル情報を取得」でファイル情報を取得します。その際のファイルIDは引数の「UiPathEventObjectId」となります。

### Twitterへツイート
Twitterへツイートするのも、下図のような簡単なフローで行うことができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/dafbd94c-ed09-8f12-034e-b578733273df.png)
ちなみに、Configureをクリックすると、Integration Serviceで設定したコネクションを指定できる画面が表示されます。

### パブリッシュ
プロセスをパブリッシュし、unattended実行できる状態にします(ここは割愛します)。
![unattended.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/b4f93229-08bb-ce93-de26-ef7a3f3b4c54.png)

## トリガーの設定
トリガーを設定するルートは2種類用意されています。
1つ目は、トリガータブを表示し、「トリガーを追加」をクリックする方法です。
![トリガータブから設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/5807c174-83c7-63bc-932b-a7f86d1d5089.png)
2つ目は、コネクションタブより三点リーダー内のトリガーを管理をクリックした後、「トリガーを追加」をクリックする方法です。
![トリガーを管理.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/4ee8f8f0-6fd0-7ef3-90c8-5e01bbbd49a3.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/303a1184-d7a9-46b4-9457-e9959e7ac793.png)
どちらの手順でも、下図の画面にたどり着きます。
ただし、2つ目の方法の場合、「コネクタを選択」、「コネクション」が選択された状態で開きます(違いはそれだけ)。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/50aa83d8-19b7-995a-3319-1d0c2d9d71ad.png)

### イベント、記録
イベントは以下の種類から選択できます(コネクタによって違います)。
* 新しいレコードの作成時　･･･ファイルが新しくできた場合
* 既存のレコードの更新時　･･･ファイルが更新された場合
* 既存のレコードの削除時　･･･ファイルが削除された場合

記録は以下の種類から選択できます(コネクタによって違います)。
* File ･･･ファイルに対するイベント
* Folder　･･･フォルダに対するイベント

今回はファイルが追加された時にトリガーするので、「新しいレコードの作成時」、「File」を設定しています。

### 実行するプロセス
実行するプロセスには、実際にトリガーで実行するプロセスを設定します。
今回は先ほどパブリッシュした「GoogleドライブTwitter連携」を設定しています。

また、入力引数には、プロセスの引数で設定した値が自動的に表示されます。

## 動作確認
Googleドライブに「テスト用ファイル.txt」というファイルを格納します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/b2530e4b-3036-238f-6e00-598a1670c913.png)
しばらく待っているとジョブが実行されます。ファイルを格納してすぐに実行しないのは、トリガーの監視が5分間隔で行われているためです。そのため、最大5分待たされる可能性があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/8fcb7496-cf18-7272-ca90-223e71ea170d.png)
Twitterにもツイートされました。
![Tweet.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2218396/d1c63fe8-de9b-2457-f150-b2da2b2d08a9.png)

# まとめ
UiPath Academyの「UiPath Integration Service」コースの内容を日本語で簡単にまとめてみました。
作成したプロセスを見ても分かる通り、Integration Serviceは、様々なサービスの処理やサービスの連携を非常に簡単に自動化できる可能性があります。今後も色々と紹介していこうと思います。