【UiPath】REFrameworkのアップデート（2021.10）

# はじめに

この投稿は、RPAツール「UiPath」の REFramework についての記事です。

UiPath Adventカレンダーの 20日目 の記事でもあります。

https://qiita.com/advent-calendar/2021/uipath

# REFrameworkとは

REFrameworkはUiPath社が提供している、ロボット実装のフレームワーク（テンプレート）で「大規模処理のベストプラクティス」と言われ「Orchestratorを使用したキュー分散型処理」になっています。

2018年に公開された後、あまり更新がありませんでした。

https://marketplace.uipath.com/ja/listings/japanese-reframework

そのREFrameworkですが、つい先日（2021年11月）「Studio 21.10」に付属する内容で更新されたので、その最新の機能と改善点を紹介します。

ちなみに、呼び方は「[アールイー]フレームワーク」「[リ]フレームワーク」の2派があります（どっちでも良いけど）

＜ReframeWorkの更新についての情報＞

https://forum.uipath.com/t/uipath-community-enterprise-2021-10-release-reframework/361476

更新内容は以下の通りです。

```
# 1）Orchestratorキューフォルダー名の指定
# 2）Process.xamlを「Framework」フォルダーに移動
# 3）強制終了時に成功ステータスになるバグの解消
# 4）最大連続再試行回数の追加
# 5）画像解像度のログ記録
# 6）ワークフローアナライザーのルールに準拠
# 7）指定アセットなしの場合、初期処理でエラー終了
# 8）TestSuite用の新しい機能追加
# 9）説明PDFの更新
```

順番に紹介していきます。

# 1）Orchestratorキューフォルダー名の指定

モダンフォルダに対応するため「Orchestratorキューのフォルダー名」を指定できるようになりました。「設定ファイル」または「Main.xamlの入力引数」として指定ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/732c0f7c-e931-a7c6-95c5-b1903082edd1.png)

# 2）Process.xamlを「Framework」フォルダーに移動

もともと「ルート」フォルダにあった「Process.xaml」ですが、今回の変更で「Framework」フォルダーに移動になりました。

| 従来のREFramework | 新しいREFramework |
|:-:|:-:|
|![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/eba9ad44-f023-778f-9f57-a2ba74e01bc5.png)|![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/e63e1601-46d7-64aa-c793-4f242d280e34.png)|



# 3）強制終了時に成功ステータスになるバグの解消

プロセスが強制終了された場合に キューアイテムが「成功」ステータスに設定されてしまう問題が修正されました。
Finallyブロックから「SetTransactionStatus.xaml」の呼び出しが削除され、外側のTry Catchの例外処理の中で、例外の種類（システム例外またはビジネスルール例外）ごとに処理されます。

| 従来のREFramework | 新しいREFramework |
|:-:|:-:|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/4d2f9a2c-4d8c-eceb-931f-0e139664e061.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/161c7136-cc28-e644-b7a3-21a28b54ea31.png)|

# 4）最大連続再試行回数の追加

キュー処理はエラーが起きても、設定した「最大リトライ数」の回数だけリトライされますが、処理の中には「リトライしても絶対にエラーになる」ものもあります。
その場合、何度リトライしても無駄なので「連続して何度も失敗する場合」は諦めて処理中断するように「最大​​連続再試行回数」が追加されました。

「ConsecutiveSystemExceptions」という名前のグローバル変数と「MaxConsecutiveSystemExceptions」という名前のconfigの定数値があります。

Configのブール値「ShouldMarkJobAsFaulted」をTrueに設定すると、最大連続再試行回数に達した場合、ジョブは失敗（失敗）としてマークされます。（デフォルトでは、Falseに設定されています）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/290577a6-9b22-e81d-b1a3-fd22f401b3c3.png)

# 5）画像解像度のログ記録

「Init」セクションで「画面解像度」がログに記録さえれるようになりました。
本番マシンが想定していない解像度になっていて、操作対象の要素が見切れてしまうなどでエラーが起きた場合に、ログから解像度を確認することが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/928be74d-dd20-9d9c-225d-9e1cf0f0a2c9.png)

# 6）ワークフローアナライザーのルールに準拠

ワークフローアナライザーは REFramework より後に追加された機能なので、実行するとエラーが大量に出ていましたが、ワークフローアナライザのデフォルトルールに準拠するようにプロジェクト全体が改善されました。

<従来のREFrameworkでワークフローアナライザでチェックした結果>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/35d73a25-56ce-70b7-c354-f73f64e84214.png)

# 7）指定アセットなしの場合、初期処理でエラー終了

従来のREFrameworkは、設定ファイルのアセットシートで宣言された値が Orchestrator に登録されていない場合、初期処理の中で「警告レベル」でログメッセージが出力されていましたが、実行処理に入ると結局エラーになってしまうという悲しい状態でした。今回、その「アセットなしの処理」が修正され、初期処理の時点でエラーになり、例外をスローするようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/c17372ea-da14-6008-7fd7-8da4ce465625.png)

# 8）TestSuite用の新しい機能追加

TestSuiteの新機能を使用する新しいテストフレームワークが追加されました。REFrameworkフォルダーには、フレームワークのワークフローに関連するいくつかのテストケースを含む「Test」というフォルダーがあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/4e0844e8-fa9e-bf87-0fb1-2ea8c0241365.png)

# 9）説明PDFの更新

Documentation フォルダの説明PDFが、今回の修正に合わせて更新されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154139/51444ae1-66a8-3f21-dee4-84bd511af923.png)

# 終わりに

以上、REFrameworkのアップデート内容の紹介でした。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。