UiPath StudioXでもUR実行できる?

皆さん、UiPath StudioX使っていますか?
UiPath StudioXは、プログラミングやエンジニアリングを専業としない市民開発者の方向けの自動化ワークフロー開発ツールです。
2020年4月頃にリリースされ、3年以上が経過したのでお使いの方も多いと思います。

pic1

今回、とあるCoEの方から、StudioXで作ったプロセスをUnattended Robotで無人実行できないのか?と聞かれました。
この質問はたまに聞かれます。私はいつもこう答えていました。

UiPath StudioXは有人実行(Attended Robot)での利用が基本であり、無人実行(Unatteded Robot)は推奨されません。
無人実行形式のロボットを作るためには、エラーハンドリングの作りこみが必要です。
エラーハンドリングの作りこみができるユーザーはStudioXではなく、Studioで開発することが推奨されています。

以前はこのような明確なすみわけがあったのですが、現在では、UiPath StudioXは開発者向けのアクティビティが使えたり、できることがUiPath Studioに寄っています。

UiPath Studioもモダンデザインがある程度普及してきており、StudioXのような直感的な操作体験がStudioでも得られるようになってきています。

変化の激しいこの状況で、本当にStudioXでURは推奨されないか、ちょっと調べておいたほうがいいな?と思って調べてみました!

UiPath社による公式見解

UiPath社HP UiPath StudioXガイド - よく寄せられる質問では以下のように見解が書かれてありました。

**StudioX で無人オートメーション プロジェクトを開発できますか?**

StudioX プロジェクトは有人での使用のみを目的として設計されており、無人での使用を目的としたプロジェクトを StudioX で開発することはお勧めしません。GEH を削除して StudioX プロジェクトを更新すれば、Studio プロファイルで無人オートメーションとして使用できます。プロジェクトをパブリッシュして無人オートメーションとして使用する前に RPA 開発者によるプロジェクトのレビューを実施することをお勧めします。記録するログやエラー処理を追加したり、アセットとして保存すべき値がハードコードされていないか確認したりするためです。

ふむ🤔まとめると以下でしょうか(たいしてまとめてない)

  • StudioXで作ったプロジェクトをUR実行することは推奨していない。
  • ただしGEHを削除すれば、無人オートメーションとして実行することは可能。
  • 無人オートメーションとして使用するならプロ開発者にレビューしてもらえ。

GEHとは、Global Error Handlerのことでしょう。
これは、グローバル例外ハンドラーという機能で、実行エラーが発生した場合に呼び出されるワークフローを定義できるものです。
StudioXユーザーなら一度は見たことがあるこの画面のやつです。

pic2

グローバル例外ハンドラーについての詳細は公式ドキュメントをご参照ください。

エラー発生時の対応をどうするか、というのがUR実行における大きな関心事だと思います。
ということで、StudioXでUR実行したときの挙動を、いくつかのバリエーションとともに整理してみましょう。

StudioXプロジェクトをそのままUR実行した場合

StudioXのプロジェクトですが、エラーを発生させたいので、開発者向けアクティビティを表示し、
シンプルに[Throw]アクティビティをむき出しで配置しました。

pic3

これで、ワークフロー実行後、すぐにビジネス例外が発生します。
この状態でOrchestratorにPublishし、UR端末で実行しました。
結果はどうなるでしょう?

UR端末でも、エラーが発生した時点でグローバル例外ハンドラーが機能し、以下の画面が表示されます。

pic2

この画面が表示されたら、ユーザーが自らの手でいずれかのボタンをクリックするまではジョブは実行中のままです。
URなので、もし夜間などに実行され、なんらかのエラーが発生したとしても、エラーをOrchestrator側が検知できず、タイムアウトになるまでずっと実行中、、、といったことにもなりかねません。

つまり、StudioXプロジェクトにエラー制御を施さずにそのままUR実行しようとすると、エラーが起きた時、ヤバそう。ということですね。 では次行ってみましょう!

StudioXプロジェクトで、トライキャッチでエラー制御入れてみた場合

StudioXのプロジェクトで、開発者向けアクティビティを表示し、[トライキャッチ]アクティビティを配置。
Try領域の中に、[Throw]アクティビティを配置しました。
Catches領域で[メッセージをログ]アクティビティを配置し、エラーを処理。

pic4

この状態でOrchestratorにPublishし、UR端末で実行しました。 結果はどうでしょうか。

ワークフロー実行後すぐにビジネス例外が発生しますが、トライキャッチ機構が動作し、 エラー処理してくれるので、警告ログだけ出力したら、ワークフローはエラーを吐かずに正常終了します。
Orchestrator側ではログは残るものの、ジョブの実行結果としては、正常終了扱いとなります。

pic5

ジョブを失敗扱いにしたいときに、Rethrowなどを使ってエラーを親ワークフローまで伝播させると、 グローバル例外ハンドラーさんが検知して、最初のケースと同じ振る舞いになってしまいます。 トライキャッチだけだと、ちょっと微妙ですね。
次行ってみましょう!

StudioXプロジェクトで、グローバル例外ハンドラーを無効化する

StudioXのグローバル例外ハンドラーを無効化するには、project.jsonを直接編集する必要があります。
[Throw]アクティビティのみを配置し、すぐにエラーが発生する状態のプロジェクトで、グローバル例外ハンドラーを無効化し、URで実行してみましょう。

pic3

以下手順です。

❶ StudioX画面左上のメニューより、「プロジェクトフォルダーを開く」をクリックし、エクスプローラーでプロジェクトフォルダを表示します。
pic6

❷ StudioX画面に戻り、プロジェクトを一度閉じます。

❸ エクスプローラーに戻り、メモ帳などのお好きなエディタソフトで「project.json」ファイルを開きます。

❹ 以下の行を一行丸ごと削除し、「project.json」ファイルを保存します。

"exceptionHandlerWorkflow": "GlobalHandlerX.xaml",

pic6

❺ StudioX画面に戻り、プロジェクトを再度開き、OrchestartorにPublishします。

以上です。グローバル例外ハンドラーを呼び出す定義は、プロジェクト設定ファイル(project.json)にて書かれているので、そこを手動で修正する必要があります。

結果はUR端末側でグローバル例外ハンドラーの画面が表示されることなく、ジョブは失敗となりました。 ログを見てみると、しっかりErrorがOrchestrator側に通知されています。

pic8

ということでまとめです。

まとめ

以下となります!

  • StudioXで作ったプロジェクトをUR実行することは推奨していない。
  • ただしStudioXでデフォルト搭載されているグローバル例外ハンドラーを削除すれば、無人オートメーションとして実行することは可能。
  • グローバル例外ハンドラーを削除するには、project.jsonを直接修正する必要がある。
  • 無人オートメーションとして使用するならプロ開発者にレビューしてもらいましょう。

StudioXでもUR実行はできることはわかりましたが、UiPath公式としても推奨されているものではなく、また本記事もUR実行を推奨するものではありません。
法人組織で利用する際には、組織管理者の許諾を取得することを推奨します。

以上です!