TL;DR
- 複数のアクティビティを内部に含め、並列で実行する
-
Condition
の設定によって、全体の挙動を変更することが出来る-
Condition = True
ならば、含められたアクティビティのうちひとつでも完了すれば次のアクティビティに遷移する -
Condition = False
ならば、含められたアクティビティのすべてが完了した後に次のアクティビティに遷移する
-
使いドコロ例
ログイン済か否かの判定
- Webブラウザで任意のサービスにアクセスするとき、セッションが残っていてログインを求められない場合がある
- しかしながら一定時間が経つと自動でログアウトされ、再度ログイン処理を行わなければならない、というケース
実装
-
Element Exists
アクティビティを2つ用意する。対象となる要素は下記にする- a) ログイン前の画面であることを特定できる要素
- ユーザーIDやパスワードの入力フォームなど
- b) ログイン後の画面であることを特定できる要素
- ログイン後にのみ表示されるユーザー名欄やフォームなど
- a) ログイン前の画面であることを特定できる要素
- 1.で用意したアクティビティのうちいずれかに対して、
Output
を定義する- 両方に設定してもよい
- Outputで定義した変数のDefault Valueが
false
であることが条件
- 1.で用意したアクティビティを
Parallel
アクティビティに含める - プロパティ画面から
Condition = True
に設定する -
Parallel
以降で、ログイン前/ログイン後での処理分岐を実装する- この分岐判断に、2.で設定したOutputを利用する
補足
2.において「いずれか」の実装で良いのは、それぞれのパターンで次のように挙動するため。
- 例として、次のような実装を考える
- 実装1.b)に対して、Outputとして
alreadyLoggedIn
を定義する
- 実装1.b)に対して、Outputとして
ログイン前の場合
- ログイン前の画面が表示される
- アクティビティa)が要素を発見する。これによりアクティビティa)が完了する
-
Parallel
の設定により、この時点で次のアクティビティへの遷移が確定する - 遷移の時点でアクティビティb)は完了していないので、
alreadyLoggedIn = False
と判定される
ログイン後の場合
- ログイン後の画面が表示される
- アクティビティb)が要素を発見する。これによりアクティビティb)が完了する。要素を発見したので、
alreadyLoggedIn = True
となる -
Parallel
の設定により、この時点で次のアクティビティへの遷移が確定する - 遷移の時点でアクティビティa)は完了していないが、
Output
を定義していないので、処理には影響を及ぼさない
その他の使いドコロ
あったら追記します。