1

我目前有这个 Cron 表达式,用于触发 UiPath Orchestrator 中的进程:

0 0 15 21W * ? *

在每个月 21 日最近的工作日下午 3 点运行。

但是,如果 21 日是非工作日,我需要它在下一个工作日下午 3 点运行。

尝试寻找答案,但没有什么完全符合简报。

我使用这个网站来构建我的表达方式(这是一个很棒的工具),但它只有“最近一天”的选项,而不是下一个工作日给定的一个月中的特定日期: https ://www.freeformatter.com/cron-表达式-生成器-quartz.html

4

1 回答 1

1

由于您不需要最近的一天,因此您无法使用 Orchestrator cronjob 的功能。我建议创建一个包装器过程,如下所示:

  1. 创建一个新进程,我们称之为StartJobByCheckingDate
  2. 现在创建一个StartJobByCheckingDate每天下午 3 点开始的触发器
  3. 因此,该流程现在是您所需流程的经理
  4. 现在我们需要检查是否是第 21 天
  5. 在这里你有不同的方法来解决它
    1. 您可以在流程中创建一个DataTable甚至是一个,其中包含应触发所需流程的所有不同日期(但这是非常手动的,您可能不想每年更新,因此这可能不是最聪明的,但最简单的解决方案)fileStartJobByCheckingDate
    2. 另一个想法是检查当天是否是第 21 天。如果是这样,请检查是否是周六/周日(非工作日)。
      • 如果true:您现在可以在某处创建一个空的虚拟文件,以跟踪 21 日是非工作日,然后在第二天检查该文件是否存在,如果存在,则检查当天是否为工作日,如果是您再次删除文件并开始所需的过程
      • 如果false:直接启动您想要的过程

我认为 2.idea 会是最好的。当然,您每年有 365 个工作。但是,当您保持该助手进程智能时,这将只是几秒钟。

另一个不使用虚拟文件的想法是使用Entities。更聪明,但需要更多时间来熟悉。

于 2021-02-27T10:18:44.287 回答