見出し画像

Blue Prismベストプラクティス 設計編 3 Work Queueを使う

「ジャナイホー」による「ベストプラクティス」シリーズ、今回は、設計編 3 Work Queueを使う です。

おさらい - Work Queueとは –

Work Queueとは、
処理したい仕事を一列に並べ(Queue)、
順々に処理する(Work)、
仕組みです。

Blue Prismの良さは、このWork Queueの機構にあると言っても過言ではありません。

どんなプロセスでもWork Queueを必ず使いましょう。
ロボットの無人運転化の実現を支える、非常に強力な機能です。

なぜなら、以下のメリットがあるからです。
順序性を担保する(基本、FIFO)
・ 複数同時に処理が可能(複数のランタイムリソースで多重化する= 「スケーラビリティ」)
・ 途中で1つの処理が中断した場合に、次の処理から回復(リカバー)して処理を続行(= 「耐障害性・回復性」)できる
・ 1つの処理が完了した時点でそれ以降の次の処理を中断するなどの制御が可能(= 「コントローラビリティ」)
監視、レポーティングに利用でき、監査にも耐えられる情報を提供

下記の記事も参考にしてみてください。

あと、設計編の前回の記事にも記載しましたが、複数のステップを持つ、複雑な業務の自動化では、特にこのWork Queueの機構を用いて、制御することになります。

あ、シンプルな業務の自動化でも、必ず、Work Queueを使いましょう。

Work Queueの機能

Queueアイテムをどう出し入れするか、といった基本的な使い方はこれまでの記事でお分かり頂けたと思います。ここでは、以下の機能を覚えて頂きたく、解説していきます。
1. Tagging(タグ;属性付与)
2. Status(ステータス;状況・工程管理)
3. Priorities(プライオリティ;優先順位付け)
4. Encrypting(暗号化)

Tagging(タグ;属性付与)

Queueアイテムをカテゴライズ(分類わけ)する際に利用します。(Queueアイテムをユニークに特定する為の属性情報として使うものではありません。このような用途を目的とする場合は、QueueのパラメータであるData Collectionを利用することが望ましいです。)

Tagの利用
Get Next ItemでQueueアイテムを取得する際のフィルタリング(絞り込み)に使うことができます。

また、コントロールルーム上で監視する際の属性フィルタ情報としても使えますし、MIレポーティング機能での仕分け属性に使うこともできます。

Tagの追加
Add To Queueアクション実行時のパラメータで指定することができます。

または、このAdd To Queueで追加した後で得られる出力パラメータに、ItemIDのリスト(コレクション)がありますが、このリストから、任意のItemIDを選んで、特定のQueueアイテムに対して、1件ずつTagを追加登録することも可能です。(もしくは、Get Next Itemで取得したQueueアイテムのItem IDの値をパラメータとして、Tag Itemを実行することも可能です)

Tagの他の使い方
正常に処理が完了した場合でも、終了の種類が違うこともあるかもしれません。例えば、口座をクローズする、というプロセスがあった場合に、正常終了でも
 「正常終了―口座クローズ完了」
 「正常終了―口座すでにクローズ済み、だったよー」
というようなケースがあるかもしれません。

また、反対に、エラーが発生した場合でも
 「異常終了―Business Exception発生(入力データ不正)」
 「異常終了―System Exception発生(システムアクセス不可)」
といった種類を明確にしておきたいケースもあると思います。

このような種類をQueueアイテムに付加属性として付けておく使い方として、Tagを利用することも、検討してみて下さい。(Blue Prism標準テンプレートには、この異常終了時のTag付けが既に盛り込まれています。)

Status(ステータス;状況・工程管理)

Get Next Itemで取得した、作業対象の1件のQueueアイテムが、いったいぜんたいどこまで処理が進んだのか、をトラッキングする為に利用します。
例えば、以下のようなステータスが考えられるとしましょう。
00- 保留
01- データ検証
02- 処理開始フラグ更新
03- 受領メール送信
04- 顧客マスター照合
05- 請求情報更新
06- 処理完了メール送信
07- 完了

時間が非常に多くかかるプロセスにおいて、このような複数ある工程でプロセスのステップが存在している場合、どこまで完了していて、どんな作業が残っているのか、を可視化出来ます。また、途中でエラーが発生してしまい、手作業で回復を行わなくてはならない場合などの、有効な情報源として利用できます。

もちろん、適切なエラーハンドリングの仕組みが実装されているプロセスであれば、このステータス値を参照・判断することで、適切な個所から自動的に、エラーデータに対する残りの処理を再開する、といった実装も可能となります。

Statusの利用
Get Next Itemアクションの出力パラメータにStatusという項目があります。ここで得られるステータスの値をもって、判断を行い、後段の処理を進めていきます。

Statusの更新
Get Next Itemにて取得した、当該作業中のQueueアイテムであれば、Update Statusアクションを使うことで、そのQueueアイテムのステータスを更新することができます。

Priorities(プライオリティ;優先順位付け)

最重要顧客のデータは常に先に処理するようにする、とか、特定のアプリケーションのSLAにて定義されたサービス提供時間が極端に短い、とか、様々な要件が考えられます。
このようなケース、Blue Prismで、仕事の優先順位付け/順序付けして、処理を行いたい、といった要件に対するソリューションとしては、以下の3種類が考えられます。
1. 複数のWork Queueを用意し、特定のWork Queueを先に処理するように、プロセスのロジックやスケジューラを構成する
2. さきほど紹介したTaggingの機能を使い、一つのWork Queueに入ったQueueアイテム群を絞り込み&処理する、といったプロセスを構成する
3. ここで紹介するPriorities機能を使い、Queueアイテムの順序をソートし、処理するプロセスを構成する

Priorities機能は、Get Next Itemで取得される順番を制御することができます。通常は、FIFO(ファーストイン・ファーストアウト;先入れ先出し)で、処理されますが、この順序を、Queueに入れる際に指定する、ということになります。

ファストパスのレーンに並ばせるわけですな。

Priority(優先度)の利用
Get Next Itemアクションを実行すると、Blue PrismのWork Queueが自動的に、優先度が高いものを先に、取得して結果を返します。優先度は、数値型で、数が小さいほうが、優先度が高く、つまり、先に処理されます。

0 → 1 → 2 → 3 → …

同じ優先順位の場合は、FIFOで処理されます。

Priority(優先度)の設定
Queueに追加するタイミングで、Add To QueueアクションのPriorityパラメータに任意の優先順位値を指定することで、当該Queueアイテムの優先度を設定することができます。
デフォルト(未指定の場合)は、0となります。つまり、最優先で処理されます。

もしくは、Set Priorityというアクションで、当該Queueアイテムの優先度を設定することができます。

注意点
ここで、注意したいのは、優先度の低いQueueアイテムが、いつまでたっても処理されない、といった事象が発生しないように、ソリューション全体を考えることです。
・ すべてのQueueアイテムを捌ききれる、充分なランタイムリソースを用意する
・ 優先順位を変更する別のロジックを発動させる仕組みを用意しておく
・ 流れ込んでくるQueueアイテムの数、ひとつのQueueアイテムの処理に必要とされる平均処理時間、サービス提供可能時間を計算し、捌ききれない恐れがあるだけのQueueアイテムが流れ込んできた場合、監視者にアラートをあげる仕組みを用意しておく

優先度付けをして処理を行う要件がある場合は、このようなプランもソリューション設計時には検討しておく必要があります。

某舞浜のリゾートではちゃんと人間が捌くので、夜の閉場間際にファストパス無しで並んで、結局乗れんかった。。。なんてことはないわけですが、そんなことも頭の片隅に入れながら、設計しましょう。

Encrypting(暗号化)

Queueアイテムには、センシティブなデータが含まれる必要がある、ことも多々あります。

Queueアイテムは、ログに出現したり、監査レポートに出現したりしますので、ユニークな単位を特定する情報などについは、暗号化する、マスクする、などの措置が必要になります。

まとめ

Work Queueは一見、取っつき難いですが、スケーラビリティ、耐障害性・回復性、制御性を担保する、エンタープライズの自動化を支える上で重要な機能を持っています。これに加えて、今回ご紹介した、より高度かつ複雑な要件を満たすための機能、タグ、ステータス、優先順位、暗号化といったものもあります。

特に、前回の記事で紹介しましたが、複雑かつ長大な業務フローを自動化する際、プロセスの分割とWork Queueの活用は、必須となってきます。

ソリューション全体設計を行う際にはぜひ、ここで示したWork Queueの機能を駆使して、「無人運転を実現する」効果的かつ効率的なRPA導入を目指して下さい。

次回以降引き続き、ベストプラクティス<設計編>シリーズで、プロセス設計における注意点、考慮ポイントを記載していきます。

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