Help us understand the problem. What is going on with this article?

[UiPath]Parallelの使い方

More than 1 year has passed since last update.

TL;DR

  • 複数のアクティビティを内部に含め、並列で実行する
  • Conditionの設定によって、全体の挙動を変更することが出来る
    • Condition = True ならば、含められたアクティビティのうちひとつでも完了すれば次のアクティビティに遷移する
    • Condition = False ならば、含められたアクティビティのすべてが完了した後に次のアクティビティに遷移する

使いドコロ例

ログイン済か否かの判定

  • Webブラウザで任意のサービスにアクセスするとき、セッションが残っていてログインを求められない場合がある
  • しかしながら一定時間が経つと自動でログアウトされ、再度ログイン処理を行わなければならない、というケース

実装

  1. Element Existsアクティビティを2つ用意する。対象となる要素は下記にする
    • a) ログイン前の画面であることを特定できる要素
      • ユーザーIDやパスワードの入力フォームなど
    • b) ログイン後の画面であることを特定できる要素
      • ログイン後にのみ表示されるユーザー名欄やフォームなど
  2. 1.で用意したアクティビティのうちいずれかに対して、Outputを定義する
    • 両方に設定してもよい
    • Outputで定義した変数のDefault Valueがfalseであることが条件
  3. 1.で用意したアクティビティをParallelアクティビティに含める
  4. プロパティ画面からCondition = Trueに設定する
  5. Parallel以降で、ログイン前/ログイン後での処理分岐を実装する
    • この分岐判断に、2.で設定したOutputを利用する

補足

2.において「いずれか」の実装で良いのは、それぞれのパターンで次のように挙動するため。

  • 例として、次のような実装を考える
    • 実装1.b)に対して、OutputとしてalreadyLoggedInを定義する

ログイン前の場合

  1. ログイン前の画面が表示される
  2. アクティビティa)が要素を発見する。これによりアクティビティa)が完了する
  3. Parallelの設定により、この時点で次のアクティビティへの遷移が確定する
  4. 遷移の時点でアクティビティb)は完了していないので、alreadyLoggedIn = Falseと判定される

ログイン後の場合

  1. ログイン後の画面が表示される
  2. アクティビティb)が要素を発見する。これによりアクティビティb)が完了する。要素を発見したので、alreadyLoggedIn = Trueとなる
  3. Parallelの設定により、この時点で次のアクティビティへの遷移が確定する
  4. 遷移の時点でアクティビティa)は完了していないが、Outputを定義していないので、処理には影響を及ぼさない

その他の使いドコロ

あったら追記します。

cheez_RPA
RPAの構築・開発・運用保守や育成(≒なんでも)をやってます。 ※Qiita上で表明するアクション(投稿した記事・コメント、記事へのリアクション等)はすべて個人の見解であり所属を代表するものではありません。
https://rpa.adgj.pw/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away