【发布时间】:2019-05-22 04:53:34
【问题描述】:
我正在使用 UiPath 工作流中的调用宏调用宏。令人担忧的是,有时宏句柄将永远冻结,导致宏执行挂起,进程将永远卡在调用宏中。
有没有什么方法可以修改 UiPath 工作流程,以便如果调用宏活动未在 15 分钟内完成,机器人会抛出异常?
【问题讨论】:
我正在使用 UiPath 工作流中的调用宏调用宏。令人担忧的是,有时宏句柄将永远冻结,导致宏执行挂起,进程将永远卡在调用宏中。
有没有什么方法可以修改 UiPath 工作流程,以便如果调用宏活动未在 15 分钟内完成,机器人会抛出异常?
【问题讨论】:
有一种方法可以做到这一点,让我尝试向您介绍:
您的解决方案需要 3 个变量,如下所示:
然后您需要在 Excel Application Scope 和 Execute Macro 上使用 Parallel activity 将与 While 循环一起运行 会不断比较开始时间和您设定的等待时间。如果超过设置的默认时间值,就会抛出异常。查看下面的解决方案示例:
在这种情况下,由于我们在 Try-Catch 块中包围了 Parallel Action,因此您需要在 Catches 部分中指定异常表达式,因为Throw 将被 Catches 覆盖,如下所示:
第二种选择是不使用Try-Catch,然后会显示Throw异常,请查看以下解决方案:
您还需要修改 Throw 操作,如下图所示,相应地设置异常消息:
希望这会有所帮助。
【讨论】:
您可以并行包装您的调用宏,其中您在第二个分支中会有延迟和抛出异常。延迟应该是您想要的超时值,即 15 分钟。
您还需要有一个布尔类型的局部变量作为并行输入到condition property。当/如果宏调用返回时,您将此布尔值设置为 True,这反过来会取消延迟分支。
这样,如果抛出异常,则退出并行并继续工作流。根据您想要的行为,您可能希望将并行包装在 try-catch 中。
【讨论】:
@Konstantinos Palaiodimos 的回答是正确的方向,但分支 2 有循环,该循环将连续执行直到 maxWaitTime 并最终抛出异常。因此,为了确保在分支 2(执行 while 循环)中超时检查后控制返回到分支 1(Excel 范围),需要将延迟添加到分支 2。 如果分支 2 有延迟,则控制将在该延迟期间返回分支 1 以检查宏执行是否完成,如果宏未完成,则再次控制返回分支 2,循环继续直到 maxWaitTime 或直到宏执行完成
【讨论】: