RPAエンジニアの雑記

RPA(Blue Prism)について色々記載してます。

(BluePrism)スケーリングしやすいプロセス設計(案)

こんばんは、おむおむです。


比較的サクっと作ったロボちゃんが
当初の試算より大幅な削減効果が出そうでウキウキです。
ウキウキ過ぎて雨季になりました。(?)
f:id:newgraduate19:20210217222745p:plain

自分用のメモ用に記事を殴り書きしてみます。

概要

・自動化対象処理のケース数に波がある。
・繁忙期には1台では足りない、でも閑散期は何台も必要ない。
・スケジュールでちまちま同時実行数を増減したくない。
・なるべく手をかけずスケーリングしたい!

こんなこと、思ったことありませんか。
ありますよね(圧)

そんなときのために、ちょうどよさそうな実装方法を考えました。
※考えただけなのでちゃんとした運用はしてないです。
 自己責任でよろ☆



実装イメージ

こんな感じです。
f:id:newgraduate19:20210218084520p:plain

順を追って説明していきます。


保留中のケース数を取得する

まず、処理対象のデータを格納したワークキューから
保留中のケース数を取得します。
これは特に問題ないでしょう。
f:id:newgraduate19:20210217221019p:plain

パラレル実行するかどうかを判定する

ミソはここです。

予め、数値型の環境変数を作成しておきます。

この環境変数は、
「プロセスをパラレルで実行する必要があるかどうか」
という判定を行うための基準となる数値です。

ワークキューでは1ケースあたりの平均処理時間を
自動的に算出してくれるので、
SLAを満たすためには、XX件以上のときはパラレル実行が必要」
という計算が比較的に容易にできると思います。
f:id:newgraduate19:20210217221102p:plain

環境変数として外に出しておくことで、
いちいちプロセスを開かなくても
容易にスケーリングの条件を調整することができます。


環境ロックを取得する

もう一つのミソが、環境ロックです。

説明するまでもないと思いますが、
Blue Prism には排他制御を行うための
環境ロックという機能が存在します。

この機能を使用することで、単一のランタイムリソースだけが
このプロセスの後続の処理を実行できるように
制御をかけることができます。

ロックが取得できなかった場合は、
フラグ型のグローバルデータアイテムなんかを用意して
メインページで終了に流すようなフローにするなどがよいでしょう。
f:id:newgraduate19:20210218084736p:plain

スケジュールの作成

スケジュールはこんな感じ。
f:id:newgraduate19:20210217221907p:plain

1つのタスク内に複数のセッションを張ってあげるだけで、
処理件数が規定数以上なら自動的にパラレル実行してくれます。

やったぜ☆


まとめ

・デフォの機能を組み合わせるだけで柔軟なスケーリングが可能
・まだまだBlue Prism の可能性は無限大☆

今の現場での稼働も残りわずか。
有終の美を飾るぞ~