Blue Prism でリアルタイム起動フレームワークを構築する(詳細編② 先に返却係を作る☆)
この記事も、
まぁまぁ長いです!
(マンネリ)
前回の記事👇
返却係とは
返却係の話に入る前に、
全体像を振り返ると、こんな感じ。
返却係は、👇ですね(上図の下部)。
Blue Prism の言葉に直すと、
こんな感じになります。
前回の記事で、
業務プロセスの起動時にワークキューに
エンキュー(アイテムを追加)してました。
返却係は、
- 定期的にワークキューに残っているアイテムを見て、
- アイテムに書かれているセッションIDを読み取り、
- 読み取ったセッションIDに等しい業務プロセスの実行状態をチェックして、
- 完了していたらワークキューのアイテムを消し込む
- クライアントアプリ(またはクライアント)に、コールバックする
・・・といった感じの処理をします。
返却係のポイント
返却係の処理を、順にみていきます。
返却係の定期実行
基本的に、業務プロセスはいつ終わるかは
誰にもわかりません。
したがって、今回の仕組みでは返却係を
定期的に実行し、業務プロセスの処理結果を
チェックするようにしています。
定期的に実行する方法は、
- スケジューラーを使って、短い時間間隔で定期実行
- 無限ループにして長期実行
などが思いつきますが、
今回は1(スケジューラー)を採用しています。
2(無限ループ)は試してませんが、、
試すとしたら、安全に停止させる機能は
必須だと思います(IsStopRequested() を使う)。
なお、定期実行しないという選択も
可能だと思います。
つまり、業務プロセスが完了したら、
その時点で返却係を呼び出すような
方式です。
ただ、この方式をやろうと思うと、
まず、業務プロセス側に適切な例外処理と、
返却係呼出しを組み込む必要があります。
これは、プロセスは必ずプロセステンプレートを
ベースに作るなど、工夫が必要ですね。
次に、この方式だと、返却係はそれぞれ
任意のタイミングで呼び出されるので、
業務プロセスと同じランタイムリソースで実行するか、
返却係専用のランタイムリソースを用意して、
返却係オブジェクトをWeb API公開(リクエスト蓄積)
する必要が出てきます。
今回は定期実行方式にしますが、
他の方式もぜひ、チャレンジください!
(丸投げ)
キューの中身(アイテム)を処理する
返却係を定期実行したら、
次に行うことはキューの中身をチェックし、
そこからプロセスが完了しているかを確認します。
処理イメージは、文章で書いてもわかりにくいので、
図解します!
最初にキューのアイテムを取得して、、
アイテムからセッションIDを取り出し、
AutomateC.exe で業務プロセスの処理状態を
セッションIDをキーにして取得、、
AutomateC.exe の結果を見て、
業務プロセスが完了していたら、
アイテムを完了とマーク。
(業務プロセスが実行中なら、
アイテムを延期しています。
また、完了でなく失敗、停止など、
業務プロセスのステータスは
いろいろあるので、
そのハンドリングも可能です)
クライアントアプリへのコールバック
クライアントアプリへのコールバックは、
これも様々な方式が考えられます。
クライアントアプリから、
状態を問い合わせることもできます。
これは、前回の取次係を拡張する方向に
なると思います。
あるいは、クライアントアプリではなく、
メールやビジネスチャットで通知することも
可能です。
Outlook を操作してもいいし、
今風に Slack にしてもいいし、
以前は、Power Automate 経由で
Teams に通知したりもしてた。
Power Automate は必須ではなく、
こんな風に PA 抜きで Teams に
投稿する事も可能です。
👇は、もっと簡単☆
最後に、返却係の実装結果を
貼っておきます。
こんな風になりました☆
まとめ
- Blue Prism でリアルタイム起動フレームワークを作っていくシリーズ、第3回
- リアルタイム起動フレームワークの下半分、返却係を作成
- 返却係のポイントは、ワークキューの中身(アイテム)を取得、アイテムの中のセッションIDで AutomateC.exe してプロセスの実行状態を取得、取得した実行状態に応じてアイテムをマークする、クライアントにコールバックする
開発したVBO、プロセスは、後でDXにアップして公開する予定です。
アップされたら、リンクもつけますね☆
次回は、、
全体の流れを、一回、通しで見てみましょうか。
どう考えても長丁場確定ですけど、
がんばるゾ☆