この記事は『CRESCO Advent Calendar 2020』 14日目の記事です。

 

皆さんこんにちは!
ビジネスプラットフォームテクノロジーセンター(BPTC)のもっちーです。

クレスコエンジニアブログでは毎年アドベントカレンダーをやっていますが、私自身はアドベントカレンダーの記事執筆は初めてです。
他の方のように、有益な情報を読者の皆さんに届けられるようにがんばります。

さて、今回私が紹介するのは、先月に書いたUiPath Appsに関する記事の引き続きとなります。
まだ先月の記事を読んでいない方は、先月の記事から読んでもらえると、より今回の記事を理解しやすいと思います。

先月の記事で実装したアプリケーションに、まだ紹介できていないUiPath Appsの機能を使って、機能追加をしていきます。
それでは、早速やっていきましょう。

前回のおさらいと今回の機能追加

前回作成したアプリケーションは、UiPath AppsからUiPathで作成したプロセス(UiPathではRPAのロボットをプロセスと呼ぶ)の呼び出しを行います。
プロセスを呼び出す際に、Appsで入力したテキストをプロセスに渡して、また、プロセスの実行結果を受け取りAppsに表示します。

今回は、前回のアプリケーションに対して、以下のような機能追加を行います。

  • 複数のプロセスを呼び出せるようにする
  • 実行するプロセスによって入力の数が異なるので、選択したプロセスによって表示する入力欄(テキストボックス)を制御する

上記の機能追加のために、以下の手順を行います。

  • Cloud Orchestratorに追加のプロセスをパブリッシュする
  • Appsに呼び出すプロセスの選択肢を追加する
  • Appsに選択されたプロセスに応じて入力欄の表示、非表示処理を追加する
  • Appsに選択されたプロセスを呼び分けるように、実行ボタンの処理を変更する

追加してみた(Studio、Orchestrator)

まずはUiPath Studioで追加するワークフローを作成していきます。
このような感じで、前回作成したワークフローから入力2つに増やしたものを作成しました。

こちらをCloud Orchestratorにパブリッシュします。

続いて、Cloud Orchestratorにアクセスします。
先ほどStudioからパブリッシュしたパッケージから。Orchestrator上でプロセスを作成します。

追加してみた(Appsのプロセス選択処理)

下準備はここまでで、ここからUiPath Appsにアクセスして、機能の追加を行っていきます。
前回作成したアプリケーションを開きます。

Orchestratorで作成したプロセスをAppsで呼び出せるように紐付けを行います。
手順は前回記事と同じで、メニュー左の「+」のボタンから「Process」を選んで、作成したプロセスを選択すれば、画面上にプロセスが追加されます。

続いて画面のパーツを配置していきます。
画面右上の「Add new control」ボタンから追加したいパーツを選び、ドラッグアンドドロップで、中央の画面に配置していきます。

今回追加するのは以下のパーツです。

  • 実行するプロセスを選ぶチェックボックス
  • 追加するプロセスの入力用テキストボックス
  • ラベルや区切り線

実行するプロセスの選択にはドロップダウンリストを使いたかったのですが、リスト一覧を設定する方法がわからずに、今回はチェックボックスを使用しています。

配置するとこんな感じです。
赤枠が今回追加したパーツです。

追加したパーツに対して、数字の順番で設定を行っていきます。

まずは①の入力テキストです。
初期表示ではプロセス1のチェックボックスが選択されている状態とするため、入力テキストの2つは非表示にしておきます。(プロセス1の入力は1つ、プロセス2の入力は2つです。)
画面右側のプロパティの「Hidden」にチェックを入れます。

次に②のチェックボックスですが、初期表示ではプロセス1のチェックボックスが選択されている状態とするため、「Checked(Default)」にチェックを入れます。

②のチェックボックスをクリックした際の動作も設定していきます。
右側のプロパティ欄から「Events」タブから「Create Rule」を選択します。

追加する動作は以下の3つです。

  • ②チェックボックスの「Value」を「True」にする
    チェックボックスが選択されている状態で、同じチェックボックスをクリックして、チェックが外れないようにするためです。
  • ③チェックボックスの「Value」を「False」にする
    2つあるチェックボックスはどちらか一方のみが選択されている状態にするためです。
  • ①入力エリアの「Hidden」を「True」にする
    実行するプロセス1は入力が1つのため、2つ目の入力エリアは非表示に設定します。

これらの設定は全て「Set Values」で行います。

「②チェックボックスの「Value」を「True」にする」を設定していきます。
「プロセス1 Value」(②チェックボックス)を左のアイテム欄にドラッグアンドドロップします。

Valueの「?」をクリックしてBooleanを選択します。
また右側の手のマークをクリックして入力モードに変更します。

入力モードに切り替えるとBooleanの設定がチェックボックスで設定できるので、チェックボックスをONにします。

同じ要領で残りの「③チェックボックスの「Value」を「False」にする」と「①入力エリアの「Hidden」を「True」にする」も設定します。
設定すると以下の様になります

同じ要領で③のチェックボックスを選択した際の動作も設定していきます。
追加する動作は以下の3つです。

  • ③チェックボックスの「Value」を「True」にする
  • ②チェックボックスの「Value」を「False」にする
  • ①入力エリアの「Hidden」を「False」にする

設定すると以下の様になります。

追加してみた(Appsのプロセス実行処理)

ここからは選択されたプロセスの呼び出し処理を追加していきます。
④の実行ボタンを押したときの処理を変更していきます。
画面から実行ボタンを選択した状態で、右側の「Events」タブを選択し、「Edit Rule」をクリックします。

追加する動作は以下の3つです。

  • IF文を追加して、プロセス1のチェックボックスが選択されているかを判定する
  • チェックボックスが選択されていたら、プロセス1を呼び出す
  • チェックボックスが選択されていなかったら、プロセス2を呼び出す

前回作成している動作が残っているので、一旦削除し、画面から「If-Then-Else」を選びます。

Ifをクリックし、Compareを選びます。

条件を設定する画面が表示されるので、左側に「プロセス1 Valse」をドラッグアンドドロップします。

中央の「=」はそのままとします。
右側は「?」をクリックしてBooleanを選択し、右端の手のアイコンをクリックし、表示されるチェックボックスをONに設定します。

これでIfの条件は設定できました。
続いてThenのプロセス呼び出し処理を設定します。
Thenをクリックし、「Start process」を選択します。

Start processでは呼び出すプロセスを選択します。
「UiPath.Apps」プロセスをドラッグアンドドロップします。

TypeはUnattendedを選択します。

Input Overrideはプロセスの入力をドラッグアンドドロップします。

入力に与える値は画面パーツの「入力テキスト1 Value」をドラッグアンドドロップします。

プロセス実行後の動作も設定します。
When completedを選択し、Set Valuesをクリックします。
設定先に「結果テキスト Value」をドラッグアンドドロップします。

設定元に実行したプロセスのOutをドラッグアンドドロップします。

これでThenのプロセス呼び出し処理の設定ができました。

同じ様にElseのプロセス呼び出し処理も設定していきます。
Thenとの違いは呼び出すプロセスが「UiPath.Apps2」を設定するのと、Input Overrideで2つの入力を設定する点です。

設定すると以下の様になります。Thenと異なる部分が赤枠となります。

以上で設定が全て完了しました。

動作確認

それでは機能追加したAppsを動かしてみましょう。
画面右上の「Preview」ボタンを押して動作の確認をします。

アプリケーションが表示されたら、最初はプロセス1を選択した状態で、実行ボタンを押してみましょう。
UiPathのプロセスが呼び出され、入力した文字がメッセージボックスに表示されています。

次はプロセス2を選択した状態で、実行ボタンを押してみましょう。
こちらも2つの入力がメッセージボックスに表示されています。
動作確認は無事成功です!

今回はUiPath Appsの機能を使って、アプリケーションの機能追加を行いました。
画面のパーツの表示非表示の制御や、IF文で呼び出すプロセスの制御を、簡単に機能追加することできました。
今回使用した機能を活用することで、アイデア次第で業務をより便利にするアプリケーションも作成できると考えています。

最後までお読みいただき、ありがとうございました!