![見出し画像](https://assets.st-note.com/production/uploads/images/67237212/rectangle_large_type_2_981dc7b3b7541b9a4b552aa13049ed77.png?width=1200)
プロセスの任意実行 (1) コマンドライン実行
どもども、ジャナイホーによるシリーズ
「プロセスの任意実行。~ もう、約束の時間を待つばっかりは、いやなの。私から、私のタイミングで、始めたいの。~」
第一弾。コマンドライン実行について、です。
実行の仕方 - AutomateC.exeの実行
Blue PrismプロセスをWindowsコマンドラインから実行するには、AutomateC.exeというプログラムを使います。
例えば、下記のようなコマンドを入力します。
"C:\Program Files\Blue Prism Limited\Blue Prism Automate\AutomateC" /run "bp_test10"
/resouceで、/resource localhost:8182/user admin のように、動作するランタイムリソースを選べます。
![](https://assets.st-note.com/img/1638405499075-iRiH1sf6fn.png)
AutomateCのコマンドライン実行には、色々なオプションを指定出来ます。頻繁に使うのは、以下でしょうかね。
/run … 実行したいプロセス名称を指定します。
/resource … 特定のラインタイムリソースで実行します。
/user … Blue Prismにログインするユーザアカウントを指定します。このユーザでプロセスが起動されます。ユーザ名の後ろにパスワードも指定します。(/ssoというオプションも指定可能です。)
/startp … プロセスが起動する際に必要とするパラメータ(もしあれば)の値を指定します。
/status … 実効後出力されるセッションIDをもとに、その指定したセッションIDのプロセスの実行状況を表示させます。
/getlog … 指定したセッションIDのプロセスが出力したセッションログを表示させます。
/dbconname … 接続先データベースコネクションを指定します。
/startschedule … 前述の/runオプションでプロセス名を指定して起動するのではなく、スケジュール名を指定してそのスケジュールに設定されたプロセスを実行する形で起動します。
その他、指定できるコマンドラインオプションの仕様については、ヘルプメニューの検索窓から「コマンドラインオプション」と検索すると確認いただけます。
![](https://assets.st-note.com/img/1638406326624-eUmmuHKr4G.png?width=1200)
![](https://assets.st-note.com/img/1638406419095-y5yhtXt1Ke.png?width=1200)
また、Version6.5から「/help」と指定して実行すると表示される情報も日本語化されています。
いつも同じオプションを指定して、プロセスを実行するAutomateC.exeを毎回、Windowsコマンドプロンプトからたたくのではなく、これを記載したバッチファイル(.bat)をデスクトップ上に作っておく、という手もあります。
プロセスを実行したいときに、ユーザがこのバッチファイルをダブルクリックすれば、プロセスが実行される、という訳です。(あ、この実行マシン上にBlue Prismがインストールされていないとダメですよ、念の為。)
![](https://assets.st-note.com/img/1638406617556-yrxZVlPDYD.png)
![](https://assets.st-note.com/img/1638406628036-0r7n8tHv6I.png)
AutomateC.exe 実行結果の出力
正常に実行された場合
AutomateCをコマンドラインから実行した結果、出力される内容は主にこんな感じです。
先ず、正常にプロセスが起動した場合、以下のような結果が出力されます。
Started process:bp_test10
Resource:BP0483
Actual resourceBP0483:
Session:84213dbc-ae46-4cfd-bbed-730d6ea78888
Session(セッションID)にて、当該プロセスの実行状況をユニークに特定し、ログや結果を参照することが出来ます。
Resource/Actual resourceにて、実際にプロセスが実行されたランタイムリソースの名称を特定することが出来ます。
ここで、一つ注意して頂く点があります。
AutomateCを実行して数秒後に上記のような結果が返ってきますが、これは、プロセスが完了したことを示しているわけではありません。AutomateC(Blue Prism)が「取り敢えず、指定されたプロセスに実行依頼かけたよ」と返事をしてくれただけだと解釈して下さい。決して「プロセスが完了したよ」と言ってくれているわけではありません。
なので、プロセスの実行完了状況やログの内容、進捗、例外発生有無を見るには、コントロールルームを開いてみるか、もしくは、先述のオプション「/status」「/getlog」を指定して、AutomateCを実行してみる、ということになります。
![](https://assets.st-note.com/img/1638406832915-61R0ogceG6.png)
![](https://assets.st-note.com/img/1638406840055-os11nJwFkU.png)
正常に実行されなかった場合
もし、AutomateCがプロセスの起動に失敗した場合、以下のようなメッセージが出力されます。
BluePrismのログインユーザアカウントもしくはパスワードが不正の場合:
Login failed: The username or password supplied were not valid. Please try again
プロセス名称が不正などで、プロセスが見つからない場合:
Error: process ‘bp_test1a0’ does not exist
ランタイムリソースが他のプロセス実行中あるいは待機中、ライセンス不足などで、実行できない場合:
Error: failed to create session - UNAVAILABLE
正常時の注意点で示したのと同様、プロセス内で発生した例外処理は、上記のメッセージではキャッチできません。/getlogオプションを利用するか、コントロールルームでセッションログを確認する必要があります。
プロセスに引数(パラメータ)の値を渡したい
もし、構築したプロセスにスタートアップパラメータを指定するようになっている場合、
![](https://assets.st-note.com/img/1638407123510-oBDLLlFPY8.png)
![](https://assets.st-note.com/img/1638407132470-SsfFC6cGB2.png)
AutomateC実行時に「/startp」パラメータを指定します。
/startp “<inputs> <input name=’Arg1’ type=’text’ value=’Val1’ /> <input name=’Arg2’ type=’text’ value=’Val2’ /> <inputs>”
注意点
AutomateC実行用ユーザアカウント
コマンドラインから実行するBPユーザアカウントは、実行時にコマンドラインにてプレーンテキスト(平文)で指定する必要があります(「/user ユーザ名 パスワード」って感じに指定する部分ですね。但し、これは、「/sso」オプションを指定する際は不要です。)。
これはあまりセキュリティ上、好ましくありません。
これに対応するには、以下の役割を設定した、コマンドライン実行専門のユーザアカウントを準備することで、少しでも安全な状況にしておくことが出来ます。
Blue Prismのデフォルトで用意されている「役割」にRuntime Resourcesというものがありますので、これを付与したユーザアカウントを用意しておくと、最低限の実行権限のみ付与された状態となります。このユーザをコマンドライン実行用に公開しましょう。
![](https://assets.st-note.com/img/1638407610943-r6KaxsNm7J.png?width=1200)
スケールし難い
このAutomateCを実行するコマンドライン実行を、ユーザに任意実行をさせる仕組みとして、ユーザに公開するデメリットとして、「スケールし難い」という大きな問題点があります。
小規模な環境(Blue Prismがインストールされているマシンが少ない、動かすプロセスも数はそれほど多くない、ライセンスも少ない、といったような環境)で、ある程度、近くのひとなどで実行やメンテナンスにおいて、融通が利くようなケース、スモールスタートしている場合などで、比較的手っ取り早く、任意実行を実現するには、有効な手段です。
ただ、実行させたいプロセスが増えていったときに、管理の手間が半端なく誰かの作業を圧迫することになります。
ユーザからのニーズは確実に増えていきます。
やれ「終わったら教えて欲しい」だの、やれ「ログが分かり難い」だの、やれ「ちょっといじったら上手く動かない」だの、「使いたいと思った時に、ライセンスかリソースが一杯で使えない」だの、、、
そうなったときに、いずれかのタイミングで、この方式を卒業することを考えなくてはならないこともあるかもしれません。
先ずはその点だけ、頭の片隅に入れておいて頂けると、私は、嬉しいです。
まとめ
AutomateC.exeによるコマンドライン実行は、「任意実行」に対する簡易的なシンプルなソリューションです。
様々なオプションを指定可能です。
バッチファイルとして作成しておいて、簡易実行させる仕組みを作れます。
ユーザに実行のタイミングを任せたい、緊急で、即時実行したいというニーズがある、コントロールルームをユーザに公開したくない、といった要件を満たせます。
また、他のシステムから呼び出したい、という要件に対する、一つの有効な手段でもあります。
Slackやチャットボットとの連携として利用することも可能です。
それを実現した素晴らしい記事を紹介します。
おぉー。
※本投稿は、別ブログで掲載・公開していた内容に加筆・修正を加え再掲載しています。