https://ciprogram.jp

スポンサーリンク

RPA

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

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

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

……

ま、まあいいさ。

ないなら作ればいい。

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

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

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

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

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

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

はい。

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

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

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

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


Dim SysIoFIF As New System.IO.FileInfo(File_Name)

'更新日時を返す
TimeStamp = SysIoFIF.LastWriteTime

'作成日時を返すならこっち
'TimeStamp = SysIoFIF.CreationTime
'アクセス日時を返すならこっち
'TimeStamp = SysIoFIF.LastAccessTime

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

しかしだまされるな。

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

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

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

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

想定として――

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

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

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

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

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

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

▼初期値を設定っと

そしてできました!

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

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

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

悔い改めてくれ。

 

 

 

スポンサーリンク

-RPA
-,

© 2020 ONE HUMAN UNIT Powered by AFFINGER5