つまらない仕事はプログラムにやらせよう

ONE HUMAN UNIT

https://ciprogram.jp

【RPA】Blue Prismでファイルができるまで待機する! でもベストプラクティスにのっとりExitは固定時間待機じゃなくタイムスタンプを調べてやるZE

BluePrismでファイルスタンプを取得するには

まあファイル操作系なので「Utility - File Management」あたりにGet File TimeStampがあるだろうと探してみる――

……

ま、まあいいさ。

ないなら作ればいい。

ということで、今回作るものは

  • ファイル作成作成前のタイムスタンプを取得
  • ファイル作成のトリガーを引く
  • ループでタイムスタンプを取得して、ファイル作成時と変化があったらループを抜ける

これの弱点はファイルが追記で作られる場合なんだよね。

変化し続けるわけだから。

そうであれば、タイムスタンプが変化を始めてからのループで、変化がなくなることを終了条件にすればいいね。

BluePrismでファイルスタンプを取得するためにFile ManagementsをExtend

はい。

似たような処理をしているのを探してみると――

File Exists君、君やりたいことと似たようなことをやってそうだな。

▼ファイルパスを与えて、日時を取得するように調整

▼コードステージもちょろっとかえる

▼実行してとれていたら、公開

しかしだまされるな。

これがJSTとは限らないのがBluePrism。英国万歳。

まあ今回は変化を判定するので、タイムゾーンはしかとでOK

BluePrismでタイムスタンプの変化を判定

VBOができたのでプロセスを作っていきます。

想定として――

  • ファイルはすぐできるわけではない前提で事前にSleep
  • BPのループはコレクションで行われるため、空のフィールドを作ったコレクションを用意
  • そしてBPは処理がマッハなのでループ内でも適度にSleep

それを軸に事前にファイルのタイムスタンプを取得して、それに変化が生まれたらループから出るし

ループ上限を超えたらExceptionをなげる。

てな感じで作っていきましょう。

▼Utility - General::Sleepでプロセスをスリープさせてやる

そしてループ用のコレクションを作ってやります。

▼初期値を設定っと

そしてできました!

▼じゃん。最初に取得したタイムスタンプに変化があったら終了。そうでなければ、例外投げる

いろいろできるんだけど、少し微調整が必要だね。

RPAはノンプログラムでできるっていってた日経さん、そうそこの日経君だ。

悔い改めてくれ。

 

 

 

  • B!