1つのアクティビティに3つの例外処理?実装する時の例外とは?
zipファイルを解凍するだけの場合、使用するアクティビティは一つ、Invoke Mehodだけです。しかし、実際に作り込むときは様々な例外処理を考えておきながら、フローチャートを作成する必要があります。
基礎編はこちらから。
想定ケース Chromeからzipをダウンロードして解凍
今回は、以下のような前提でzipファイルの解凍を実践していきたいと思います。
- Google Chromeからzipファイルをダウンロードする(名前を付けて保存)
- ダウンロードしたzipファイルを同一フォルダに解凍する
- 解凍後、zipファイルは不要なので削除する
普段の業務でもよくある流れですね。それでは実践していきましょう。
簡易的なフローチャート
簡単なフローチャートです。こういうのを仕様書って言うのは変だなぁ。
実際のワークフローがこちら
長めになってしまいました笑
例外処理 ダウンロード完了するまで解凍を待機できているか?
ダウンロード開始直後にzipファイルを解凍すると、「zipファイルは存在しません」という旨のエラーが発生します。
すぐに解凍するのではなく、ダウンロードが完了するまで待機しておきましょう。
例外処理 ネットワークの不調によるダウンロード失敗していないか?
また、何かしらのネットワークエラーでダウンロードが完了しないケースも発生するので、超過時間を設定して、無限ループを制御しておきます。
今回は「max_minutes」を用意して、10分 経過したらスローを投げます。
zipのパスを分解して、解凍先パスを取得
zipファイルの格納先は各実行環境において異なるでしょう。folder_path など既定値を定めるのも一つの手ではあると思いますが、今回はVB.NETのSystem.IO.Pathを使って、パスを分解していきたいと思います。
解凍前のdownload_pathの変数は末尾に「xxxxxx\xxxxx\.zip」とついていますが、
解凍後のdownload_pathの変数は「 xxxxxx\xxxxx」になるはずです。
例えば、変数「zip_path」と「unzip_path」2つを用意しても良いのですが、基本的には次の工程で処理されるのは解凍後のパスです。ひとつの変数「download_path」を使い続けながら、パスを変えていきたいと思います。
例外処理:解凍先に同一名のフォルダがないか?
解凍先のフォルダパスと同じフォルダが存在していた場合、エラーが発生します。
そのため、事前に解凍先のフォルダパスが存在するのかをチェックし、もしも存在した場合、削除するエラーハンドリングを事前に組み込みます。
最後にzipフォルダを削除
最後に、download_path + extension でzipパスになるので、そこを削除すれば完成です。
まとめ
長かったですね。たった1つのアクティビティを実装するために、様々なアクティビティを配置していきました。ここらへんがRPAの難しさであり、面白さです。
それでは。
1件のフィードバック
Very interesting information!Perfect just what I was searching for!Raise your business