WinActorをタスクスケジューラで自動起動する その2

2019年10月18日

前回のつづきです。

全体を例外処理グループで囲む

タスクスケジューラで自動起動するため、例外発生時に処理を止めたくありません。

アクション例外のなかでは、エラー情報の収集とメール通知を行います。

エラー情報収集ライブラリを追加

エラー情報収集ライブラリ.ums6を追加すると、例外処理グループが追加されました。アクション例外のところにエラー情報収集ができました。今回はこれを左の正常系に移動して使います。例外処理グループ(エラー情報収集のほう)はそのまま残します。

シナリオを実行すると、途中で例外処理が発生し、アクション例外(の正常系)のなかの処理に移行します。

エラー情報表示のダイアログは消しました。

また、エラー発生時にビープ音とログを出力するようにしました。

エラー情報収集のなかでエラー

エラー情報収集の処理でメール送信をしていますが、ここでエラーが発生した場合は、なにもできないので、アクション例外で、エラーを出力して終わりです。

2019/10/18 追記
実際にエラーが起きたときに不具合がありました。ここで、「WinActor終了」を入れないと、WinActorが起動しっぱなしでした。

画面キャプチャしてメール送信

エラー時の画面をキャプチャして、ファイルを保存します。

保存したファイルを添付し、エラー通知用のメールを送信します。メール本文の作成箇所は省略しますが、テンプレートのテキストファイルを読み込み、シナリオ名、開始日時、エラー発出ノード名、エラー発出ノードID、エラーメッセージの変数の値を設定しています。

すべてのシナリオを同じ構成で作成

正常系の処理を3つのグループに分けました。「開始処理」と「業務処理」と「終了処理」です。
シナリオごとに「業務処理」のグループのみを変更するようにしました。

保守性が向上しましたが、いくつか問題がありました。

・「開始処理」と「終了処理」に不具合があったときに、すべてのシナリオを修正しなくてはいけない。
・すべてのシナリオにはないが、半分ぐらいのシナリオで共通の処理がいくつかある。
 →この共通の処理もシナリオごとに持っているので修正時にすべて修正しなくてはならない。

現在の構成

シナリオを3つに分けました。

シナリオごとのバッチファイル.bat →CSVファイル生成

 ↓Start

開始処理.ums6 ←CSVファイル読み込み

 ↓シナリオGoto

シナリオごとの業務処理.ums6 ←変数引き継ぎ

 ↓シナリオGoto

終了処理.ums6  ←変数引き継ぎ

共通処理は開始処理.ums6と終了処理.ums6に詰め込んで、CSVのパラメーターで共通処理を実行するかどうかを判定しています。開始処理.ums6からシナリオGotoする業務処理.ums6のファイル名もCSVにパラメーターとして持っています。

デメリットはバッチファイルからしか起動できないので、手動実行するときにたまに間違えて違うバッチファイルを起動してしまうのと、デバッグがしにくいかも。

以上です。

Systemrpa, winactor

Posted by zzz