UiPath Orchestrator Triggers - Cron Expression 适用于每月的特定日期或下一个工作日(如果不是工作日)

UiPath Orchestrator Triggers - Cron Expression For specific day of month or next working day if not a working day

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

0 0 15 21W * ? *

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

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

尝试搜索答案,但没有找到与摘要相符的答案。

我使用这个网站来构建我的表达式(这是一个很棒的工具),但它只有 'nearest day' 的选项,而不是给定月份特定日期的下一个工作日:https://www.freeformatter.com/cron-expression-generator-quartz.html

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

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

我认为 2. idea 是最好的。当然,您有 365 个职位 runs/year。但是,当您让辅助进程保持智能时,这将只是几秒钟。

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

我们遇到了完全相同的问题。由于 UiPath 不提供开箱即用的可行解决方案,我们将使用以下策略解决该限制:我们触发实际作业 每天,考虑 custom-built, static NonWorkingDay-list 这只会抑制机器人每天的执行,我们不希望它 运行.

需要这些步骤:

  1. 获取 2053 年左右之前所有已知银行假日、周六和周日的列表...

  2. 使用脚本构建静态 exclusion-list(伪代码。一旦我们实际实施了解决方案,我将更新答案):

    1. get all valid execution dates
    loop through every 28th of the month until end of 2053
      if the date is in the bankHolidayList then
        loop until the next bankDay is found
          add it to the list of valid ExecutionDates
     else
        add the date to the validExecutionDate-list
    
    2. build exclusion-list
    loop through every day until end of 2053
      if the date is not in the validExecutionDate-list
        add it to the exclusionDate-list
    
  3. 相应地格式化 csv 并将其作为 NonWorkingDay-List

    上传到 orchestrator 租户
  4. 使用上传的 NonWorkDay-Calendar

    ,每天在您需要的时间将触发器更新为 运行

虽然接受的答案肯定也有效,但我们更愿意采用这种方法,因为拥有一个除了执行 UiPath 触发器之外什么都不做的单独机器人对我来说似乎并不合适。使用这种方法,我们没有可能需要维护的额外代码。

在我看来,没有开箱即用的解决方案是因为缺少 UiPath 将(希望)修复到 2053 年底的功能;-)

干杯