如何防止UiPath陷入呼叫宏阶段?

时间:2019-05-22 04:53:34

标签: vba uipath

我正在使用UiPath Workflow中的调用宏来调用宏。令人担忧的是,宏处理将永远冻结,导致宏执行挂起,并且进程将永远卡在Call宏中的优点之一。

有什么方法可以修改UiPath工作流,以便如果在15分钟内未完成Call宏活动,则机器人会引发异常?

3 个答案:

答案 0 :(得分:2)

有一种方法可以完成,让我尝试向您介绍:

您的解决方案将需要3个变量,如下所示:

  1. 一个用于存储您的等待时间直到抛出异常的时间,类型为 TimeSpan
  2. 一个用来声明您当前执行类型为 DateTime
  3. 的开始时间
  4. 一个用于通知是否超过了默认的执行等待时间的类型 Boolean

enter image description here

然后,您需要使用并行活动,其中 Excel Application范围 Execute Macro 将与同时运行,它将不断比较开始时间和您设置的等待时间。如果超过默认时间值设置,将引发异常。检查以下解决方案示例:

enter image description here

在这种情况下,因为我们在 Try-Catch 块中包含了 Parallel 动作,所以您需要在 Catches 部分中指定异常表达式,因为投掷将被接球覆盖,如下所示:

enter image description here

第二种选择是在没有 Try-Catch 的情况下执行此操作,然后将显示 Throw 异常,请检查以下解决方案:

enter image description here

另外,您需要通过如下图所示相应地设置异常消息来修改 Throw 操作:

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

您可以将您的call宏包装在并行中,其中您在第二个分支中具有延迟和Throw Exception。延迟应该是您想要的超时值,即15分钟。

您还需要并行输入boolean类型的局部变量作为condition property的输入。当/如果宏调用返回,则将此布尔值设置为True,这将取消延迟分支。

这样,如果引发异常,则并行退出,工作流程继续。根据您的期望行为,您可能希望将并行包装在try-catch中。

答案 2 :(得分:0)

@Konstantinos Palaiodimos 的回答是正确的方向,但分支 2 有循环,该循环将持续执行直到 maxWaitTime 并最终抛出异常。因此,为了确保在分支 2(Do while Loop)中超时检查后控制返回到分支 1(Excel 范围),需要向分支 2 添加延迟。 如果分支 2 中存在延迟,则控件将在该延迟期间返回分支 1 以检查宏执行是否完成,如果宏未完成,则控制再次返回分支 2 并且循环继续直到 maxWaitTime 或直到宏执行完成