Orchestrator
2021.10
False
横幅背景图像
Orchestrator 用户指南
上次更新日期 2024年4月19日

关于触发器

触发器使您能够以预先计划的方式,以固定的时间间隔(时间触发器)或每当有新项目添加到队列中时(队列触发器)执行作业。“触发器”页面使您可以创建新触发器,管理现有触发器以及立即为任何现有触发器启动作业。

重要提示:

触发器时区:

在触发器上设置的时区不受租户时区的限制。 但是,如果您使用非工作日日历,则无法设置不同的时区。

时间触发器将根据触发器级别上定义的时区启动。 队列触发器是根据队列项目处理启动的。

根据触发器时区禁用时间触发器和队列触发器。

重要提示:

触发器禁用:

默认情况下,如果触发器在过去一天未能成功启动,则该触发器将在启动失败 10 次后自动禁用。

可以使用 Triggers.DisableWhenFailedCount 参数自定义此值。

时间触发器

使您可以计划作业的定期开始时间。

为流程添加时间触发器后,您可以预期以下内容:

  1. 触发器会在计划的时间使用您选择的分配、帐户和计算机选项创建作业。 这并不等同于作业的实际执行。
  2. 机器人可用后,将执行在步骤 1 中创建的作业。 默认情况下,如果触发器已有待处理作业,则在执行第一个作业之前,不会创建新作业。

支持输入和输出参数的流程的输入值也可以在此级别管理。

执行目标

您可以配置多个规则,具体取决于执行哪些关联的流程。

 

描述

动态分配

动态分配

根据给定的触发条件定义一个流程要执行的次数。此选项使您可以最大程度地利用资源。一旦机器人变为可用状态,它就会根据提供的触发器执行指示的流程。

 

帐户

该流程在特定帐户下执行。 只有指定帐户,Orchestrator 才会动态分配计算机。 同时指定帐户和计算机意味着作业会在该帐户-计算机对上启动。

 

计算机

该流程将在附加到所选计算机模板的其中一台主机上执行。 只有指定计算机,Orchestrator 才会动态分配帐户。 同时指定帐户和计算机意味着作业会在该帐户-计算机对上启动。

备注:

确保将与作业类型匹配的运行时分配给关联的计算机模型。仅显示与活动文件夹关联的已连接主机。

选择有效的帐户-计算机映射

该流程可以在多个特定的帐户-计算机对上执行。

注意:如果与 SQL 数据库的连接由于任何原因而断开,则本应在那时触发的触发器将不会触发,并生成错误级别的警示。

排队的作业场景

  1. 如果您在同一机器人上设置了多个触发器,并且它们的执行时间至少重叠了一次,则作业将排队,处于挂起状态。机器人按时间顺序执行排队的作业。
  2. 如果在同一机器人上多次计划了同一流程,并且它们的执行时间重叠,则只有一个流程以待定状态中排队。例如,如果将 Robot X 上的流程 A 安排为在 11:20、11:21 和 11:25 运行,则行为如下:

    • 在 11:20 执行第一个流程。
    • 如果第一次执行在第二次触发之前完成:

      • 第二个触发器已处理。

        • 如果此执行在 11:25 触发器之前完成,则后者也将执行。
        • 如果 11:21 触发器的执行未在 11:25 触发器之前完成,则后者将以挂起状态添加到队列中。
    • 如果第一个执行在第二个触发器之前未完成:
      • 11:21 触发器处于队列中,为挂起状态。

        • 如果 11:21 触发器的执行在 11:25 触发器之前完成,则后者也将执行。
        • 如果 11:21 触发器的执行启动了,但未在 11:25 触发器之前完成,则后者将以挂起状态加入队列中。
        • 如果 11:21 触发器在 11:25 触发器应开始时仍处于待定状态,则后者将不再执行或添加到队列中,并显示以下消息:“对于此流程,机器人已经有待定作业。”
  3. 如果要在任何可用的机器人上多次执行一个流程,则可以使用“执行目标”选项卡上的“动态分配”选项来执行。作业在相应的环境中排队,并处于挂起状态,每当机器人可用时,都会执行队列中的第一个作业。这样,在有待处理的作业时,不会有机器人处于空闲状态。

    假设您要运行一个流程 7 次。计划触发后,会将 7 个待处理作业添加到环境工作负载中,而不会分配给特定的机器人。可能有两种情况:

    • 触发时至少有 7 个机器人可用 - 向每个机器人分配一个作业,以便一次性执行所有作业。
    • 触发时可用的机器人少于 7 个(例如 4 个)- 向 4 个机器人中的每个机器人分配一个作业,如果新机器人或 4 个机器人之一可用,则机器人将接管剩余 3 个机器人的另一个作业。在没有剩余作业之前,每个可用的机器人都会发生这种情况。
  4. 如果两个或多个触发器运行相同的流程,每个触发器执行不同的次数,则在下一次触发时,它们之间的最大作业数将添加到环境工作负载中;他们不会累积。想象一下以下情况:触发器 A 运行 13 次,触发器 B 运行 20 次。可能会出现以下情况:

    • A 和 B 同时触发 - 环境工作负载中有 20 个作业(13 到 20 之间的最大值)排队。
    • B 先触发 - 20 个作业排队。

      • 如果在 B 的触发时间和 A 的触发时间之间执行了 7 个或更多作业(例如执行了 9 个作业,剩余 11 个待处理作业),则环境工作负载中有 13 个作业(11 到 13 之间的最大值)排队。
      • 如果在 B 的触发时间和 A 的触发时间之间执行的作业少于 7 个(例如执行了 5个,剩余 15 个待处理作业),则没有更多作业排队,因为已有超过 13 个作业待处理。此外,系统还会显示以下消息:对于此流程,机器人已经有待定作业
    • A 先触发 - 13 个作业排队。

      • 每当在 A 的执行期间触发 B 时,最多会向环境中添加 20 个作业,具体取决于 A 中正在进行或已执行的作业数量。假设已执行 6 个作业。当 B 触发时,将添加 14 个作业,从而达到 20 个作业的上限。
  5. 如果计划多次运行相同的流程,则相关队列中的作业将限制为在定义计划时在执行目标选项卡上指定的执行次数。它们不会随触发器的每次启动累加。

    假设您要每 30 分钟运行相同的流程 10 次。首次启动触发器时,将有 10 个作业排队。如果在两次触发之间执行的作业少于 10 (例如 4 个),则在下一次触发时仅有 6 个新作业排队,因为该流程的待定作业数最多为 10。

队列触发器

可以在创建触发器后或将新项目添加到队列中时立即启动流程。触发器在与所选流程关联的环境中运行。

重要提示:队列触发器的实现针对使用具有内部循环的流程进行了优化,以便在退出之前处理所有可用的队列项目。如果流程不实施此策略,则不会产生最佳体验,并且可能无法满足所需的业务要求。

有以下三个选项可帮助您配置流程触发的规则:

字段

描述

触发第一个作业的最小项目数

仅在目标队列中至少有这个数量的新项目之后,才开始项目处理作业。

延迟的队列项目不计算在内。

允许同时等待和运行的最大作业数

允许的待处理作业和正在运行的作业的最大数量(一起计算)。

对于同时允许的 2 个或多个作业,需要按如下所述定义第三个选项。

每 __ 个新项目触发另一个作业。

在为第一个选项定义的项目数的基础上,为每个添加的新项目数触发一个新作业。

仅在同时允许 2 个或更多作业(使用上述选项定义)时启用。

在计算为实现最佳资源分配而必须达到的目标作业数量时,Orchestrator 会同时考虑新队列项目和正在进行的队列项目。

示例
  1. 假设您将 3 个队列项目添加到队列中。 Orchestrator 根据新项目和正在进行的项目的数量计算目标作业的数量 => 需要 3 个目标作业。 Orchestrator 启动 3 个作业以处理 3 个队列项目。 这 3 个项目将移至“正在进行”。
  2. 将另外 2 个新项目添加到队列中。 Orchestrator 根据新项目和正在进行的项目数量计算作业数量 => 需要 5 (3+2) 个目标作业。 Orchestrator 启动 2 个新作业,以达到 5 个的目标。

为了处理在加入队列时无法处理的队列项目(包括重试项目),默认情况下每 30 分钟执行一次未处理项目检查,如果满足触发条件,则会再次启动触发器。此检查可确保在以下情况下队列中的所有项目都能得到处理:

  • 队列项目添加到队列的速度比使用可用资源处理队列项目的速度要快得多。
  • 队列项目是在非工作日添加到队列中的,但是只能在工作时间进行处理。
  • 队列项目处理将推迟到以后的时间。经过这段时间后,一旦经过 30 分钟的检查确定,便可以对其进行处理。

    注意:默认检查时间为 30 分钟,因此在非工作时间存在资源阻塞的风险。为避免这种情况,请确保在工作日结束时没有未处理的项目。如果不可能,请确保触发的流程不需要人工干预。
    注意:您可以使用 Queue.ProcessActivationSchedule 参数调整默认为 30 分钟的检查间隔。

示例

我有两个作业:

  • 其中一个作业会在 20 秒内每秒向目标队列添加 3 个项目(共 60 个项目)。
  • 另一个作业会每秒处理目标队列中的 1 个项目。

我已将触发器定义如下:

  • 触发第一个作业的最小项目数31
  • 允许同时等待和运行的最大作业数3
  • 10新项目触发另一个作业

我启动向队列添加项目的作业。

  1. 11 秒(33 个项目)后,将触发第一个项目处理作业。
  2. 再过 4 秒(12 个项目)后,将触发第二个项目处理作业。
  3. 再过 4 秒(12 个项目)后,将触发第三个项目处理作业。

直到结束添加队列项目时,第一个作业已处理 9 个项目,第二个作业已处理 5 个项目,第三个作业已处理 1 个项目。也就是说,三个作业在 20 秒内处理了 15 个项目。

这意味着剩余 45 个(60-15)项目待处理。有 3 个作业,每个作业每秒处理 1 个项目,这意味着需要 15 秒才能处理剩余项目。

总计 35 秒。

执行目标

您可以配置多个规则,具体取决于执行哪些关联的流程。

描述

 

帐户

该流程在特定帐户下执行。 只有指定帐户,Orchestrator 才会动态分配计算机。 同时指定帐户和计算机意味着作业会在该帐户-计算机对上启动。

计算机

该流程将在附加到所选计算机模板的其中一台主机上执行。 只有指定计算机,Orchestrator 才会动态分配帐户。 同时指定帐户和计算机意味着作业会在该帐户-计算机对上启动。

备注:

确保将与作业类型匹配的运行时分配给关联的计算机模型。仅显示与活动文件夹关联的已连接主机。

作业计数策略

您可以使用 Triggers.JobsCountStrategy 参数,以选择通过触发器启动作业的策略。提供以下选项:

  • PerProcess - 触发器启动指定数量的作业,同时考虑到指定流程的所有待处理作业。例如,为同一流程定义的两个触发器分别启动 3 个和 5 个作业。如果第一个触发器在给定的时间点启动了 3 个作业,则当第二个触发器触发时,将启动 2 个作业,以达到 5 个所需的作业。
  • PerTrigger - 触发器启动指定数量的作业,同时考虑到该触发器先前启动的任何现有作业。例如,定义了一个触发器以在给定的时间点启动 9 个作业。如果再次触发此触发器之前已成功完成 2 个作业,则 Orchestrator 将启动另外 2 个作业,以达到 9 个所需的作业。
  • NoLimit - 触发器将启动指定数量的作业,不考虑任何现有的待处理作业。例如,定义了一个触发器以在给定的时间点启动 5 个作业。第二次触发触发器时,将启动另外 5 个作业。

非工作日

这使您可以为每个租户定义多个非工作日列表,每个都有自己的日期集,您可以根据需要在其上将触发器配置为不运行。这意味着,您可以配置长期触发器,使其不会在公共假日、周末或其他不进行正常业务活动的日子中启动。您可以在设置页面的非工作日选项卡中定义或上传此类日历。默认情况下,将创建节假日日历,以帮助您更轻松地定义第一批非工作日。一旦选定日历中定义的非工作日结束,触发器将照常启动。

要将这些限制中的任何一项应用于触发器,您需要在创建新触发器或编辑现有触发器时,从非工作日限制下拉列表中选择所需的日历。只能为一个触发器选择一个日历。请注意,在非工作日选项卡上编辑日历也会影响已在非工作日限制下拉列表中选择该日历的触发器。

注意:使用非工作日时,触发器时区必须与租户时区(“租户”>“设置”>“常规”)相同,因为不能为不同时区应用日历限制。没有显式定义时区的租户将继承主机的时区。
备注:

请注意,添加和删除非工作日是在租户级别进行审核的。

  • 时间触发器
  • 执行目标
  • 排队的作业场景
  • 队列触发器
  • 示例
  • 执行目标
  • 作业计数策略
  • 非工作日

此页面是否有帮助?

获取您需要的帮助
了解 RPA - 自动化课程
UiPath Community 论坛
Uipath 白色徽标
信任与安全
© 2005-2024 UiPath. All rights reserved.