
【WinActor】イベント監視を使ってみよう!
みなさま、WinActorに「イベント監視」というノードがあることをご存じですか?そして使ったことはありますか?
WinActor には「監視ルール」という機能もありますが、同じ「監視」という言葉が付く機能でも「イベント監視」はまた異なる機能なのです。
イベント監視とは
イベント監視機能は、WinActor Ver.7.3.0から実装された比較的新しい機能です。
イベント監視は、イベント一覧に登録されたイベントトリガーの監視を行い、検知した際にイベント一覧に登録された呼び出し処理を実行します。

既出の記事「監視ルールの使い方」でお伝えした通り「監視ルール」では、監視対象は「ウィンドウ」でした。対して「イベント監視」では特定のファイルやフォルダの状態、時間など様々選択できます。
下記に「イベント監視」で監視できる内容をまとめました。

具体例で考えてみよう
イメージしやすくするために具体的なストーリーを用いてお話します。
あなたの所属するペンギン社の営業部では、毎日取引先の会社からひっきりなしに注文書が届きます。そしてあなたは、届いた注文書から順に処理をおこなっていくという業務を自動化しようとしています。

複数の取引先から注文書ファイルがあなたのもとに届きます。
ペンギン社の当日分の受注の締め切りは午前中なので、午前中は大量の注文書が届きます。もちろん届く注文書の数や届く時間は日によってバラバラです。
届き次第すぐに社内処理を進めたいので、あなたは注文書の内容にサッと目を通したら所定のフォルダへファイルを次々格納していきます。
そこから先の流れとしては、都度人間が実行ボタンを押さなくても「ファイルが所定のフォルダに入ったら」自動で処理を実行をするようにしておきたいところです。そして処理が一通り終わったら、次のファイルがフォルダに入るまで待機させておく。
このような仕組みにしておくことで、あなたは次から次へと届くメールを捌いていくことに集中できますし、届いた注文書の処理も迅速・円滑に進めることができますよね。
このような「予め設定しておいたトリガー(※)を検知し次第、次の処理に進める」ようにしたいときに使うのが「イベント監視」なのです。
※上の事例では【所定のフォルダにファイルが格納される】というのが「予め設定しておいたトリガー」にあたります。
イベントの設定
ではさっそくWinActorの設定についてみていきましょう。
トリガーとなるイベントの設定は「イベント一覧」画面からおこないます。


なお、呼び出し処理に「サブルーチン呼出」を選ぶ場合はそのサブルーチングループを、「シナリオ呼出」を選ぶ場合はそのシナリオファイルを先に用意してから、このイベントの登録をおこなうようにします。

ノードの設定
続いて、イベント監視に関するノードについてもみていきましょう。

①イベント監視
予め登録しておいたイベントを検知するまで待機します。検知すると、予め登録しておいたサブルーチンもしくはシナリオを呼び出して実行します。

なお、このノードを使用するときはイベントの登録プロパティで「初期監視有無」を”あり”に設定します。


イベントを検知しサブルーチングループの処理が完了したら、またメインフローに戻り監視状態入ります。このフローではシナリオを手動で停止するまでは監視⇔サブルーチングループの処理をし続けます。
📝初期監視の有無
対象の行をシナリオ実行直後から監視対象とするか否かの有無を表示します。「あり」とした場合、シナリオ実行開始時から対象行は監視状態に入ります。なしと設定した場合は「イベント監視登録」によって登録されるまで監視状態にはならず待機状態になります。待機状態の間に登録したイベントが起こっても監視状態ではないので検知をしません。
②イベント監視登録
特定のイベントのみを監視させたいときには「イベント監視登録」を使います。

「イベント監視登録」は単体では使えません。このノードで選択したイベントのみを次の「イベント監視」で監視を始めます。
フォルダ監視のイベントのみ監視するように設定して、実行すると、、、👇
「特定フォルダの更新」のイベントのみ監視対象になっていることがわかりますね。

監視状態を抜け出せない?
①実行開始時からすべてのイベントを監視対象とする方法、②任意のイベントを任意のタイミングで監視対象とする方法をお伝えしましたが、このノードのみでは一度イベント監視状態に入ってしまうと監視状態から抜け出すことはできません。
図1を思い出していただくと「特定フォルダの更新」「時間(毎時)」というトリガーはどちらも検知後監視を継続する項目です。そのためイベントを検知し、サブルーチングループを実行後メインフローに返って来ても、続きの処理には進まず再度「イベント監視」ノードで監視状態に入ってしまいます。
一度サブルーチングループやシナリオ呼び出しをしたあとに、監視を中断・中止して続きのフローの処理へ進みたいときには「イベント監視解除」や「イベント監視終了」を使用します。

③イベント監視解除
指定のイベントの監視を解除することができます。

図13のように配置すると、サブルーチングループの処理が終わったら「フォルダ監視」イベントの監視状態を解除し、次のノードへ進むことができるようになります。
ただし、複数のイベントが監視状態になっている中で一つだけを解除した場合は、残りのイベントの監視は続けます。
では、登録しているイベントすべてを監視対象から外したい場合はどうするかといいますと「イベント監視終了」を使用します。
④イベント監視終了
監視対象の有無に関わらずイベント監視の監視処理を終了します。

なお、監視状態を外した後に、「イベント監視」ノードを再配置することで、監視を再開することもできます。

図15では、イベントを検知⇨サブルーチングループの処理実行⇨メインフローへ戻って「続きの処理」「続きの処理2」を実行⇨再度イベント監視状態に入る流れになっています。
イベントの登録のしかた、解除・終了のしかたについて一通りお伝えできたと思います。業務内容や運用によってどのような設定だとうまくいくか、ぜひ考えてみてくださいね。
イベント監視の注意点
基本的な使い方をお伝えできたところで、イベントを監視を使うにあたって留意しておきたいポイントをいくつか押させておきたいと思います。
①シナリオは常に実行中
監視状態に入って待機している間もシナリオは実行中のため、シナリオを編集したり、他のシナリオを実行することはできません。PCをWinActorが占有し、それも長時間に及ぶとPCへの負荷もかかりますので注意が必要です。
②イベントの検知速度
監視ルールのときと同様に、登録しているイベントの数が多いと監視対象の検知速度が遅くなることも認識しておきましょう。
③メール受信は事前設定が必要
イベントトリガーとして登録できる「メール受信」については、「メール管理機能」を使ったメール受信を検知するものです。メール管理機能を使った詳しくは操作マニュアル等をご確認いただきたいのですが、メール受信に関して事前設定が必要となります。

さいごに
常に監視をしておく必要がない場合は、これまで通り手動で都度実行したり、タスクスケジューラで定時実行をさせるという運用で全く問題ありません。
手動実行させると処理が滞ってしまうような実行頻度の高い業務や、定時を待たずイベントが起きたらすぐ実行させたいなど、即時性の高い業務において「イベント監視」は効力を発揮する機能ではないかなと思います。
最後までお読みいただきありがとうございました!
少しでもシナリオ開発や運用の向上に繋がったら嬉しいです✨
▼エンジニアにWinActorやkintoneのことを相談したい方はこちら!
▼RPAやWinActorのお役立ち情報はこちらにも!