プロセスの任意実行 (2) API呼び出し実行
どもども、ジャナイホーによるシリーズ
「プロセスの任意実行。~ もう、約束の時間を待つばっかりは、いやなの。私から、私のタイミングで、始めたいの。~」
第二弾。APIとして公開し、実行する方法について、です。
プロセスの公開
Blue PrismプロセスをWeb Services APIとして呼び出せるようにするには、システムマネージャ画面でプロセスを公開してやる必要があります。
公開は、システム > プロセス > 公開からです。
公開するプロセスは、大きくて複雑で時間がかかる処理を行うような実装になっていると、本番運用時に問題になりやすいです。
せっかくWeb Service化して、多数のリクエストを受け付けられる仕組みなのにもかかわらず、そのようなプロセスがランタイムリソースやライセンスを占有してしまい、結果、スケールできない、といったことが発生します。
そんなことにならないように、事前に是非、設計ベストプラクティスを参照して、小さいシンプルなプロセスで受け付ける設計・実装を検討してみて下さい。
公開されたプロセスの実行
あとは、Blue Prismプロセスを呼び出すプログラムを作ってやる必要があります。Javaとか、Windows .Net C#とか、curlとか、Pythonとか、PHPとかで構築します。
Web Servicesのドキュメントに詳しくいろいろ書いてあります。VB.NETのサンプルコードもついてます。
。。。さくっと流しましたが、つまり、ですね。。。
プロセスの公開までは、ちょー簡単なのですが、それを呼び出すプログラムを作る、となると、プログラミングテクニックが必要となります。なぜなら、コントロールルームの画面のような、ユーザが操作する画面とかをイチから作り上げることになるからです。。。。
。。。これだけだと、なんだか申し訳ないので、今回はこんなのも用意してみました。
ランタイムリソースPCへのHTTPアクセス
前述のコマンドライン実行では、Blue Prismがインストールされたマシンにログインして、AutomateCを実行してやる必要がありました。これに対して、Blue Prismがインストールされていないマシンから、ブラウザ上でプロセスを開始する手順があります。
ちょいと複雑で、かつ、味もそっけもないインターフェースですが、試してみましょう。
HTTPアクセスの事前設定
セキュリティレベルを下げる手順なので、推奨しませんが、ここでは、簡単にプロセス実行まで到達させるために、以下の設定を施します。
システムマネージャ画面の「設定」から、「ランタイムリソースコネクティビティ」の中にある、「セッション管理でユーザーを制御する許可を実行(推奨)」のチェックボックスをオフにします。
(英語ですと、「Session Management enforces permissions of controlling user (recommended)」になっています)
ブラウザからHTTPでランタイムリソースにアクセスしてプロセスを実行してみる
ブラウザのURL欄に以下のような文字列を入力します。
http://<ランタイムリソースホスト名>:8181/user%20name%20<ユーザ名>&password%20<パスワード>&busy
(上記と後述のサンプルではすべて、それぞれ、<ランタイムリソースホスト名>、<ユーザ名>、<パスワード>のところをお使いの環境に合わせます。ランタイムリソースのポート番号をデフォルトの8181と仮定して書いています。また、ブラウザ入力欄にはスペース文字は%20というコードで置き換えてやる必要があるので、そのように記載しています。)
ここで「busy」というコマンドは、そのランタイムリソースが他のプロセスを実行しているとか接続が出来ない状態かどうかを問い合わせるコマンドです。
では次に、プロセス実行用のセッションを作ってみます。「create name <プロセス名>」というコマンドを利用します。これは、コントロールルームの画面で、プロセスを実行させたいリソース上へドラッグアンドドロップするのと同じ操作です。上手く行くと、「Pending」状態でセッション管理画面にリストアップされますよね。
http://<ランタイムリソースホスト名>:8181/user%20name%20<ユーザ名>&password%20<パスワード>&create%20name%20<プロセス名>
この時点で、コントロールルームのセッション管理画面上にも表示されるはずです。見てみましょう。
はい。では、いざ、プロセスを開始!
手っ取り早く「start last」というコマンドを使います。
http://<ランタイムリソースホスト名>:8181/user%20name%20<ユーザ名>&password%20<パスワード>&start%20last
はい、では、状況を見てみましょう。「status」コマンドです。
http://<ランタイムリソースホスト名>:8181/user%20name%20<ユーザ名>&password%20<パスワード>&status
先ほど、セッションを作成した時点で表示されたセッションIDがステータスとともに表示されているはずです。
HTTPアクセスのコマンド
ここで紹介したコマンドは簡易的に手っ取り早く実行するものです。他にもいろいろありますし、事前設定で施した「非推奨」のオプションを推奨オンにした場合に指定出来るコマンドもあります。(非推奨の設定のままだと、セキュリティリスクになります。)
詳しくは、Blue Prismのオンラインヘルプから「リソースPCコマンド」を検索してください。
また、リソースPC名を指定するので、このままですと、スケールし難い点は、コマンドライン実行と同じです。
そのあたりがデメリットですかね。。。
この機能についてのTips文書もカスタマーサポートのサイト(サポートセンター)にあります。参考にしてみて下さい。
まとめ
Blue PrismのWeb Service APIを利用して、プロセスを実行するには、先ず、Blue Prismのシステムマネージャ画面で、プロセスを公開する設定を施します。
その上で、公開されたプロセスをキックする、外部プログラムを構築する必要があります。
ランタイムリソースの空き状況も確認できるようにするなど、外部プログラムや画面をがっつり作りこめば、ユーザーフレンドリーな任意実行環境を構築することが出来ます。
これに加えて、ここでご紹介したような、「Blue Prismをインストールしていないマシンのブラウザから、ランタイムリソースPCに直接アクセスして、簡易的にプロセスを開始する」手段もあります。
これらの方法は、ユーザに実行のタイミングを任せたい、でも、各端末にわざわざBlue Prismをインストールしたくない、といった要件を満たせます。