複数のWinActorシナリオをタスクスケジューラで順次実行したかった


前提

WinActor

WinActorは1端末につき1台のみ起動可能のため、複数のシナリオを並列処理することができない。
そのため、定期実行する場合はシナリオの時間帯をずらし、順次実行する必要がある。

WinActor単体にはシナリオを管理するための機能が含まれていない。
そのため、決まった時間に実行するには専用の管理ソフトか、タスクスケジューラを利用する。

例えば、以下のように複数のシナリオを指定した時間に定期実行したい、とする。

  • シナリオAは09:00, 13:00, 16:00
  • シナリオBは10:00, 15:00, 17:00
  • シナリオCは09:00, 15:00, 16:00
  • ...

太字の部分で時間帯が重複しているが、順次実行できるようにタスクスケジューラで設定したい。

タスクとインスタンス

タスクスケジューラから起動した現在実行中のプロセスをインスタンスという。
タスクが既に実行中の時に同じタスクがトリガーされた場合、二つのインスタンスが生まれる。
この時、二つのインスタンスをどのようにコントロールするか決めることができる。

Windowsタスクスケジューラの多重起動

タスクのプロパティ

操作

プログラム/スクリプト(P)にWinActor7.exeを指定
引数に「-f ファイルパス -r -e」を指定し、「WinActorの起動後にシナリオを実行して終了する」タスクを作成。

WinActorシナリオは起動後に60,000ミリ秒(1分間)待機するだけのシナリオを作成した。

設定

  • タスクが失敗した場合の再起動の間隔を「1分」
  • タスクを停止するまでの時間を「1時間」
  • 要求時に実行中のタスクが終了しない場合、タスクを強制的に停止するのチェックマークをOFF
  • タスクが既に実行中の場合に適用される規則を「新しいインスタンスをキューに追加」

実験

1つのタスク内でずらして起動した場合

トリガーA, Bを設定し、BはAの30秒後に起動するように設定した。

この場合、トリガーBのインスタンスはキューに置かれ、トリガーAによって作られたインスタンスが完了次第すぐに起動する

2つのタスクでずらして起動した場合

タスクAをコピーして名前をタスクBに変更して保存する。
タスクAのトリガーA, タスクBのトリガーBを設定し、BはAの30秒後に起動するように設定した。

この場合、後にトリガーされるBの操作は瞬時に正常完了する
WinActor側でエラーコードを吐くことはない。

2つのタスクで同時に起動した場合

タスクAをコピーして名前をタスクBに変更して保存する。
タスクAのトリガーA, タスクBのトリガーBを設定し、BはAと同時に起動するように設定した。

この場合、AとBは並列で起動し、シナリオ通り1分間待機した後に終了する
ただし、あくまで並列実行はサポート対象外なので、今回はExcelの操作など、実際のシナリオで適用した時にどのような挙動をとるかは実験しない。

総括

タスクスケジューラだけで複数のシナリオを任意の時間帯に定期実行するようにスケジュールし、重複した時に順次実行する設定はできない(と考えられる)。
複数のタスク間でインスタンスを共有するための機能があれば良かったのに。

バージョン

Windows 10
WinActor v7.1.0