見出し画像

プロセスの任意実行 (4) ファイル受信トリガーによる実行

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

第四弾。ファイル受信トリガーによる実行、です。

基本的な考え方、全体構成は、メール受信トリガーと同じです。
是非こちらも参考にして下さい。

https://digitalworker.blog/n/n7ef7eee23f6c

ファイル受信トリガーの場合

こんな構成イメージですね。

実行ユーザは、プロセスを実行したいタイミングで、エクスプローラなどを使って、予め決められたフォルダ(共有フォルダなど)に、実行指示ファイルを置きます。

  1. 次に、ファイル受信・振り分け用のプロセスがスケジュール起動され、ロボットアカウントのそのフォルダをチェックし、ファイルが作成されているかどうかを確認します。

  2. そこで、ユーザから実行指示ファイルが来ていれば、その情報を読み取り、実処理用のワークキューに書き込みます。

  3. 実処理用のプロセスがスケジュール起動され、実処理用のワークキューからデータを読み取り、実際の自動化処理を開始します。

  4. この間、各ステップでその状況を依頼元実行ユーザに通知するメールを送信します。(メール送信は、メール送信専門のプロセスが担います。他のプロセスは、「メール送信依頼ワークキュー」への登録=メール送信指示(送信先、本文、題名などを渡す)だけを行います。)

    • ファイル受信・振り分け用のプロセスが、ファイルを受領した旨を通知

    • 実処理用のプロセスが、処理を作業開始した旨を通知

    • 実処理用のプロセスが、処理を作業完了した旨を通知

    • もし実処理内でエラーが発生した場合、実処理用のプロセスが、エラー発生した旨を通知

 ここで、お気付きだと思いますが、3の処理の途中から、内容は前述のメール受信トリガーと同一です。これによって、共通化が図れます。

起動スケジュールも、前述のメールトリガーと同じように、周期的に実行されるように設定します。

つまり、ファイル、メールのどちらをトリガーにしても、同じ結果が得られるようになります。

実処理用のプロセスは、どちらかに対応するように作り直したり、二つの種類を用意したり、といった必要はありません。

共有フォルダにファイルが来ていることを確認する部分はこんな感じになります。

ファイルの確認は、ユーティリティVBOのアクション(「Utility – File Management :: Get Files」)を利用します。

あと、処理振り分けが正常に完了したら、ファイルを移動させてやりましょう。

そうすることで、処理を受け付けた、ということと、2重に処理を行わない、ということを担保できます。

まとめ

ファイル受信トリガーも、メール受信トリガーとほぼ同じ仕組みで、汎用的に作ることが出来ます。

ここでも、ワークキューを用いたテンプレートを使った仕組みで実装します。

周期的に一定時間置きに起動され、すぐに終了する仕組み(「ポーリング」)のトリガープロセスであれば、ライセンス消費を最小限に抑えつつ、将来の拡張に柔軟に対応できます。スケジュールが遅延することに依る、後続のプロセスが実行できない、という運用上の課題も解決できます。

ライセンスがいっぱいだったから、今は待ち行列に入れておいて、空きが出たら順序良く処理してもらいたい、というユーザのニーズにも対応できます。

任意実行の受け口として、メールとファイル、両方を用意しておくのも良いでしょう。

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