【背景】
在实际运行RPA流程时,总会遇到各种各样的异常。例如,获取不到界面的信息;点击按钮后没有响应,界面卡死等问题。原因也很多,可能是网络延迟,也可能是界面或者应用系统响应失败等等。
虽然通过Try Catch可以捕获到异常,或者通过UiPath提供的企业级框架进行事务级别的重试。但有时局部的重试也很重要。所以就可以用到 Retry Scope这个控件。
【介绍】
这个控件的官方说明在下面的链接,具体信息可以自取。
引入这个Activity后,如下图所示:
这个Activity有两部分,Action 和 Condition。
运行机制是,先执行Action中的程序。运行完成后,会检查Condition中的控件是否返回True的结果。如果返回True,则执行结束。如果返回False, 则重复执行Action中的程序。
默认重复执行3次,每次相隔5秒。
Retry Scope有两个重要参数
- NumberOfRetries - The number of times that the sequence is to be retried.
- RetryInterval - Specifies the amount of time (in seconds) between each retry.
NumberOfRetries 是重复次数,默认是3次。
RetryInterval是重试的相隔时间,默认是5秒。
使用方式如下:
这里有一点需要注意,如果Retry Scope重试次数结束后,Condition还是False,那这个控件会抛出异常。
所以,在使用时,需要配合Try Catch 或者将 ContinueOnError的属性改为 True, 如下图。
Try Catch的使用形式:
Continue OnError的使用形式:
【使用场景】
具体的使用方式,可以参考官方网站的描述。
这里介绍一个使用场景。
当我们尝试打开一个界面的时候,如果过程可能存在异常,可以把相关的操作写入Retry Scope的Action中,然后通过”Element Exists”控件来判断相关的页面是否已经打开成功,如果失败,则可以进行重试。
后面会再介绍一篇关于Retry Scope的其他使用场景。
也欢迎大家一起讨论平时遇到的一些问题。