Blue Prism でダイアログをアタッチする際に PID を指定する
こんにちは、「レッドブーツ88」です。
Blue Prism で Web アプリを自動化する際にダイアログ画面に対してアタッチを実施する必要がありますが、状況によってはアタッチ処理に時間が掛かる場合があるため、PID のみを指定することでアタッチ時間を短縮できそうな情報を紹介いたします。
Utility - Environment VBO の [Start Process Read Stderr and Stdout] アクションを用いると外部コマンドを実行することが可能ですが、外部コマンドの引数の指定方法を考慮すると1行スクリプトを実行することも可能です。
この場合のメリットとしては、Blue Prism から呼び出す外部スクリプトを別途用意する必要がなくなるため、開発者/管理者が考慮するべきモジュールを減らせると言うことが考えられますかと思います。
1行スクリプトを用意
以下のように cmd.exe の引数となる形式でウィンドウタイトルとプロセスを検索し、PID を取得する1行スクリプトを用意します。
"/C ""@echo off && for /f ""tokens=2 delims=, usebackq"" %i in (`tasklist /v /nh /fo csv /fi ""IMAGENAME eq " & [プロセス名] & """ ^| findstr /r " & [ウィンドウタイトル] & "*`) do (echo %~i)"" "
ここでのポイントは、1行スクリプトの中でどうしてもダブルクォーテーションを指定しないといけない箇所については、以前のエントリでも紹介している方法で対応します。(ダブルクォーテーションを2回続けているだけですが…)
PID のみを指定しアタッチを実施
1行スクリプトが取得した PID を指定ながら操作ステージでアタッチを実施します。ウィンドウタイトルやプロセス名を指定していないので爆速(多分)でアタッチできるかと思います。
アタッチさえ出来てしまえば、あとは通常の手順でいろいろと自動化が楽しめます。
注意点
なお、上記の1行スクリプトでは日本語のウィンドウタイトルを指定するとエラーとなってしまったので、上手くワイルドカードを活用したり、内部的にウィンドウタイトルを SJIS に変換するなどのもうひと工夫が必要そうです。
まとめ
- Utility - Environment VBO を活用すると1行スクリプトが実行可能です
- 1行スクリプトの中で複数のコマンドを繋げることも可能です
- 最終的にスクリプトの実行結果を Stdout や Stderr として取得することが可能です
個人的にこの仕組みを利用すると Unix のパイプ渡し的に複数コマンドを繋げたり、昔で言うところの CGI、今風に言うとサーバーレスアーキテクチャ的に既存コマンドの再活用が可能となるので、Blue Prism を RPA 製品ではなくシステム連携製品のように活用できるのではと考えております。
最終的にはシステム運用時に手動で実施している各コマンドの実行作業を Blue Prism で自動化するような用途で活用いただけますと幸いです。