10

Winactorをはじめて自分の中で解決していなかったのがウインドウ分岐でした。
画像判定から始まり、分岐、指定時間待機、ループ、シナリオ内で色々試してしまったようです。

正常      クリック ⇒ A画面
例外(警告等)  クリック ⇒ 警告画面 ⇒ A画面

今まで作ってきたものは①シナリオ速度、②安定性、③シナリオ可読性のどれかを妥協してきました。
自分の中で定番を作りたいと思っていましたが、いまのところ以下の2つがベストと考えています。

(条件)
イ、理論的に最短ノード(最速)であること(実際の速度は考慮外(こちらのノードの方が速いなど))
ロ、安定性が高いこと(基本はウインドウ状態待機)
ハ、シナリオに大きく付け加えるものでないこと(可読性)

以上から、今回は、画像マッチング系、指定時間待機、処理されているかの判定シナリオループを使わずに
検討しました。

(1)監視ルール + 正常系状態取得ループ

監視ルールは人気がないようです。私も1度も使ったことがなかったのですが、
実験してみました。スタンダードなシナリオですが問題点があり、警告画面(実験したソフトだと
5秒前後かかる)が出る前に正常系に吸い込まれ、次の処理へ進んでエラーを起こしてしまいます
(処理待ち(例えばA画面待機)のときに警告画面が出ても反応しません)。
それを避けるためには、指定時間待機が(5秒~10秒など)必要となり、それでもその時間に警告
画面がでるか(安定性)と正常系の処理にも影響があります(判定待ち時間)。

そこで、正常系に繰り返しノードを入れて「状態取得のみ」としtrueになるまでループさせます。
警告がなくA画面が表示された場合にはそのまま次の処理へ進み、警告が出るとループからはじき
だされ例外へ進みます(監視ルールを設定しないと無限ループになります)。警告のOKボタンを
クリックしてA画面待ち(下のウインドウ状態待機は画面が操作可能になるまで、一定時間待つ、
300,000ミリ秒)に入り処理が進みます。
どちらも即時に反応し、画面判定をしているので安定性も高く、最速、安定的に処理が進みます。

監視ルールは、「例外処理」と「サブルーチン」が選べ、どちらも一長一短なところがあります。
少し気になるのは、説明書に監視ルールが多いとシナリオ速度に影響あるとの記載があることです。

(2)A画面か警告画面のどちらかが表示されたことを判定する

もう一つは、A画面と警告画面の状態取得をループさせ、どちらかが表示されたら
ループを抜け出し、処理を分岐させる方法です。
こちらも、画面が表示されたら処理に移る方式なので、速度、安定性は高いです。

この2つのどちらかを定番ウインドウ分岐にしようかと思っています。
ぱっと見(1)に気が傾いています。例外処理までは普通に作るところですので、正常系に見慣れない
ループが一個入っているだけです。しかし、監視ルールが多いと処理速度が遅くなるという説明書の
注書きも気になるところです。

いずれにしても、どちらもユーザライブラリ登録すれば気軽に使えそうです。
どちらにしようか思案中であります。

anothersolution 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。