UiPath FormsとForms トリガー(Ver23.4.3以降)の利用 入門編

# はじめに


UiPath Formsアクティビティを使ったことがありますか。自動化の実行時に人間による確認や入力が必要な場合、UiPath Formsアクティビティを使用して人間が操作できるUIを提示できます。
例えば、以下の画面はUiPathのFormsアクティビティを使用して作成したものです。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/abd8998d-00d4-f48d-86ec-67f2f889189c.png" alt="Forms UI" width="480">


UiPath Formsアクティビティを通じて、自動化対象システムの値を上記の画面で表示したり、人間の入力内容を自動化対象システムに反映したりできます。
UiPath Formsを使用することで、自動化できる範囲が大幅に拡大します。

# 利用バージョンについて

UiPath Studio 23.4のリリースノートによると、「トリガーベースの有人オートメーション」に関連してフォームの機能を向上させるために、新しいエクスペリエンスのForms アクティビテがリリースされました。

新しいフォーム エクスペリエンスは、Studio 2023.4 および Form.Activities 23.4.3 以降で使用できます。

:::note warn 
**注意事項：**
バージョン2.0.7より前のパッケージで作成したワークフローをバージョン23.4.3以降を使用するプロジェクト内で再利用する必要がある場合、新しいアクティビティを使用して再作成する必要があります。

詳細については、以下のリンクをご参照ください。
https://docs.uipath.com/ja/activities/other/latest/workflow/about-the-form-activities-pack
:::

各バージョンでの利用可能かは以下の通りです。

| バージョン | タイプ | Formsアクティビテ(2.0.7まで) | Formsアクティビテ(23.4.3以降) |
|:-:|:-:|:-:|:-:|
| 23.4以降  | Studio  | 〇  | 〇  |
|   | StudioX  | 〇  | ×  |
| 22.10まで  | Studio  | 〇  | ×  |
|   | StudioX  | 〇  | ×  |

# トリガーベースの有人オートメーションって何？

有人オートメーションは、人間の入力と監督のもとで実行され、ユーザーやアプリケーションのアクションに基づいて進められます。
UiPathのエコシステムでは、これらのアクションはイベントとして定義されており、トリガーを使用して複雑なオートメーションを実現します。このプロセスは**トリガーベースの有人オートメーション**と呼ばれます。

トリガーベースの有人オートメーションに関する詳細は以下のページをご参照ください。

https://docs.uipath.com/ja/studio/standalone/2024.4/user-guide/trigger-based-attended-automation-introduction

従来のオートメーションは基本ワークフローに沿って順序立てて実行されます。一方、トリガーベースの有人オートメーションはトリガーによって様々なイベントを起動し、複雑な業務を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/fecac3ef-7413-a50a-c100-42ebb3db1336.png)

Salesforceの業務を例として、トリガーベースの有人オートメーションを用いると、以下のワークフローを実現できます。
- まずSalesforceにログインします。
- 次に、新しいレコードを入力するためのフォームが表示されます。そのフォームにデータを入力し、チェックした後、Salesforceに転記します。
- 最後に、Salesforceを閉じる前に、タイムシートに作業時間を記録してから作業を終了します。これは一連の業務ワークフローです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/2703c922-79e1-8ab1-ebbd-22f914df27ed.png)

# トリガーベースの有人オートメーションの作成

実際の例を通してトリガーベースの有人オートメーションの実現方法を解説します。このフォーム画面を通して、以下のことを実現します。
- 「ファイル選択...」ボタンをクリックして、出席一覧のCSVファイルを選択します。
- 選択されたCSVファイルのデータはテーブル形式で表示されます。
- データを確認し、編集した後、「保存して終了」ボタンをクリックすると、編集後のデータが出席一覧CSVファイルに書き戻されます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/7e1dcac3-e154-2c83-2366-5ad768456ef2.png" alt="ExcelDataDisplay" width="560">

ワークフローの作成を通じて、フォームの作成やトリガー及びフォームとワークフロー間データの渡し方を理解できるようになります。利用する開発環境はStudioの2023.10.3です。

## 全体構成

ワークフロー一式は以下の通りで、3つのXAMLファイルとフォームファイルです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/c09fd06a-9e33-4587-7b79-d7115c27b211.png)


肝心な部分のみ説明していますので、詳細なワークフローは以下のフォルダーから取得して確認してください。

https://drive.google.com/drive/folders/1ILr40p3zAA8644Ko7gOj0sNoU9IZQ0EQ?usp=sharing

## フォーム作成(ExcelData.uiform)

左側のコンポーネントから必要なものを選択し、右側のエリアに配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/3a4a6a92-c532-bcd6-5568-dfb5dbd96beb.png)
- 出席一覧ファイル：
    - 役割：選択されたファイルのパスの表示
    - コンポーネント：テキストフィールド
    - フィールドキー：textField（フォーム外とデータの受け渡しをする際に利用する名前）
- ファイルを選択：
    - 役割：クリックされたら、ファイルを選択するダイアログの表示
    - コンポーネント：ボタン
    - CreateTrigger：「ファイルを選択」ボタンがクリックされた際の動作を定義するXAML（fileトリガー.xaml）を作成する必要があります
- 出席一覧：
    - 役割：データテーブルの編集をするコンポーネントを載せるコンテナー
    - コンポーネント：編集グリッド
    - フィールドキー：datatable（フォーム外とデータの受け渡しをする際に利用する名前）
- お名前、年齢：
    - 役割：外部から受け取ったデータテーブルの名前と年齢の表示
    - コンポーネント：テキストフィールド
    - フィールドキー：データテーブルの列名と同じ名前
- 保存して終了：
    - 役割：クリックされたら、編集後データテーブルを保存してフォームを閉じること
    - コンポーネント：ボタン
    - CreateTrigger：「保存して終了」ボタンがクリックされた際の動作を定義するXAML（submitトリガー.xaml）を作成する必要があります。また、アクションをデフォルトの「確定」から「イベント」へ変更します<sup>補足事項</sup>。

:::note info
**補足事項：**
Submitボタンのデフォルトアクションが「確定」であるため、Submitのクリックイベントが発生するとフォーム自体が閉じられてしまいます。フォームが閉じられた後は、フォーム経由でのデータ取得や設定ができなくなるため、Submitのアクションをデフォルトの「確定」から「イベント」へ変更する必要があります。
:::


## メインワークフロー(Main.xaml)

ワークフロー実行を開始する際、まず作成したフォームを表示し、ローカルのイベントを待ちます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/bb9576ba-b159-fbb2-e713-25c9b275e60c.png" alt="ExcelDataDisplay" width="560">

予めフォームに表示してほしいデータがある場合、「フォームを表示」の引数欄を通じて、データの受け渡しが可能です。

## ファイル選択ワークフロー(fileトリガー.xaml)

「ファイルを選択」のボタンがクリックされたら、ファイル選択ダイアログを表示し、選択されたCSVファイルを読み込んでフォームに渡します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/f7060d25-7166-241f-985a-3a64c283b012.png" alt="ExcelDataDisplay" width="560">

選択されたファイルのパス及び読み込んだCSVのデータテーブルをフォームに渡すために、「フォームの値を設定」アクティビティを利用して引数を設定します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/faece0fb-1ac8-f2f8-2ffc-6c147a031b88.png" alt="ExcelDataDisplay" width="560">


## 保存して終了ワークフロー(submitトリガー.xaml)

「保存して終了」のボタンがクリックされたら、編集後のデータを出席一覧CSVファイルに書き込み、フォームを閉じてからイベント待ちを停止します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/177240/8525607b-bb89-adc5-6b21-e0a7c7be2dca.png" alt="ExcelDataDisplay" width="560">

# 最後に

ここまでで、トリガーベースの有人オートメーションのイメージを掴むことができました。トリガーやフォームの機能を活用し、応答性の高いオートメーションを構築できます。これは、人間とシステムが頻繁にやり取りが必要な場合（例：コンタクトセンター）に適用できるでしょう。

今後の記事では、より高度な使い方を解説します。

# 参考情報

https://docs.uipath.com/ja/activities/other/latest/workflow/form-how-to-guides