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?

More than 3 years have passed since last update.

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

Posted at

##概要
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?