スケジュールの定義 (2) Login Agentの利用
どもども、ジャナイホーです。
今回は、Login Agentを使う際のスケジュールの定義のTipsのご紹介です。
Login Agentの仕組みと利用の仕方
Blue Prismが無人ロボット稼働(Unattended Automation)を実現する上で必要となる、Windowsデスクトップへの自動ログインの機構である、Login Agent。
これを使うと、1台のPCで複数のログオンアカウントを切り替えて業務処理プロセスを自動化することができるわけですね。
これによって、ロボットの稼働率向上が見込まれます。
極端な話、24時間365日ロボットを延々と働かせることが出来ます。
これの仕組み、インストール・構成手順については、下記をご参照下さい。制約条件なども記載されてますので、じっくり読んでみて下さい。
Blue Prism version 6.5版: v6.5 ユーザーガイド・ログインエージェント
Blue Prism version 6.5より前の版: ログイン エージェント ユーザー ガイド
さてさて、、、Login Agentを利用した、「Windowsデスクトップへの自動ログイン」と「ログインしたランタイムリソース上での実業務プロセスの実行」をスケジュール定義する際に、気を付けなくてはならない点をご紹介します。
Login Agentをスケジュールで利用する際は、間隔をあけよう
「Login Agent」の「Login」プロセスと「業務プロセス」を連続して実行したい場合、「Login」プロセスの直後に「業務プロセス」が実行されるようなスケジュールは、避ける必要があります。
「Login Agent」プロセス起動後、3分~5分程度、間隔をあけてから、「業務処理プロセス」を走らせるように、スケジュール定義を行う必要があります。
なぜ間隔をあけないといけないの?
このように間隔をあける仕組みを入れることには、理由があります。
Login Agentの自動ログインプロセスが開始されると、Windowsデスクトップへのログオン処理が完了するまで待たずに、処理制御がBlue Prism側に返ってきてしまいます。
通常、Windowsデスクトップへのログオン処理ってのは、人間がパスワードを入れてからデスクトップで何か仕事を開始できるようになるまでにも、時間がかかりますよね。
ということは、間隔をあけておかないと、デスクトップへのログオンが完了して、Blue Prismのプロセス待ち受けプログラムである「Automate.exe」がReady(いつでも処理受け付けるぜ)状態になる、という前に、つまり、結構即座に、Blue Prismは、後段の「業務処理プロセス」の開始指示!をしてしまうことになります。
これにより、未だAutomate.exeがReadyでないにも関わらず「業務処理プロセス」が開始されようとしてみたものの、開始できず、結果、エラーとなってしまう、といったことが発生してしまうのです。
これを回避するために、Automate.exeがReadyになる時間を見越して、待つ、とする為の必要な措置が、この「間隔をあける」設定を入れる、ということになります。
Login Agentを使う際のランタイムリソースの状態遷移
見てみましょう。
先ず、ログイン前の状態、つまり、ユーザがデスクトップからログオフである状態はこんな感じで鍵マークのアイコンがランタイムリソースについています。
「Login」プロセスがスケジュール起動され、その中の「Login」ステージを通過すると、「Login」プロセスは正常終了され、そして、そのランタイムリソースの状態は、下記のように「Offline(オフライン)」になります。
下のセッションログを見ると、「Login」プロセスのステータスは、「Completed(正常終了)」となっています。
Windowsデスクトップへのログオンが完了して、Automate.exeの起動も完了し、プロセスの待ち受けが出来るReady状態になると、下記のように、ランタイムリソースの状態は「Idle(待ち受け)」となります。
この状態で初めて、後段の実処理プロセスを起動(正確に言うと、セッションを作成)することが出来ます。
どれくらい間隔をあけないといけないの?
ランタイムリソースのマシンのスペックや環境によって、あるいは時間帯等によって、ログオン完了までかかる時間は、数十秒から5分程度までまちまちであると思います。
この間隔の値は、実際のWindowsデスクトップへのログオン完了までにかかる時間から余裕値を鑑みて算出することが重要です。
パスワード入力して、ログオン、を手作業でやってみて、Automate.exeがReady状態になるまでをストップウォッチで測ってみて下さい。
どうやって間隔をあけようか
方法としては、スケジュールを分けて頂いても良いですし、Blue Prismの6.4以降のバージョンであれば、スケジュールの中のタスクを定義する画面にて、「完了の遅延(秒)の…」という欄がありますが、ここで、間隔を定義する方法でも構いません。
スケジュールを分けてみる
スケジュールを分ける場合の定義の仕方は、こんな感じです。
まず、「Login」プロセスのスケジュール定義を作ります。
次に、「業務処理プロセス」用のスケジュール定義を別途作ります。
このとき、最初に作った「Login」プロセスのスケジュール開始時間と「業務処理プロセス」のスケジュール開始時間をずらす、間隔をあける、ということになります。
この画面の例では、「自動ログインプロセス」を13:54、「人事プロセス」を13:55ということで1分という間隔設定にしています。
6.4以降であれば、スケジュールを分けなくても、間隔を入れることが出来る
Blue Prism バージョン6.4以降であれば、下記の画面のように、各タスク間の起動の間隔をあける設定を入れることが出来ます。これにより、わざわざ複数のスケジュール定義を施さなくても、ひとつのスケジュール定義でおさめることができるので、スケジュール設定がよりシンプルになります。
ログアウトプロセスは間隔をあける?
「業務処理プロセス」の後ろで実行される「Logout」プロセスは、「業務処理プロセス」直後に実行されても構いません。つまり、間隔を「0」にしても構いません。
ただし、「Logout」後、次の「Login」までの間隔については、続ける必要がある場合には、ログアウトが完了することを想定した時間分だけ、間隔をあけるようにスケジュール定義をする必要があります。
スケジュール間隔じゃなくって、Login Agentで調整したいよー。Blue Prism側で間隔を制御してよー
よくやりがちなのが、Login Agent含めたログイン&業務処理プロセスが上手く動かない、あるいは、Terminate(異常終了)してしまうことが多いから、「Login」プロセスの中身を修正して、待ち時間を入れてみたり、確認処理を入れてみたり、ということがありますが、これらの施しは、あまり効果はありません。
Login Agentが提供する「Login」プロセスの中の最後にある「Login」ステージが実行されると、その「Login」プロセスはほぼ即座に終了します。ですので、「Login」ステージ後に何をやっても無駄ですし、その「Login」プロセスが異常終了(Terminate)することになります。
逆に「Login」ステージより前に待機やスリープを入れても、「Login」指示開始までの時間がかかるだけですので、無意味です。
Windowsデスクトップへのログオンとともに、Automate.exeが起動されるように仕込みがされますが、Automate.exeが起動完了して、サーバからのアクセスが可能となる準備完了となるReady状態の時点までは、Blue Prismから見ると、空白の時間になります。いわば、宇宙船が地球に帰還する際に大気圏突入開始すると、通信が途絶え、無事に地上と通信が可能となる状態までのような感じでしょうか。
なので、この空白の時間に「業務処理プロセス」が実行指示されることによる開始エラーが発生しないようにするために、十分な間隔をあける必要があるのです。
まとめ
「Login」プロセスと「業務処理プロセス」の間隔は、十分あけたかたちのスケジュール定義を行いましょう。
また、その実現をし易くするための機構が、Version6.4以降でついていますので、活用してみて下さい。
スケジュールの定義のTipsについては、下記も読んでみて下さい。
https://digitalworker.blog/n/n32792cb362e2
※本投稿は、別ブログで掲載・公開していた内容に加筆・修正を加え再掲載しています。