はじめに
この投稿は、RPAツール「UiPath」での実装パターン についての記事です。
UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 16日目の投稿でもあります。
企画の内容は こちら 。カレンダーのURLは こちら です。
設定ファイルを開いたまま実行して、排他エラー
開発中には良くあります。
設定ファイルに項目を追加して、そのままデバッグ実行すると、以下のような「ファイルが開いている=排他エラー」になります。
Excelアプリケーションスコープを使用し「読み込み専用」で参照しても良いですが、項目追加後のファイル保存忘れに気づけなくなる危険性もあるので「排他エラー」で仕方ないのですが、再度実行するのは面倒です。
ファイルが開いていればダイアログを表示
なので、以下のようなフローを事前に呼び出して
ファイルが開いていれば、「閉じてください」ダイアログを表示
とすると、再実行しなくて良くなり、便利です。
ダイアログを表示すると「UnAttendedRobot」の場合、処理が中断されてしまうので、この方法は「AttendedRobot」または開発中のみにしたほうが良さそうです。 設定ファイルに「確認ダイアログを表示する」フラグを用意し制御するのもGoodです。
「ファイルが利用中か?」のチェック処理については、ネット上に色々紹介がありますが、InvokeCodeアクティビティで以下のように「排他モードで開いてみる」という方法で実施しています。(VB.NETのコードです)
isUsing = False
If Not(System.IO.File.Exists(filePath)) Then
Throw New Exception("ファイルがありません。" & filePath)
End If
'// ファイルを排他モードで開いて、エラーが出れば使用中とみなす(Using指定すると自動開放される)
Try
Using myFileStream As New FileStream(filePath,
FileMode.Open,
FileAccess.ReadWrite,
FileShare.None)
End Using
Catch ex As Exception
isUsing = True
End Try
指定のファイルを開いている場合、以下のようなダイアログが表示されます。
ダイアログが出たら、設定ファイルを閉じてからOKボタンを押せば処理続行されます。
設定ファイルに限らず、処理結果ファイルなどにも応用できます。
内容を確認しやすいように、xaml形式に切り出したものを用意しました。
終わりに
いかがでしたでしょうか。実装例として役立てば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。