見出し画像

【WinActor】監視ルールの使い方

今回は「監視ルール」がテーマです。
変数のような使用必須という機能ではありませんが、知っていると困ったときに役立つかもしれません。ご存じなかった方はこの機会にぜひ触ってみてください。

キラリ✨と目を光らせる!


📝 監視ルール
特定のウィンドウが表示された時に、「シナリオ停止」「サブルーチン呼び出し」「例外発生」いずれかの動作をさせることができます。

WinActor 操作マニュアルより


みなさま、シナリオ実行中に出現する様々なウィンドウの処理はどうしていますか?パッと思い付くのは画像マッチングなどで閉じさせているといったところでしょうか。

ただ毎回フローの決まった箇所で表示されるウィンドウならいいのですが、「いつ出現するか分からない」「出現したり出現しなかったりする」ようなウィンドウ(※下記参照)の場合はどうしましょう。
可能性がある箇所すべてに画像マッチングを置いておくわけにもいかず、かといってそのウィンドウを操作しないと元々操作したかったウィンドウへ操作を戻すことができないような場合は表示させたままにしておくこともできません。
このような場合に監視ルールをぜひ使ってみてください!

※「いつ出現するか分からない、出現しないこともある」ようなウィンドウ
・PC端末にインストールされているセキュリティ対策ソフトから出されるポップアップウィンドウ
・Windowsセキュリティ など

監視ルール機能はシナリオ実行中に常に対象のウィンドウが出現していないかを監視し、出現を確認したら予め設定しておいたアクションを取るという機能です。
では設定方法や注意点について詳しくみていきましょう。


監視ルールの設定方法

まずは監視ルールの設定について。
監視ルールは「表示」メニューから「監視ルール一覧」画面を開き設定をおこないます。

【図1】監視ルール一覧で追加ボタン(+)を押すとプロパティが開く


今回は例として、図2メモ帳を開いて文字を書き込みそのまま閉じようとしたときに出現するウィンドウを想定します。
監視ルールではウィンドウを検知したときおこないたい動作として「シナリオ停止」「例外を発生」「サブルーチン呼び出し」の3パターンの設定が可能です。

【図2】未保存のまま閉じようとすると表示されるポップアップウィンドウ



◆パターン1:シナリオを停止する

これはシンプルですね。該当のウィンドウを検知したらシナリオを停止させたいというときに設定します。設定方法は以下の通りです。

【図3】該当のウィンドウを検知したらシナリオ実行を停止したいとき

WinActorは予め登録しておいたウィンドウをシナリオ実行中に検知すると、メッセージボックスを表示して(図4参照)、ユーザが「OK」を押すとシナリオは停止します。

【図4】ユーザがOKを押さないとシナリオが止まらない点に注意

用途としては、対象のウィンドウが出現したとき、都度の判断でどのような処理をしたいかを決めたい場合などが考えられます。
続きの処理がその時々で変わるのでその時点で一旦シナリオは停止させてしまおう!ということですね。


◆パターン2:例外を発生させる

続いては例外を発生させる場合です。プロパティ設定はこちら👇

【図5】例外名はユーザが自由に設定できる

監視ルールは複数登録しておくことができるので、どの例外を発生させるかということを名前を付けて管理します。ここでは「メモ帳:内容を変更して保存」と設定したとします。
そして併せて「例外処理」ノードを使用します。
例外処理ノードはデフォルトの形のままだと「正常系」「異常系」のみですが、異常系を追加すると監視ルールで使用することができます。

【図6】さきほど監視ルールの中で設定した例外名を選択


あとは、通常のフローを「正常系」に、該当のウィンドウが出現したときに実行したい処理のフローを追加した「異常系」に配置します。

【図7】正常系内でエラーが起きたら真ん中の異常系へ、 監視ルールに設定していたウィンドウが出現したら右端の異常系へ処理が進む


これで「正常系」の処理を実行中に予め登録しておいたウィンドウを検知したら追加した異常系の処理をおこなうことができます。

なおこの場合、元からある異常系は正常系内でエラーが起きた時に進むルートです。
ここに「アクション例外」ではなく監視ルールで登録した例外を設定することもできますが、その場合正常系内でエラーが起きても異常系に処理を逃がせずそこで止まりますので注意が必要です。

【図8】エラーが起きた時に異常系に飛ばす構造も残して置いた方がよいかもしれません



◆パターン3:サブルーチンを実行する

一番使い勝手が良いのはこの設定だと思います。
パターン1は「シナリオを停止する」ことしかできないですし、パターン2だと対象のウィンドウが「例外処理の正常系内で出現したら」という実質条件付きの監視になりますが、パターン3ではそういった制限はありません。

サブルーチングループに予め操作させたい処理を設定しておくことで、ウィンドウの出現を検知次第サブルーチングループの処理をおこない、また元のフローへ戻ってくることができます。

【図9】サブルーチングループの処理が終わったら元のフローの続きへ戻る


監視ルールのプロパティ設定は、どのサブルーチングループを呼び出すかを選択します。

【図10】監視ルール編集画面の設定


監視ルールに設定したサブルーチングループは、もちろん「サブルーチングループ呼び出し」での使用も併用できます。

【図11】



監視ルールを使うにあたって

設定3パターンを確認したところで、実際にシナリオに組み込む前にもう少しお待ちください!
監視ルールを使うにあたっていくつか知っておいていただきたいポイントがあります。

ウィンドウを検知するタイミング

シナリオ実行中、ノードとノードの間で対象のウィンドウの監視をおこないます。検知のタイミングについてはぜひ頭の片隅に置いておいてください。

特定のノードの実行をきっかけに対象のウィンドウが出現する場合、そのノードの実行が完了してから監視を開始します。そのためウィンドウの出現のしかたによっては、出現を検知するタイミングも前後することも考えられますので注意が必要です。

想定と違う箇所で検知してしまい処理の内容が狂ってしまった、なんてことにならないようにしないといけませんね。

【図12】監視ルールによる処理が完了していないとファイル移動でエラーを起こす


優先度の設定

複数の監視ルールを設定している場合、優先順位を決めることができます。
優先度の高いものから検知をします。

【図13】↑↓矢印アイコンで優先順位を変更できる


シナリオの実行速度

ノードとノードの間で都度監視をおこなうため、監視ルールをたくさん設定しているとその分シナリオ全体の実行速度が落ちることも頭に留め置いてください。

どのやり方が一番いいかな~??



まとめ

検知のタイミングや実行速度の問題もあり、多用するのはリスクを伴う場合があります。
そのため出現する箇所が決まっている場合は画像マッチング+分岐出現するタイミングが定まっていないウィンドウには監視ルール、といったようにうまく使い分けをしてみてください。

最後までお読みいただきありがとうございます。
また次回お楽しみに!


▼エンジニアにWinActorやkintoneのことを相談したい方はこちら!

▼RPAやWinActorのお役立ち情報はこちらにも!


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!

最後まで読んでいただきありがとう御座います!Works ID_DXサイトも是非ご覧ください👍!