UiPathでは並列(Parallel)アクティビティを使うで複数の処理を同時に行わせることが出来ます。ただ厳密には「同時」と言っても完全に並列で動かすわけではなく逐次交互に動かすような形ですが、使いドコロを選べば処理時間の短縮に繋げられます。
実装例
「並列」を使わない場合
「名前を付けて保存」の処理を例にして説明します。
以下はGoogle Chromeでの「名前を付けて保存」を実行した場合に表示されるダイアログです。保存するパスを指定し、「保存」を押すことでこのダイアログが閉じ、保存が実行されます。
一方、保存しようとしたパスに同名のファイルがあった場合、上書き確認のダイアログが表示されます。ここで「はい」を押すことで、上書き確認とファイル保存どちらのダイアログも閉じられ、保存が実行されます。
上書き確認をケアしようとした場合、ロボット側では以下のようにロジックを組む必要があります。
- 「アプリのステートを確認」で「名前を付けて保存の確認」が表示されているかを確認する
- 表示されていれば、「はい」を押す
この実装でも特に問題はありませんが、「名前を付けて保存の確認」が表示されなかった場合に「アプリのステートを確認」の待機時間分だけ待ちが発生します。「アプリのステートを確認」の待機時間はデフォルトでは5秒と短めですが、例えばこの処理がループの中に組み込まれており、100件繰り返しているとしたら1回当たりは5秒でも累計では500秒あまり待つことになります。
「並列」を使う場合
そこで、「並列」を使い待ち時間を減らしたのが以下のワークフローです。
このロジックでは並列アクティビティで以下の2つを並べています。
- 「名前を付けて保存の確認」の表示される
- 「名前を付けて保存」の消滅
また、プロパティ「条件」にはTrue(どちらかが完了した時点で並列を抜ける)を指定しています。
上書き確認が発生した場合は「名前を付けて保存の確認」が表示され、上書きが発生しない場合は「名前を付けて保存」が消滅しますので、どちらの場合でも待ち時間を極力減らして次へ進むことができます。
また、並列のどちらを通ったのかは「アプリのステートを確認」アクティビティの出力変数を設定することで確認できます。この例の場合では「名前を付けて保存の確認」が表示され並列を抜けた場合には、「はい」をクリックするように組んでいます。
動作環境
UiPath.System.Activities v25.6.1