シナリオの配置を監視してシナリオ実行する常駐型サンプルシナリオ

2019.07.19【01_WinActor制御】

シナリオファイルがフォルダに配置されるのを監視し、配置されたコマンド用シナリオファイルを実行する常駐型のサンプルシナリオとなります。

※本サンプルシナリオをダウンロードする前に、こちらの注意事項を必ずご確認ください。

DOWNLOAD
76.0 KB

シナリオファイルの配置を監視して配置されたシナリオを実行する常駐型サンプルシナリオ


シナリオファイルの配置を監視して配置されたシナリオを実行する常駐型サンプルシナリオ

はじめに

シナリオファイル(以降、コマンド用シナリオファイル)がフォルダに配置されるのを監視し、配置されたコマンド用シナリオファイルを実行する常駐型のサンプルシナリオ(以降、本サンプルシナリオ)について説明します。

注意事項

本サンプルシナリオ利用時の注意事項はこちらです。

本サンプルシナリオの概要

本サンプルシナリオは、以下の処理を行います。

  • 指定されたフォルダを監視し、フォルダ内にファイルが配置されたら、配置されたファイルをコマンド用シナリオファイルとして、シナリオ実行します。

    ※ 実行したいコマンド用シナリオでは、シナリオの最後に、本サンプルシナリオを呼び出すようにシナリオを作成する必要があります。
  • 実行対象のコマンド用シナリオファイルの削除処理を行います。

使用するWinActorモジュール

本サンプルシナリオでは、以下のWinActorモジュールを使用します。

  • 01_WinActor制御/02_シナリオ制御/シナリオGoto.ums5
  • 07_文字列操作/01_変換・整形/文字列置換.ums5
  • 13_ファイル関連/02_ファイル操作/ファイル削除.ums5
  • 13_ファイル関連/02_ファイル操作/ファイル移動.ums5
  • 13_ファイル関連/04_ファイル一覧/先頭ファイルの取得.ums5
  • 13_ファイル関連/05_ファイル名/シナリオフォルダのファイルパス.ums5

動作確認環境

本サンプルシナリオは以下の環境で動作確認しています。

  • Windows 10
  • WinActor 5.3.1、WinActor 6.1.0

制約事項

  • コマンド用シナリオファイルとして利用するシナリオでは、シナリオの最後に「シナリオGoto」を配置して、本サンプルシナリオの実行呼び出しを行う必要があります。

ファイル構成

本サンプルシナリオに同梱されているファイル群について、説明します。

  1. 「サンプルのコマンド」フォルダ
    本サンプルの動作確認用に、サンプルのコマンド用シナリオファイルを同梱しています。以下に同梱しているコマンド用シナリオファイルの説明を記載します。
    • ブラウザ起動.ums5
      WEBページをIEで、開くコマンド用シナリオファイルです。
      IE起動後に、「シナリオGoto」を呼び出して、本サンプルシナリオの監視処理に戻ります。
    • アラート表示.ums5
      アラートを表示させるコマンド用シナリオファイルです。
      以下の画面が表示されますので、「OK」ボタンをクリックしてください。

      ※「OK」ボタンをクリック後に「シナリオGoto」を呼び出して、本サンプルシナリオの監視処理に戻ります。(クリックするまで監視処理に戻りません。)

    アラート
    アラート
    • メモ帳起動.ums5
      メモ帳を起動するコマンド用シナリオファイルです。
      メモ帳起動後に、「シナリオGoto」を呼び出して、本サンプルシナリオの監視処理に戻ります。
    • 電卓起動.ums5
      電卓を起動するコマンド用シナリオファイルです。
      電卓起動後に、「シナリオGoto」を呼び出して、本サンプルシナリオの監視処理に戻ります。
  2. 「order」フォルダ
    コマンド用シナリオファイルが配置されているかの監視対象となるフォルダです。本サンプルシナリオ実行時、「サンプルのコマンド」フォルダ配下のコマンド用シナリオファイルを本フォルダにコピーしてください。
    コマンド用シナリオファイルの配置を検知した時、「current」フォルダに該当コマンド用シナリオファイルを移動し、コマンド用シナリオファイルを実行させます。 提供時のフォルダ配下は、空の状態です。

    ※ フォルダの名称を変更する場合は、本サンプルシナリオの変数「監視フォルダ名」の初期値も併せて変更してください。

    変数一覧1
    変数一覧1
  3. 「current」フォルダ
    実行対象のコマンド用シナリオファイルを管理するフォルダです。本サンプルシナリオが「order」フォルダから実行対象のコマンド用シナリオファイルを移動してきます。 コマンド用シナリオファイルのシナリオ実行から、本サンプルシナリオに実行が戻ってきた際に、本サンプルシナリオがコマンド用シナリオファイルの削除を行います。 提供時のフォルダ配下は、空の状態です。

    ※ フォルダの名称を変更する場合は、本サンプルシナリオの変数「実行フォルダ名」の初期値も併せて変更してください。

    変数一覧2
    変数一覧2

本サンプルシナリオの使い方

本サンプルシナリオの使い方は以下の通りです。

Step 1. サンプルシナリオの読み込み

ダウンロードしたZIPファイルを展開し、展開したフォルダに含まれている本サンプルシナリオをWinActorで読み込みます。展開したファイル群については、ファイル構成を参照してください。

Step 2. 実行させるコマンド用シナリオファイルのコピー(初回)

「サンプルのコマンド」フォルダ配下のコマンド用シナリオファイルを「order」フォルダ配下にコピーしてください。
以降のStepでは、複数のコマンド用シナリオファイルを一度に「order」フォルダ配下に配置した場合、OSが定義するソート順の先頭のコマンド用シナリオファイルから処理されます。

Step 3. サンプルシナリオの実行

WinActorで本サンプルシナリオを実行開始します。
Step 2.でコピーしたコマンド用シナリオファイルが実行されます。コピーしたすべてのコマンド用シナリオファイルが実行された後、監視モードに入ります。

Step 4. 実行させるコマンド用シナリオファイルのコピー(追加)

Step 2.と同じように「サンプルのコマンド」フォルダ配下のコマンド用シナリオファイルを「order」フォルダ配下にコピーしてください。
コピーするコマンド用シナリオファイルの数は、幾つでも構いません。
コマンド用シナリオファイルの配置を確認し、監視モードから実行に移ることが確認できます。
コピーしたすべてのコマンド用シナリオファイルが実行された後、監視モードに入ります。

Step 5. サンプルシナリオの終了

本サンプルシナリオは常駐型の監視シナリオのため、明確な終了機能はありません。
本サンプルシナリオを終了する場合は、自ら「停止」ボタンをクリックしてください。

トラブルシューティング

本サンプルシナリオでは、「order」フォルダ配下にシナリオ以外のファイルをコピーした場合、エラーメッセージが出力されます。

詳細については、エラーメッセージ一覧を参照してください。

サンプルシナリオ解説

本サンプルシナリオで使用している実装テクニックやサンプルシナリオの拡張例について説明します。

シナリオのコンセプト

最初に本サンプルシナリオのコンセプトを説明します。

本サンプルシナリオは、「order」フォルダへのシナリオ配置を監視します。
コマンド用シナリオファイルが配置されたことを検知すると、「current」フォルダにコマンド用シナリオファイルを移動し、ライブラリ「01_WinActor制御/02_シナリオ制御/シナリオGoto.ums5」にて該当コマンド用シナリオファイルを実行します。
実行されるコマンド用シナリオファイルにも、ライブラリ「01_WinActor制御/02_シナリオ制御/シナリオGoto.ums5」を用いて本サンプルシナリオを再度、起動することで監視を継続させています。

実行対象コマンド用シナリオファイルの事前削除

最初に「current」フォルダ配下に存在するファイルを削除します。 後に使用する「13_ファイル関連/02_ファイル操作/ファイル移動.ums5」ライブラリは、上書きできません。
予めコマンド用シナリオファイルを削除しておくことで、同じコマンド用シナリオファイルが使用可能となります。

常駐型シナリオにするための無限ループ処理

「ノード/フロー/繰り返し」の条件を無限ループにします。「order」フォルダにコマンド用シナリオファイルが配置されるまで、ループを繰り返します。コマンド用シナリオファイルの配置を検知した場合は、コマンド用シナリオファイルを「current」フォルダに移動し、「01_WinActor制御/02_シナリオ制御/シナリオGoto.ums5」を用いてコマンド用シナリオファイルを実行させます。
コマンド用シナリオファイルを実行することで、無限ループから抜けます。すなわち、本サンプルシナリオが終了します。
実行されるコマンド用シナリオファイルでも「01_WinActor制御/02_シナリオ制御/シナリオGoto.ums5」を用いて、本サンプルシナリオを実行させることで常駐監視を可能とさせています。

条件式
条件式

コマンド用シナリオファイルのコピーに時間がかかる環境で必要な対策

「order」フォルダ配下にコマンド用シナリオファイルのコピー処理に時間がかかる環境の場合、ファイルコピーが完了するまでに「シナリオGoto」が実行される可能性があります。 不完全なシナリオファイルの状態で読み込まれるため、結果として「シナリオファイルの読み込みに失敗しました。」というエラーが発生します。 このような環境では、「シナリオGoto」呼び出しの前処理である「先頭ファイルの取得」から「ファイル移動」の間に、ファイルのコピーが完了したことを確認するための処理を追加する必要があります。

監視対象フォルダに複数ファイルを配置した際の処理順厳格化

ライブラリ「13_ファイル関連/04_ファイル一覧/先頭ファイルの取得.ums5」では、Shell.Applicationオブジェクトを用いてフォルダ内のファイル一覧を取得しています。
その際、暗黙的にファイル名昇順でファイル名一覧を取得できることを期待していますが、ソート順についての仕様は明確化されていません。
処理順を厳格化したい場合は、ライブラリ「13_ファイル関連/04_ファイル一覧/先頭ファイルの取得.ums5」のスクリプト自体を修正する必要が出てきます。

変更履歴

版数日付修正内容
1.0版2019/07/19初版
Twitterでシェア Facebookでシェア
ページの最上部に移動します