【问题标题】:How to prevent UiPath from getting stuck in Call Macro Stage?如何防止 UiPath 卡在 Call Macro Stage?
【发布时间】:2019-05-22 04:53:34
【问题描述】:

我正在使用 UiPath 工作流中的调用宏调用宏。令人担忧的是,有时宏句柄将永远冻结,导致宏执行挂起,进程将永远卡在调用宏中。

有没有什么方法可以修改 UiPath 工作流程,以便如果调用宏活动未在 15 分钟内完成,机器人会抛出异常?

【问题讨论】:

    标签: vba uipath


    【解决方案1】:

    有一种方法可以做到这一点,让我尝试向您介绍:

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

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

    然后您需要在 Excel Application ScopeExecute Macro 上使用 Parallel activity 将与 While 循环一起运行 会不断比较开始时间和您设定的等待时间。如果超过设置的默认时间值,就会抛出异常。查看下面的解决方案示例:

    在这种情况下,由于我们在 Try-Catch 块中包围了 Parallel Action,因此您需要在 Catches 部分中指定异常表达式,因为Throw 将被 Catches 覆盖,如下所示:

    第二种选择是不使用Try-Catch,然后会显示Throw异常,请查看以下解决方案:

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

    希望这会有所帮助。

    【讨论】:

    • 我用一个简单的宏函数尝试了上面的代码,它显示了一个消息框。只有在抛出超时异常时才会弹出消息框。
    • 在这种情况下,prarallel 真的有效吗?我觉得不会,因为在执行宏时,机器人正在执行“执行宏”活动。只有当宏完成时,它才会从中出来。那么它是否能够切换到并行的另一个分支(在执行“执行宏”阶段时)?
    • 是的,它会起作用,需要添加的是如果宏成功,则将布尔变量 (excecutionMacroComplete) 的值更改为 True。我尝试将宏放置 2 分钟,将 maxWaitTime 变量放置 1 分钟。请记住,如果您在 Try-Catch 块中封装了 Parallel Action,那么您在 Catch 部分中设置的任何内容都将显示为异常,如果您不使用 Try 和 Catch,则会显示 Throw 消息。
    • @automaticSoldier 请检查上面的更新答案和评论。
    【解决方案2】:

    您可以并行包装您的调用宏,其中您在第二个分支中会有延迟和抛出异常。延迟应该是您想要的超时值,即 15 分钟。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2019-02-07
        • 2011-05-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多