Enterprise Blue Ocean ◮

神谷町RPAブログ

  • Blue Prism 初級者向け
    • Blue Prism を 無料で利用する 方法はこちら
    • Blue Prism の Blue Prism 事始め!オンボーディングの記事はこちら
    • Blue Prism で Excelを操作 する記事はこちら
  • Blue Prism、ちょっと進んだコンテンツ☆
    • Blue Prism の ベストプラクティス 記事はこちら
    • Blue Prism の 逆引きナレッジ wiki こちら
    • Blue Prism を リアルタイムで起動する 方法はこちら
  • RPA、そもそも論!
    • Youtube で、あらためて振り返る RPA とは?・・・はこちら☆

Blue Prism でリアルタイム起動フレームワークを構築する(詳細編① 受付係を作るには?)

この記事、長いです!

(警告)

 

前回の記事👇

www.ebocean.work

 

 

受付係を作る(簡易版)

全体像の振り返り

先日の全体像を今一度、振り返ると、

考え方的には👇

f:id:EnterpriseBlueOcean:20200330182144p:plain

Blue Prism の言葉でいうと👇

f:id:EnterpriseBlueOcean:20200330225950p:plain

ただ、いきなり全体を考えると、

頭がいっぱいになってしまうので、

まずは最初の受付部分を考えよう、

というのが前回の前振りでした。

f:id:EnterpriseBlueOcean:20200330182740p:plain

・・・しかし、

いきなりやるには、これだけでも

十分難しいかも。。

 

わかってしまえば、

どうということはないんだけど、

最初はもっと簡単にしよう!

(慎重)

 

簡略化(ユーザーがプロセスとリソースを指定して起動する)

そういうわけで、

以下のように簡略化しました。

f:id:EnterpriseBlueOcean:20200331114404p:plain

この方式では、

ユーザーがロボットと自動化処理を指定して実行します。

かなりユーザー主体な形ですね。

 

取次係ロボットは、

まぁ言ってしまえば取次をするだけですが、

ユーザーに対して以下の機能を提供します

  1. 実行可能な自動化処理の一覧を提供
  2. 空いているロボットを提供
  3. 指定されたロボットで、指定された自動化処理実行

 

Blue Prism の言葉に言い換えると、

こんな感じ👇

f:id:EnterpriseBlueOcean:20200331115121p:plain

取次係オブジェクトが提供する機能も、

Blue Prism 的に書き下しておきます。

  1. Process Info(コントロールに公開されたプロセスの一覧を提供)
  2. Resource Info(Idle 状態のランタイムリソースの一覧を提供)
  3. Run Process(プロセスとリソースを指定すると、指定した条件でプロセスを実行)

 

これを実装する上で重要なのが、

オブジェクトの公開Web API 化)です。

 

オブジェクトの公開(Web API 化)

なんでオブジェクトの公開が重要かというと、

今回のシナリオでは、クライアントアプリから

様々な要求(プロセスの一覧が欲しい、

リソースの一覧が欲しい…) がひっきりなしに来るので、

取次係オブジェクトがリクエストを

一時的に貯めておく仕組みが必要です。

f:id:EnterpriseBlueOcean:20200331121908p:plain

これを実現するには、

結論から言うとオブジェクトを公開(Web API化)

して、自動初期化を使うと実現できます。

動きについては、以前に書いたこちらの

記事を参照してください。

www.ebocean.work

 

こんな風に、タイムアウトになるまで、

クライアントアプリからのリクエストが

公開されたオブジェクトの手前で蓄積されます。

f:id:EnterpriseBlueOcean:20200131134706p:plain

 

これは Blue Prism のドキュメント

明記されている挙動です。

v6 User Guide - Web Services (Japanese)

5.1.1. セッション管理 に書かれています。

 

念のため、引用もしておくと、

少数の専用 Blue Prism ランタイム リソースを割り当てて、Web サービス リクエストを受け取る機能。必要に応じて、開始される Blue Prism セッションの数を最小限に抑え、単一セッション内に実行モードを混在させられるようにするために、呼び出し元が自動開始を使用します。

(34ページ)

 という感じですね。

(わかりにくい。。)

 

このアプローチを行うと、

ランタイムリソース#01は、

取次係オブジェクトに占有されます。

コントロールからも、

こんな風に見えるようになります。

(歯車がつく)

f:id:EnterpriseBlueOcean:20200331122453p:plain

f:id:EnterpriseBlueOcean:20200331122510p:plain

 

取次係オブジェクトのアクションを作りこむ

Run Process

Run Process(指定されたプロセスとリソースで実行する)

については、ポイントは AutomateC.exe の実行

セッションIDのエンキューになります。

f:id:EnterpriseBlueOcean:20200331123955p:plain 

プロセスの起動は、AutomateC.exe を

取次係オブジェクトの中で呼び出して

使います。

 

AutomateC.exe を使うことで、

起動後の戻り値としてセッションID

(Session ID)を取得できます。

 

以下のようなコード(C#)を記述することで、

AutomateC.exe をコードステージから

起動できます。

System.Diagnostics.Process p = null;

System.Diagnostics.Process p = null;

System.Diagnostics.ProcessStartInfo s = null;

System.IO.StreamReader r = null;

 

s = new System.Diagnostics.ProcessStartInfo(AutomateC_Path, AutomateC_Command_Param);

s.UseShellExecute = false;s.RedirectStandardOutput = true;s.CreateNoWindow = true;

 

p = new System.Diagnostics.Process();

p.StartInfo = s;

p.Start();

r = p.StandardOutput;

Output = r.ReadToEnd();

if *1 == false)) throw new Exception("AutomateC.exe が時間内に起動しませんでした");

 

起動するとテキストが返されるので、

そのテキストからセッションIDを取得し、

エンキューすれば完了です。

 

Run Process の全体像は👇。

ちょっと大きくなっちゃった。。

f:id:EnterpriseBlueOcean:20200331125827p:plain

 

Process Info

実行可能なプロセスの一覧を取得するには、

Blue Prism DX から Utility - Blue Prism Process Info

をダウンロードして活用できます。

digitalexchange.blueprism.com

 

Utility - Blue Prism Process Info を使うには、

Utility - XML も必要ですが、

こちらからダウンロードできます。

 

Process Info の全体像は👇。

f:id:EnterpriseBlueOcean:20200331125516p:plain

 

Resource Info

Idle 状態のリソースの一覧を取得するには、

👆で紹介した Utility - Blue Prism Process Info を

ちょっと改造すれば可能になります。

全体像は👇。

f:id:EnterpriseBlueOcean:20200331125221p:plain

 

まとめ

  • Blue Prism でリアルタイム起動フレームワークを作っていくシリーズ、第2回
  • 受付係・・・を作る前に、取次係を作ってみた
  • ポイントはオブジェクトの公開(Web API 化)コードステージで AutomateC.exe の実行セッションIDのエンキューUtility - Blue Prism Process Info活用改造

 

開発したVBO、プロセスは、後でDXにアップして公開する予定です。

アップされたら、リンクもつけますね☆

 

次回は、取次係を受付係に進化させるところかな、、

ちょっと長丁場になりそうですけど、

がんばるゾ☆

 

次回の記事👇

www.ebocean.work

 

まとめはこちら👇

www.ebocean.work

 

ソースコードはこちら👇

github.com

*1:Timeout > 0) && (p.WaitForExit(Convert.ToInt32(1000*Timeout