2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UiPath】ParallelアクティビティでDelayとThrowを並べるとタイムアウトの代用はできるのか?

Last updated at Posted at 2021-02-11

概要

UiPathでは、一部のアクティビティはTimeoutプロパティを持っておらず、
そこで固まるとエラーにもならず処理がその場で止まってしまうということが起こりえます。

それを回避する策として、ParallelでDelayとThrowを並べる方法が以下で紹介されていますが、
これは本当に有効なのか?というところを確認してみます。

検証

Timeoutプロパティを持たない「Excel Application Scope」にParallelを並べて、
途中で処理を打ち切ってタイムアウトできるかを検証します。

Excelを開く

まず、A1セルからF1048576セルまで=NOW()で埋め尽くした重いExcelを用意し、
UiPathでそのExcelを開くだけのワークフローを作ります。

image.png

image.png
結果がこちら。20秒ぐらい開くのにかかっています。

image.png

DelayとThrowを並べる

念のためこちらも単体で動作確認します。
Delayは5秒、ThrowはTimeoutExceptionをスローさせ、わかりやすいようにTryCatchで囲んでログを出します。
image.png

結果がこちら。ここまでは想定通りですね。

image.png

Parallelで並べる

問題はここから。作った2つのシーケンスをParallelで一つにまとめます。
Parallelの条件プロパティには忘れずにTrueを設定。
これでExcelを開くのに5秒以上かかったらエラーをスローするワークフローを作ったつもりですが…。
image.png

結果がこちら。
残念ながら普通にExcelを20秒弱かけて読み込んだだけで終わってますね。エラーも出ていません。

image.png

デバッグモードで動きを見る

低速ステップを使って動きを見るとこんな感じです。(※倍速再生)

6xmce-ndc3k.gif

結論

結論として、ParallelでDelayとThrowを並べてもタイムアウトの代用にはならないようです。
環境によるのかもしれませんが…。

なぜこうなるのか?というところですが、
以下の記事でParallelの動きについて解説されています。
厳密な並列処理は今のところ難しいようですね。

動作環境

  • UiPath Studio Pro 2020.4.3 Community License
  • UiPath.Excel.Activities 2.6.3
  • UiPath.System.Activities 19.8.0
  • Microsoft Excel 2013
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?