【UiPath】Attended Framework のアップデート（2022.02）

# はじめに

この投稿は、RPAツール「UiPath」の Attended Framework についての記事です。
2022/02/21に「version 1.3.0」として、内容が大きく変わったので、紹介します。


# Attended Framework とは

UiPath社が提供している、AttendedRobot実行用のフレームワークです。
2018年に公開され、

- シンプルなプロセス向けのフレームワーク
- 自由度が高いながらも最低限欲しい機能が揃ったフレームワーク

として評価されてきましたが、今回（2022/02/21）のアップデートで、

- Attended実行用のフレームワーク`
- ユーザーとロボットの対話型に特化したフレームワーク

に変わっています。
また、メインフローの制御方式も「シーケンス」形式から「**ステートマシン**」形式に変わりました。要するに「**Reframework**」方式のフローになっています。

過去の更新履歴は以下のようになっています。

| バージョン | リリース日付 | コメント |
|:-:|:-:|:-|
|1.3.0|2022/02/21| 内容が大幅に変更され、対話型に特化したフレ－ムワークへ |
|1.2.0|2019/09/17| 中身がzip形式 -> nupkg方式に変更（テンプレート化）   |
|1.1.3|2019/01/29| バグ修正  |
|1.1.2|2018/11/09| Go（現在のmarketplace）に公開。シンプルな実行フレームワーク |

https://marketplace.uipath.com/listings/attended-framework

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/7dc87aa0-5245-9039-49be-17150f08636d.png)

以下で変更内容を見ていきます。

# テンプレート形式（nupkgテンプレート読込）

以前（version1.1.3以前）は、ダウンロード時の拡張子が「Zip」になっていて、簡単に中身を閲覧できましたが、前回（1.2.0）の変更で「nupkg」形式に変わりました。
「nupkg」なら「プロジェクトのテンプレートファイル」として使用できるからだと思います。（欲を言えば、Zip形式も残しておいてほしかったです。）

なので、以下の手順でStudioでテンプレートを使用できるようにする必要があります。

```
＜テンプレート使用手順１＞
- 左メニュー「テンプレート」-> テンプレートを検索 -> MarketPlace -> AttendedFramework
　（なければ以下の手順２へ）

＜テンプレート使用手順２＞
- marketplaceから「nupkg」ファイルをダウンロードテンプレートファル
- ダウンロードしたnupkgを以下フォルダに置く
　- 左メニュー「設定」 -> 場所 -> プロジェクトテンプレートのパブリッシュ先URL
- テンプレートから AttendedFramework を開く
　- 左メニュー「テンプレート」-> テンプレートを検索 -> local -> AttendedFramework
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/81b95bc2-4b3d-e4c9-515f-694f61684ba8.png)


# 今回の「1.3.0（2022/02リリース）」で何が変わったのか？

以下の３点です。

```
変更点１）StateMachine形式になった
変更点２）フォーム表示方式になった
変更点３）付属のアクティビティが色々ついてくる
```

以下で具体的に見ていきます。


## 変更点１）StateMachine形式になった

Attended Frameworkは、以前はシーケンス形式でシンプルでしたが、「1.3.0」からStateMachine形式になりました。
Main.xamlを、以前のバージョン（1.1.3）と比較すると、こんな感じです。

| Attended Framework v1.1.3| Attended Framework v1.3.0 |
|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/d3d27af4-df4a-5db7-60f7-b3548a452e30.png) |![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/ab39c525-8944-9a76-d78b-4b28ef8b5cff.png) |

StateMachineといえば「ReFramework」ですが、Main.xamlを比較すると以下のような感じです。

| Attended Framework | ReFramework |
|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/ab39c525-8944-9a76-d78b-4b28ef8b5cff.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/19daf173-b32d-14d4-8374-7f4e9546bb44.png)|

違いは「GetTransactionData」のブロックの有無です。


## 変更点２）フォーム表示方式になった

実行すると右上に「現在の処理内容」が表示されます。このウィンドウは「Progressウィンドウ」という名前です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/a7057391-bb58-9124-aea0-435976d24ffd.png)
プロジェクトの中身を見ると分かりますが、この「Progressウィンドウ」は、処理の区切りで更新して「今何をしているか？」を表示させるためのものです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/8b5286c5-b5eb-704e-47bf-2c5e2a8e634a.png)
次に、ユーザーと対話して「何をどうやって処理するか」を確認するフォームが、画面中央に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/ab2e5e9d-9152-cd23-a43d-06f4914b72e3.png)
このフォームは「DisplayForm.xaml」の中で、フォームデザイナーで定義されていて、好きなようにカスタマイズ出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/1e13b741-97c7-a064-98e4-085ff821307d.png)
ロボットに実行させる実際の処理は「Process.xaml」に記載していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/14632243-3c9b-1bac-948a-2818482b9f1d.png)

ちなみに、プロジェクト内のフォルダは以下のように変わっています。

| Attended Framework v1.1.3| Attended Framework v1.3.0 |
|:-:|:-:|
|  ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/ddfaf4ba-9502-d3fa-4757-a8d2e0963584.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/37c8d688-5053-fc87-e025-160b92466bdd.png)  |


## 変更点３）付属のアクティビティが色々ついてくる

Version1.3.0以降では「UiPath.WPFInteractive」というパッケージを参照しているのですが、このパッケージには「対話型」で使用できそうなアクティビティが入っています。
上記で説明した「Progressウィンドウ」も入っています。
が、、、残念ながら「説明ドキュメント」が不足していて、良くわからないものもあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/85a88c3c-9446-dee1-bd94-54be89acf387.png)

|カテゴリ|activity名| 説明 |
|:-|:-|:-|
|フォーム表示系|Form HTML Presenter Show	|データを取得するためのHTMLフォームを表示します。|
|Light Browser系|Light Browser Change	|表示されている Light Browser の可視性を変更します。|
|Light Browser系|Light Browser Open		|IEブラウザをLight Browserとして開き、有人自動化に役立たせます。|
|Panel Window系|Panel Window Show	|	カスタマイズや更新が可能な パネルWindow を表示します。|
|Panel Window系|Panel Window Change Message	|	パネルWindow のメッセージ内容を更新します|
|Panel Window系|Panel Window Change Progress	|	パネルWindow の進行状況を更新します|
|Panel Window系|Panel Window Update	|	パネルWindow のHTMLコンテンツを更新します|
|Panel Window系|Panel Window Full Block Update	|	パネルWindow のメッセージ内容・進行状況・HTMLコンテンツを全更新します|
|Panel Window系|Panel Window Close	|	パネルWindow を閉じます|
|Panel Window系|Panel Window Wait	|	パネルWindow が閉じられるのを待ちます|
|Progress Window系|Progress Window Show	| 現在の実行プロセスに関する情報をオプションウィンドウに表示することができます。|
|Progress Window系|Progress Window Change Message 	| プログレスウィンドウのメッセージを更新します|
|Progress Window系|Progress Window Change Progress	| プログレスウィンドウの進捗を更新します。|
|Progress Window系|Progress Window Close	| プログレスウィンドウを閉じます。|
|Progress Window系|Progress Window Full Block Update	| プログレスウィンドウのメッセージと進捗を更新します。|
|Progress Window系|Progress Window Wait	| プログレスウィンドウ が閉じられるのを待ちます|
|Pipe Communicator系|Pipe Communicator Receive	| 他のプロセスからメッセージを受信するパイプサーバを作成します。|
|Pipe Communicator系|Pipe Communicator Send	|パイプクライアントを作成し、パイプサーバー経由で、他のプロセスへメッセージを送信します|
|その他|Toast Notify Show	| Windowsのトースト通知を表示します|
|その他|Updatable Message Box Show	|プロセスの実行中に更新できるメッセージボックス・ウィンドウを表示します|


実際に使いそうなのは、プログレスウィンドウ位な気もしますが、今後、説明ドキュメントが充実していけば、便利に使えるように鳴るかもしれません。



# 終わりに

以上「Attended Framework のアップデート」紹介でした。

この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。