メニュー

logo

カチシステムはお客様に寄り添った
システム開発と支援サービスを提供し
「やさしい最先端」を創造します。

【第90回】ロータス博士のWinActor塾~色判定Ⅲ

2023.01.10

よし、それでは今回は解答編ということで

実際にシナリオの例を見ながら解説していくぞ。

抜き打ちテストみたいなことやらないんですね。

(助かった・・・)

ん?そうじゃのう。

それもいいかも知れんな。テスト形式のほうがよかったかのう?

いえ結構です!早く進めましょう!

そ、そうか?

では早速、解答例の全体像から見ていこう。

練習問題 色判定でサーバの稼働状況を確認する

前回記事で出題した内容がこちらです。

解答例を見る前に、仕様を再度確認しておきましょう。

シナリオ仕様

 

・図Aのサーバ一覧で、状態が「異常」「停止」の場合にポップアップで通知する。

 その際、異常なのか停止なのかをわかるようにする。

・図Aの場合でも、図Bの場合でもシナリオが正常に動作するように作成する。

 (サーバ台数が変化しても対応できるシナリオにする)

図A

 

図B

 

(参考)状態インジケータのパターン

事前準備とシナリオ全体像

事前準備

今回の例では、疑似的なシステム画面をマッチング対象としています。

画面の代用として画像ファイルを使用していますが、フォト等のアプリケーションで開いてしまうと

画像が中央揃えとなってしまい座標が変化してしまうので、次のようにExcelファイルのA1に貼り付けて使用しています。

 

 

本来であれば、マッチング対象のアプリケーションウィンドウを直接操作するので問題ありませんが

今回は画像で代用しているためこのような準備を行っています。

この例ではExcelを使用していますが、必ずしもExcelである必要はなく、ペイント等で開いても構いません。

 

 

シナリオ全体像

クリックで拡大表示されます。

  • 全体像

 

 

変数一覧

シナリオ詳細

全体像と使用される変数を確認したところで、シナリオの開始から流れに沿って処理を見ていきましょう。

 

準備部分

まずは、色判定を行うターゲットとなる画面を出します。

今回は画面の代用となる画像を貼ったExcelファイルを使用します。

例題には図Aと図Bがありますが、図Aを貼ったExcelファイル名を「パターンA.xlsx」

図Bを貼ったExcelファイル名を「パターンB.xlsx」としています。

 

 

変数「チェック対象画面(ファイルパス)」に初期値として入っているファイルを開き、ウィンドウの表示変更で最大化しています。 

実際に図を貼ったExcel画面は次のようになっています。

 

 

 

繰り返しの設定

今回はサーバ数(チェックの回数)を可変にするために、繰り返し処理で色判定を実行します。 

繰り返しの回数については、無限ループでチェック対象が無くなるまで行う方法と

変数に回数を保持して、適宜初期値を変更して行う方法があります。

この例では後者の初期値を入れて実行する形にしています。

 

 

 

初期値でループ回数を指定するため、繰り返しには条件判定を用いず

回数に変数「チェック回数(最大)」を設定しています。この変数には初期値として3が入っています。

 

 

繰り返しの処理

それでは繰り返しの処理の中を見ていきましょう。

まずは、色判定の対象となる位置を計算で求めます。この計算にも様々な方法がありますが

今回は他のシナリオでも応用できる、ループ回数を使用した方法を紹介します。

 

では計算について詳しく解説します。

そもそも初回の判定位置がどこなのかを調べてみましょう。次の図を見てください。

 

 

繰り返し1回目の判定対象となるAサーバのインジケータの位置はx:374,y:282となっていました。

さらにここから2回目の判定対象であるBサーバのインジケータの位置を調べます。

横の位置はどのインジケータも同じなので、x座標に変化がないことがわかります。

y座標だけをずらしていけば判定が取れそうですね。次のインジケータまでの距離は次のようになります。

 

 

1回目で調べるy座標の位置が282pxでしたので、52pxを足せば次に調べるべきy座標が求められます。

従って、2回目の色判定の位置はx:374,y:334ということになります。 

 

これを表にまとめると

 

 

このようになります。

これを見ると、毎回行うべき計算はy座標を+52pxしていくだけということがわかります。

このままシナリオにこの計算を組み込んでも良いのですが、せっかくなので今回は違った方法で計算してみましょう。

 

この方法でも間違いではないぞ。

次に紹介する計算方法は、チェック開始位置に縛られないやり方じゃ。

チェック開始位置ってどういうことですか?

毎回+52するだけの計算では、3回目だけの結果が欲しいといったときに対応できないのじゃ。

必ず1ループ目から足しこんでいく必要があるからのう。

じゃがそれを可能にする方法があるのじゃ。それがこのやり方じゃ。

繰り返し1回目、2回目を飛ばしていきなり3回目の結果が欲しいといったときにでも対応するためには

計算式に繰り返し回数を入れることで実現できます。これをうまく行うコツは、繰り返し回数を0開始で考えることです。

次の図を見てください。 

 

 

繰り返しを0回目から開始と考えると、y座標をずらす量は繰り返し回数との掛け算で求められます。

初期位置が282pxなので、これは毎回足してあげる必要があることに注意しましょう。式は次のようになります。

 

Y座標 = 52 * 繰り返し回数 + 282

 

このように計算することで、例えば3回目の結果が欲しいといった場合でもすぐに位置が求められます。

ちなみにこの式に出てくる「Y座標」「52」「繰り返し回数」「282」の数値はそれぞれ変数として用意してあります。

式を変数名に直すと

 

取得座標(Y) = Y座標ズレ幅 * チェック回数(現在) + 取得座標(Yオフセット) 

 

となります。

これを四則演算ノードで2回に分けて計算しています。シナリオを見てみましょう。

 

 

今回の仕様は必ず上から順にチェックしていくため、このような計算はしなくてもよい。

しかしこの方法は様々なシナリオに応用できるため、できれば覚えて欲しいのじゃ。

へえー。0回目開始にして掛け算かあ。

これは目からウロコかも。

さて、ここまで計算できましたが、このままでは色判定に使用できません。

色判定で位置を指定するには

 

X座標,Y座標

 

という形式にする必要があります。計算結果をもう一工夫しましょう。

こういったときには文字列結合が便利です。

 

 

単純に取得座標(X)と取得座標(Y)の間にカンマを入れて結合します。

取得座標(X)には初期値として374が入っており、この値は繰り返し回数によって変化しません。

そのため計算不要でそのまま結合できます。

 

連結した結果は変数「取得座標」に格納されます。

繰り返し初回時の連結結果は374,282となります。

 

これで色判定を行う準備が完了しました。

それでは色判定の設定を見てみましょう。

 

 

 

ウィンドウ識別名に設定しているのは準備部分で開いたExcel画面です。このウィンドウ識別名はルールを多少変更しています。

今回はサーバ台数が異なる図Bもあるため、Excelファイルも「パターンA.xlsx」「パターンB.xlsx」の2つに分けています。

この名前に違いによるウィンドウタイトルの変化に対応するため「パターン」から始まるExcelウィンドウを拾うように設定しています。

 

 

位置にはy座標の計算後にx座標と結合した結果の「取得座標」を

色には結果格納用として準備した変数「取得色」をそれぞれ設定しましょう。

その他はデフォルトのままで問題ありません。

 

色判定ができたら判定部分を作成します。

これは単純に取得した色コードで処理を分けるため、多分岐ノードを使いましょう。

 

 

 

停止(暗い赤)のインジケータ色は「d60000」

異常(赤)のインジケータ色は「ff0000」です。

 

上図のように条件式を設定し、色によって処理が分かれるようにします。

待機ボックスにはそれぞれ「停止しました」「異常があります」などのメッセージが表示されるように設定しましょう。

 

繰り返しの最後には忘れずにループ回数を加算しましょう。

繰り返しノードのカウンタに変数を設定すると自動的に加算されますが、その機能を使うと回数は1からの開始となってしまいます。

今回は繰り返し回数を0からにしたいので、カウンタは使用しません。

そのため最後にしっかりと自分でカウントを+1してあげる必要があります。

 

 

ここで変数「チェック回数(現在)」を+1しています。

 

 

後処理

繰り返し処理が終わったら、メインの処理は終了です。

残りは後片付けだけですので、開いたExcelファイルを閉じて終了しましょう。

 

実行結果

実行結果を見てみましょう。

まずは図A(サーバ台数が3)の場合です。

 

画面はこちらです。

 

 

実行結果は次のように、2回ポップアップが表示されました。

わかりやすいように、検出時のループ回数を表示しています。

 

 

 

0番目(Aサーバ)が「停止」、2番目(Cサーバ)が「異常」と表示されています。

しっかりと動作していますね。

 

では別パターンの図B(サーバ台数が4)のときも見てみましょう。 

画面はこちらです。

 

 

これは実行前に全体のチェック回数と、開くファイルを変更する必要があります。

次の変数一覧の赤枠部分を変更しています。

 

 

変更するのは変数の初期値のみで、シナリオには一切変更を行いません。

実行結果は次のようになります。

 

 

 

画面と見比べてみてどうでしょうか。

しっかりと判定できていますね。

 

みなさんのシナリオはどうでしたか?

今回の問題のポイントは、y座標の計算と、x座標との結合です。

この2つを抑えれば色判定は問題なく実装できるでしょう。

 

実行結果が上記のようになっていれば成功です。

 

 

シナリオダウンロード

今回の解答例シナリオはこちらからDL可能です。

 

第90回WinActor塾_解答例 (28KB)

 

※ファイルの解凍には会員用パスワードが必要となります。会員登録はこちらから。

ロータス君のシナリオはなぜかうまく判定できんかったのう。

あ、言っちゃいましたね。僕のイメージダウンになるじゃないですか。

僕のシナリオは色コードがちょっと間違ってたみたいです。

色コードはWinActorの色判定で実際に取った値を使うのが良いぞ。

他のツール等で取ったコードと完全に一致するという保証はないのでな。

罠か・・・。

いや、罠ではないが。

次回はまた新しいものに挑戦してみようかのう!

それでは今回はこれにて解散!

関連記事こちらの記事も合わせてどうぞ。

最近の記事

カテゴリ

PAGETOP