コンテンツにスキップ

WinActor実行サンプル[プロセス判断]

robosteinでWinActorの実行を制御、管理する場合のサンプルフローです。
制御はプロセスの存在での判断をする方式になります。

サンプルフロー


[{"id":"73a7af2d.c1a69","type":"clagent-run","z":"93959c56.16899","name":"PowerShell実行","command":"exec","listout":"payload","listoutType":"msg","statout":"payload","statoutType":"msg","getfilename":"","getfilenameType":"str","getfileout":"","getfileoutType":"msg","getfilebytes":false,"putfilein":"","putfileinType":"bin","putfilename":"","putfilenameType":"str","putfileout":"","putfileoutType":"msg","execps":"powershell","execpsType":"msg","execout":"payload","execoutType":"msg","execonconsole":true,"rpaproduct":"","rpaproductType":"str","rpaout":"","rpaoutType":"msg","target":"hostId","targetType":"msg","x":940,"y":180,"wires":[["9e25d795.1f66b8"]]},{"id":"6d1f4dbb.5ebb14","type":"clagent-psbuild","z":"93959c56.16899","name":"WinActor実行スクリプト","template":"","scripts":"# ファイルパスを指定します\n$file_path = '${msg.winactorExePath}'\n\n# 引数を指定します(-f [対象ums5ファイル] -r -e)\n$arg = '-f ${msg.winactorScenarioPath} -r -e'\n\n# WinActorを起動します\n$proc = Start-Process $file_path $arg -PassThru\n","scriptsout":"powershell","scriptsoutType":"msg","append":false,"x":690,"y":180,"wires":[["73a7af2d.c1a69"]]},{"id":"3c0f7a46.331fa6","type":"inject","z":"93959c56.16899","name":"WinActor実行","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":150,"y":180,"wires":[["893b9287.ca875"]]},{"id":"5b0234d4.5e044c","type":"corobo-trigger","z":"93959c56.16899","name":"正常終了","status":"1","statusType":"num","x":580,"y":420,"wires":[]},{"id":"73c5e04c.b88fd","type":"switch","z":"93959c56.16899","name":"ステータス判断","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"Exist","vt":"str"},{"t":"else"}],"checkall":"false","repair":false,"outputs":2,"x":380,"y":400,"wires":[["1e5683e5.8be14c"],["5b0234d4.5e044c"]]},{"id":"908228c6.0e3788","type":"delay","z":"93959c56.16899","name":"10秒待機","pauseType":"delay","timeout":"10","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1040,"y":360,"wires":[["793d58f9.1fea98"]]},{"id":"795974d1.2e1a4c","type":"function","z":"93959c56.16899","name":"ループ初期化","func":"msg.loopcount = 0\nreturn msg;","outputs":1,"noerr":0,"x":380,"y":260,"wires":[["793d58f9.1fea98"]]},{"id":"955a9af9.6e0998","type":"function","z":"93959c56.16899","name":"カウントアップ","func":"msg.loopcount = msg.loopcount + 1\nreturn msg;","outputs":1,"noerr":0,"x":820,"y":360,"wires":[["908228c6.0e3788"]]},{"id":"1e5683e5.8be14c","type":"switch","z":"93959c56.16899","name":"ステータス判断","property":"loopcount","propertyType":"msg","rules":[{"t":"lt","v":"10","vt":"str"},{"t":"gte","v":"10","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":600,"y":380,"wires":[["955a9af9.6e0998"],["23181d4a.f9b982"]]},{"id":"822e0212.c28f1","type":"corobo-trigger","z":"93959c56.16899","name":"時間待エラー","status":"2","statusType":"num","x":1280,"y":400,"wires":[]},{"id":"c3ca907b.a1ed3","type":"slack-webapi","z":"93959c56.16899","name":"","token":"cf875b9d.5cf608","channel":"CJMLKF2KG","channelType":"str","class":"postMessage","posttext":"WinActorが止まってます!","posttextType":"str","posticon":":robostein:","posticonType":"str","attachments":"","attachmentsType":"str","file":"screenshot","fileType":"str","filename":"SS","filenameType":"str","filetype":"auto","filetypeType":"str","filecomment":"先ほど取得したスクリーンショットです。","filecommentType":"str","x":1260,"y":440,"wires":[]},{"id":"2d466304.83cabc","type":"clagent-run","z":"93959c56.16899","name":"PowerShell実行","command":"exec","listout":"payload","listoutType":"msg","statout":"payload","statoutType":"msg","getfilename":"","getfilenameType":"str","getfileout":"","getfileoutType":"msg","getfilebytes":false,"putfilein":"","putfileinType":"bin","putfilename":"","putfilenameType":"str","putfileout":"","putfileoutType":"msg","execps":"powershell","execpsType":"msg","execout":"payload","execoutType":"msg","execonconsole":true,"rpaproduct":"","rpaproductType":"str","rpaout":"","rpaoutType":"msg","target":"hostId","targetType":"msg","x":860,"y":260,"wires":[["dd2ce274.8b108"]]},{"id":"793d58f9.1fea98","type":"clagent-psbuild","z":"93959c56.16899","name":"WinActorプロセス確認","template":"","scripts":"# WinActorのプロセスを確認\n$process = Get-Process -Name WinActor -ErrorAction SilentlyContinue\nIf ($process){\n     Write-Host \"Exist\" \n} Else{\n     Write-Host \"Not Exist\" \n}\n","scriptsout":"powershell","scriptsoutType":"msg","append":false,"x":620,"y":260,"wires":[["2d466304.83cabc"]]},{"id":"9e25d795.1f66b8","type":"delay","z":"93959c56.16899","name":"5秒待機","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1140,"y":180,"wires":[["795974d1.2e1a4c"]]},{"id":"dd2ce274.8b108","type":"function","z":"93959c56.16899","name":"プロセス状態の取得","func":"msg.payload = msg.payload.stdout[0]\nreturn msg;\n","outputs":1,"noerr":0,"x":1100,"y":260,"wires":[["73c5e04c.b88fd"]]},{"id":"2546dac5.3dbe16","type":"clagent-run","z":"93959c56.16899","name":"PowerShell実行","command":"exec","listout":"payload","listoutType":"msg","statout":"payload","statoutType":"msg","getfilename":"","getfilenameType":"str","getfileout":"","getfileoutType":"msg","getfilebytes":false,"putfilein":"","putfileinType":"bin","putfilename":"","putfilenameType":"str","putfileout":"","putfileoutType":"msg","execps":"powershell","execpsType":"msg","execout":"payload","execoutType":"msg","execonconsole":true,"rpaproduct":"","rpaproductType":"str","rpaout":"","rpaoutType":"msg","target":"hostId","targetType":"msg","x":1060,"y":400,"wires":[["822e0212.c28f1"]]},{"id":"23181d4a.f9b982","type":"clagent-psbuild","z":"93959c56.16899","name":"WinActor強制終了","template":"","scripts":"# WinActor.exeのプロセスを強制終了\ntaskkill /f /t /im WinActor.exe\n","scriptsout":"powershell","scriptsoutType":"msg","append":false,"x":830,"y":400,"wires":[["2546dac5.3dbe16"]]},{"id":"893b9287.ca875","type":"change","z":"93959c56.16899","name":"各種ファイルパスを設定","rules":[{"t":"set","p":"hostId","pt":"msg","to":"","tot":"str"},{"t":"set","p":"winactorExePath","pt":"msg","to":"C:\\\\Program Files (x86)\\\\WinActor\\\\WinActor.exe","tot":"str"},{"t":"set","p":"winactorScenarioPath","pt":"msg","to":"C:\\\\Users\\\\Administrator\\\\Desktop\\\\rs_demo\\\\WinActor\\\\winactor_demo_simple.ums5","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":180,"wires":[["6d1f4dbb.5ebb14"]]},{"id":"643a7289.01392c","type":"e-mail","z":"93959c56.16899","server":"smtp.gmail.com","port":"465","secure":true,"tls":true,"name":"","dname":"","x":1250,"y":480,"wires":[]},{"id":"3ef7e074.a6b89","type":"schedule","z":"93959c56.16899","name":"","triggers":[],"periods":[],"x":150,"y":220,"wires":[[]]},{"id":"f66479d2.435928","type":"comment","z":"93959c56.16899","name":"WinActor実行サンプルフロー[プロセス判断]","info":"各種ファイルパスには以下をいれてください\nhostid=実行ホストのID(エージェントID)\nwinactorExePath=winactorの実行(exe)ファイルパス\nwinactorScenarioPath=winactorのシナリオ(ums6など)のファイルパス\n","x":230,"y":100,"wires":[]},{"id":"cf875b9d.5cf608","type":"slack-oauthtoken","z":"","name":"demorobostein","token":"xoxb-131648894068-651731749953-rjuoQNUp0noPn6DFnFd4cQXF"}]

上記を設置すると以下のようなフローが表示されます。 winactorノード

解説

このサンプルフローの場合、Winactorの実行状態をプロセスの有無で確認しています。
そのためシナリオファイルに手をくわえずに実行管理がおこなえるというメリットがあります。 設定としては通常そのシナリオが動作した場合の想定時間を決め、その時間以上にプロセスが存在した場合にエラーとして判断する。 という方式となりますので正確な稼働状態の判定ではなく、簡易的な判断となります。
なお、詳細に状態を判断したい場合は[状態ファイル]を見て判断する様なサンプルフローも用意していますのでそちらをご参考ください。

設定

各種ファイルパスには以下をいれてください

  • hostid=実行ホストのID(エージェントID)
  • winactorExePath=winactorの実行(exe)ファイルパス
  • winactorScenarioPath=winactorのシナリオ(ums6など)のファイルパス

また、サンプルでは[ステータス判断]ノードで10回以上ループした場合にエラーとしています。その後のノードで10秒待機のノードと合わせると 100秒以上処理に時間がかかっていた場合にエラー。という事になります。もしこの条件を変えたい場合は[ステータス判断]ノードの回数を変更してください。

トリガーと出力

サンプルフローには、紐ついていない「スケジュール」ノードや「Slack送信」ノードなども置いてあります。
トリガーとして手動ではなくスケジュール実行させたい場合や、実行結果をSlackやメールなどに送信する場合に利用してください。

デバッグノード

サンプルフローにはデバッグノードを設置していません。
動作を確認する際にはデバッグノードを好きな位置に設置し、デバッグ表示をしつつ動作の確認をしてください。

これを使って

このサンプルフローを参考にし、

  • Winactorの実行管理

など、パーツとしての利用やフロー作成の参考にしてください。