見出し画像

Blue Prismの1つのリソースで同時にキュー受付と業務処理を実施する

こんにちは、「レッドブーツ88」です。

たまたまネットでジェイコブ・コリアーさんと言う1人多重録音の天才アーティストの動画をYouTubeで観てみたら、超絶絶対音感の持ち主で様々な楽器を恐ろしいレベルで操るマルチプレイヤーと言うことに凄く驚きました。昔から多くのマルチプレイヤーのアーティストが居ましたが、ジェイコブ・コリアーさんは各楽器の演奏能力が尋常ではないです。(と言ってもグラミー賞を受賞されている凄く有名な方のようで私が知らなかっただけですが…)

さて今回は、驚きついでに、実行リクエストを蓄積する機能を用いてBlue Prismの1つランタイムリソースで同時にキュー受付と業務処理を実施する方法について紹介したいと思います。この機能を駆使すると1つのラインタイムリソース環境でも多くのことが実現できるのでかなり驚きました。

プロセスが利用するオブジェクトの実行モードを [バックエンド] または [フォアグランド] に設定することで複数リクエストを受け付けることが可能なのですが、ワークキューへ登録する際に利用する内部VBOにはそのような定義を行う画面がないため、念のため、以下のような手順で動作確認を実施してみました。

リクエストを受付けてワークキューへ登録するプロセスを用意

外部アプリから注文情報を受付け、ワークキューへ登録し、アイテムID を受付番号として呼び出し元へ戻すプロセス(リクエスト受付エンキュープロセス)を用意します。(処理が滞留するように途中で20秒スリープするようにしています)

業務プロセスが利用するオブジェクトの実行モードを [排他的] 以外に変更

業務プロセス(ここではSalesforceと連携するデモプロセスを活用)が利用する [Salesforce] オブジェクトの実行モードを [フォアグランド]、もしくは [バックグラウンド] へ変更します。

その他にも業務プロセスが製品に付属するExcel VBOを利用していたため、一旦、[MS Excel VBOフォアグラウンド処理] と言う名称で別名保存しコピーを作成します。そのコピーした側の実行モードを同様に [フォアグランド]、もしくは [バックグラウンド] へ変更します。
(補足)業務プロセスから呼び出すVBO名の変更も必要です。

業務プロセスとリクエスト受付エンキュープロセスを同時に実行

業務プロセスを実行中にリクエスト受付エンキュープロセスを複数回実行します。ここではSoapUIを用いて5回実行しています。その際に異なる注文情報をリクエストするようにしています。

1つのランタイムリソースで複数セッションが動作することを確認

実行モードに [バックエンド] または [フォアグランド] が設定されたオブジェクトだけを利用しているプロセスなら1つのランタイムリソースで複数セッションが実行可能なため、ここでは業務プロセス(Salesforce Demo)とリクエスト受付エンキュープロセスx5の合計6セッションが動作しています。これはBlue Prismを良くご存知の方だとかなり驚きのある画面だと思います。

リクエスト受付キューの確認

全てのリクエスト受付エンキュープロセスの実行が完了した後にリクエスト受付キューのタグを確認するとリクエストごとに異なる注文情報が登録されていることが分かります。

外部アプリへユニークな受付番号が戻されていることを確認

外部アプリ(SoapUI) にはリクエストごとにユニークな受付番号が戻されていることが確認できます。

P0001:<受付番号 xsi:type="xs:string">de3a06e7-d9ab-4b18-854e-a12dd5e8d3d6</受付番号>

P0002:<受付番号 xsi:type="xs:string">f6f2ac87-2a46-40e1-98de-358062358933</受付番号>

P0003:<受付番号 xsi:type="xs:string">fbbbddda-e6ae-417b-95b2-d5e346e28ef7</受付番号>

P0004:<受付番号 xsi:type="xs:string">c8871dcf-8c88-400c-867f-f4dd72345acc</受付番号>

P0005:<受付番号 xsi:type="xs:string">e70dddc1-e958-40ba-bc3f-d7eab70f50cc</受付番号>

まとめ

・ 使い方次第で1つのランタイムリソース上で複数の処理が実行可能です
・ その場合、オブジェクトの実行モードに注意が必要です

実際のプロジェクトでは、後段のプロセス(ここではSalesforce Demo)は、画面操作が入ることが多く実行モードが [排他的] になることも考えられるため、上記対応が実施出来ないケースもあるかも知れませんが、自動化対象のアプリケーション側の制約と Blue Prism 側のプロセスの実装次第によって上記のように1つランタイムリソースで同時に複数のプロセスを実行することも可能なことをご理解いただければ幸いです。

個人的にはこの機能を上手く活用するとBlue Prismを Enterprise Service Bus 製品のように使うことが出来そうなのでとてもワクワクします。

※本投稿は、別ブログで掲載・公開していた内容に加筆・修正を加え再掲載しています。