はじめに
この投稿は、RPAツール「UiPath」での 実装例 について記事です。
UiPathのコミュニティ「UiPath Friends」が企画する「UiPathブログ発信チャレンジ2021サマー」の 22日目の投稿でもあります。
企画の内容は こちら 。カレンダーのURLは こちら です。
実行マシンの情報を取得するシリーズ
同様の内容で以下の投稿もあります。参考まで
ディスク容量を取得したいとき
例えば「データダウンロード」系のロボットを連続で動かしていると「いつの間にかディスク容量が減っている」ことがあります。
また、ロボットと同じ場所で「データベース等のアプリケーション」が動いていると、予期せず空きスペースがなくなることもあり、UiPath自体の動作に影響が出ることがあるので危険です。
Datadog や Zabbix 等の監視ツール、またはパフォーマンスカウンターなどを使えば「ディスク容量が閾値を下回った場合に通知する」ことも出来ますが、もっと簡単にディスク容量を取得したい。なので、UiPathで実装します。
.NETで取得する
標準アクティビティで「ディスク容量を取得」アクティビティ みたいなのがあれば良いのですが、現時点では無いみたいです。
なので、以下のカスタムコンポーネントを作りました。
作ったのですが「もっと簡単に取得しできないかな?」と思って、InVokeCodeで書き直しました。(持ち出しやすいように、匿名変数型にしています)
func = Function() As DataTable
Dim dt As New DataTable
dt.Columns.add("DriveName")
dt.Columns.add("TotalSize(GB)")
dt.Columns.add("TotalFreeSpace(GB)")
dt.Columns.add("UseRate")
dt.Columns.add("FreeRate")
Dim aryDriveInfo As System.IO.DriveInfo() = DriveInfo.GetDrives()
For Each item As System.IO.DriveInfo In aryDriveInfo
If item.IsReady Then
Dim dr As DataRow = dt.NewRow
dr("DriveName") = item.Name
dr("TotalSize(GB)") = (item.TotalSize / 1024 / 1024 / 1024).ToString("0.0")
dr("TotalFreeSpace(GB)") = (item.TotalFreeSpace / 1024 / 1024 / 1024).ToString("0.0")
dr("UseRate") = (100- (item.TotalFreeSpace / item.TotalSize * 100)).ToString("0.0")
dr("FreeRate") = (item.TotalFreeSpace / item.TotalSize * 100).ToString("0.0")
dt.rows.Add(dr)
End If
Next
Return dt
End Function
実行すると、以下のようにドライブの情報がデータテーブルとして取得できます。
確認しやすいように、以下にxamlを公開しています。
終わりに
いかがでしたでしょうか?ロボットフローの開始終了時、途中経過などでディスク容量を通知すると、増加傾向が分かって安心です。
実装の参考になれば幸いです。
この記事が参考になったら、 LGTMをお願いします。閲覧ありがとうございました。