LoginSignup
3
3

More than 3 years have passed since last update.

[Uipath]Retry Scopeの(自分なりの)実装方法

Posted at

remark

自身のblogにも同じ内容をポストしています。


アクティビティの意味

  • 下記のいずれかを満たす間、内部に含めたアクティビティ群を所定の回数実行する
    • a) Conditionに設定したアクティビティがFalseである
    • b) 内部に含めたアクティビティ群が例外をスローする

ポイント

b)のほうが事例としては多いかもしれない。ただこれには罠があって、スローされた例外に対する処理が(このままでは)記述できない。したがって自ら設定した回数の例外が発生するまでは、その例外が何であるかはおろか、そもそも例外が発生したのかを(ログとして)把握できないのである。地味だけど、ビジネスユースとしてはちょっと厳しい。

じゃあどうやって実装するのか

二重Try-Catch構造で行きます。重ね方は下記の通り

  • Try-Catch (リトライ全体も失敗したときの処理)
    • Retry Scope (リトライ自体の処理)
    • Try-Catch (実行/リトライ1回が失敗したときの処理)

UiPathだと正直可読性がガクンと落ちるんだけど、こうせざるを得ない。

2回目のTry-Catchでは、キャッチ処理に対して必ずRethrowを入れて上げる必要がある。入れないとどうなるかというと、Retry Scopeが例外を直接キャッチしないので、Retry Scope的には成功とみなされ、リトライが実行されなくなる

1回目のTry-Catchは、Retry Scopeが所定の回数リトライをしても例外をキャッチしてしまう(=リトライが所定の回数以上失敗している)場合の処理を行う。

デモ

暇ができたら作ります。

3
3
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
3
3