見出し画像

プロセスを任意のタイミングで実行したい

どもども、ジャナイホーです。

今回は、Blue Prismで自動化したプロセスを実行する手段をいくつか紹介していきます。

シリーズ、題して「プロセスの任意実行。~ もう、約束の時間を待つばっかりは、いやなの。私から、私のタイミングで、始めたいの。~」

「即時実行」、「リアルタイム実行」とか「Attended Automation」とか「ダイナミック(動的)プロセス実行」という言い方をされたりしますが、その件です。

Blue Prismは「UnAttended Automation」? スケジュール起動しかできない? 即時実行の手段がない?
。。。そんなことはありません。

Blue Prismのプロセスの開始方法

先ず、おさらいです。
Blue Prismでは、プロセスを開始する手段がいくつかあります。

プロセススタジオでのデバッグ実行
言わずもがな、ですな。プロセスの中のどのステージからでも、途中からでも、開始できます。
また、途中で止めたり、再開したり、値を途中で変えてみたり、画面の様子をみながら、様々なシナリオを柔軟にテストできます。主に、開発環境、開発フェーズで利用する方法です。

1. プロセススタジオでのデバッグ実行

言わずもがな、ですな。
プロセスの中のどのステージからでも、途中からでも、開始できます。
また、途中で止めたり、再開したり、値を途中で変えてみたり、画面の様子をみながら、様々なシナリオを柔軟にテストできます。主に、開発環境、開発フェーズで利用する方法です。

2. コントロールルームでの実行

デバッグ実行して、問題なければ、「プロセスを公開」して、コントロールルームで、本番さながらのスピードで試します。
適切なWait(待機)ステージが実装されてますか?
コントロールルームで、任意のプロセスを任意のランタイムリソースにずずずいっとドラッグアンドドロップして開始します。
主に、開発環境・テスト環境、開発フェーズ&テストフェーズで利用する方法です。

3. スケジュール実行

Blue Prismが持っている標準のスケジューラを使って、毎週、毎時、あるいは特定の日時に指定したタイミングで、プロセスが自動実行される仕組みです。
プロセスを無人運転させる、Blue Prismをより広範囲に拡大展開させる為に必須となる仕組みです。
Blue Prismとしては、やっぱりこれが、本番環境、本番稼働フェーズでの一番のオススメのやり方です。(もちろん、テストでも。)

4. コマンドライン実行

「任意実行」ときたら、先ず、考えるのが、これですよね。
WindowsのコマンドラインからBlue Prismを起動します。
AutomateC.exeというものを使います。
これによって、スケジュール設定せずとも、あるいは、Blue Prismの画面を開かずとも、任意のプロセスを実行することが出来ます。

5. API呼び出しによる実行

Blue Prismのプロセスは、Web Serviceで公開することが出来ます。この仕組みで、Blue Prism以外の外部システムから、Web Service APIをキックすることにより、プロセスを実行することが出来ます。
より、専門家による開発作業と組み合わせて利用するものです。より高度で柔軟な仕組みが作れます。

6.Blue Prism Interactを使う

もし、任意のタイミングで動かしたいそのBlue Prismプロセスがワークキューを使っていて、かつ、標準テンプレートのようにワークキューのケースアイテムが存在することを確認してそれをトリガーに動き出す仕組みで処理が行われる実装であれば、Interactを使うと、任意のタイミングでプロセスの開始指示が行えます。

なぜならInteractは、ユーザの指示画面からワークキューに対して仕事開始を指示する仕組みだからです。

と言うことは、、、そう、そのプロセスは上記の3.スケジュール実行と同様、毎時や数分間隔で起動されるように設定しておく必要があります。

詳細は、下記のリンクで。

任意実行の要件

さて、ここでソリューションをいくつか語る前に、そもそも、なんで任意実行?ということを整理しておきたいと思います。

「任意実行したい!させたい!」という背景には、いくつかのポイントがあると考えています。

例えば、

  • ユーザに実行のタイミングを任せたい。あるいは任さざるを得ない。
    (実行したいとき、したくないとき、がバラバラで、一律の定義が難しい、など)

  • 緊急で、即時実行したい、というニーズがある。
    (「エラーになったデータ直したから、すぐに流しなおして!」とか)

  • ユーザが終了のタイミングを検知したい。いつ終わったのか、適切に終わったかどうか、ちゃんと監視したい

  • 実行するプロセスを都度、選びたい

  • Blue Prismを各ユーザ端末にインストールしたり、コントロールルームを実行ユーザに公開したりしたくない

  • 限りあるライセンスの消費を効率的に運用したい
    (使い倒したいし、無駄に遊ばせたくない、けど、スケジュール起動用のライセンスを任意実行で使いきられても困る、など)。

  • 実行開始指示のタイミングは、ユーザに任せたい、けど、ライセンスやリソースが満杯で実行の際に失敗することがある。このとき、開始の待ち行列に入れたい。空きができたら、即座に自動的に実行されるようにしたい。

  • 共有フォルダを公開すると、そのアクセス権限メンテナンスが煩雑になってしまう。

  • Blue Prismの標準カレンダーは、「第3水曜日」とか「第1月曜日。但し、月の最初の月曜日が祝日だった場合にはその前週の営業日に実行する。あ、でも、その日が前月だったら、、、」などの動的ロジックを指定出来ないために、使えない。

  • 外部スケジューラツール、BPM(ビジネスプロセスマネジメント)ツール、Slackやチャットボットなどから呼び出したい

などですかね。(まだあるかな。ごめんなさい、あったら、こそっとご指摘下さい。)

こういった要件があるからこそ、
任意のタイミングでプロセスをもっと簡単に、柔軟に、実行できないのか、Blue Prismよ、
という問いかけが多いと認識しています。

任意実行の方法

これに対する答えとして、このシリーズでは、以下の仕組みについて、順次、ご紹介していきます。

  1. コマンドライン実行

  2. API呼び出し実行

  3. メール受信トリガーによる実行

  4. ファイル受信トリガーによる実行

それと、以下のような問題に対する案の提示も順次、していきます。

  1. スケジュールのオーバーラップ

  2. 小規模環境でのライセンス専有・共有

  3. コントロールルームのアクセス権限

  4. ログの出力・公開

どれを選ぶと良いのか?

どの方法が良いのか、を見極めていくうえで、検討すべきポイントは、以下になると思います。

  • 規模
    (実行ユーザの数、実行プロセスの数がどの程度になるのか)

  • ライセンス制約
    (専有したいライセンスはいくつで、任意実行用のライセンス公開はどの程度で、ライセンスがいっぱいになった時にどちらを優先するのか)

  • ランタイムリソース制約
    (プロセス実行用マシンの数、専有度合いなど)

  • 公開・共有する範囲
    (共有フォルダ、実行指示用メールアカウントの有無、Blue Prismのインストール・コントロールルームの公開、Blue Prismがインストールされている、プロセス実行用マシンのデスクトップの公開、リモートデスクトップアクセス方法など)

  • ログの公開手順

  • エラー発生時の修正等役割分担

  • 将来の展開構想、データ増大見込み

標準で提供されている参考文書、サンプル

Blue Prismのポータルサイトにも、「Guide to Dynamic Process Execution」というタイトルのドキュメント(ごめんなさい、未だ英語のみです。。。)があり、参考にして頂けます。

あと、Blue Prismをご利用中のお客様向けには「Blue Prism Dynamic Scheduler Examples」というサンプルもありますので、参考にしてみて下さい。(こちらも英語のみです。。。)

まとめ

「任意実行」は、特に、小規模でBlue Prismを始める、とか、RPA専任チーム(CoE)構築なんて考えていない、といった状況においては、必達の仕組みですよね。

Blue Prismでは、いくつか、出来る方法があります。
ジャナイホーがおススメするのは、3もしくは4の メールかファイル(あるいは両方)の受信トリガーによる実行、です。
これで実装すれば、大抵の要件は、満たせる、、、満たせるはず、、、満たせるんじゃないかな、、、満たせるかも、、、なんて思います。
。。。何より、スケールし易くなります。メンテナンス、運用が、あとあと、より楽になります。 

「どうしてもゆずれない要件」を整理し、検討ポイントをさらって頂き、将来大規模に展開することも視野に入れつつ、「どのソリューションを適用するか」を探ってみて下さい。