使用 Azure 逻辑应用中的定期触发器创建、计划和运行重复任务和工作流

若要按特定的计划定期运行任务、进程或作业,可以使用内置的“定期”触发器(在 Azure 逻辑应用中以本机方式运行)来启动逻辑应用工作流。 可以设置启动工作流的日期、时间和时区,以及设置设置重复该工作流的定期计划。 如果触发器由于某种原因错过了重复周期(例如,由于中断或工作流禁用而错过),则此触发器不会处理错过的重复周期,但会按下一个计划的时间间隔重启重复周期。 有关内置计划触发器和操作的详细信息,请参阅使用 Azure 逻辑应用计划和运行定期自动执行的任务和工作流

下面是此触发器支持的一些模式,以及更高级的定期计划和复杂计划:

  • 立即运行,并每隔 n 秒、分钟、小时、天、周或月重复运行。

  • 在特定的日期和时间启动,然后运行并每隔 n 秒、分钟、小时、天、周或月重复运行。

  • 运行并在每天的一个或多个不同时间(例如 8:00 AM 和 5:00 PM)重复。

  • 运行并在每周的特定星期日期(例如星期六和星期日)重复。

  • 运行并在每周的特定星期日期和时间(例如星期一到星期五的 8:00 AM 和 5:00 PM)重复。

有关此触发器与“滑动窗口”触发器之间的差异或有关计划重复执行工作流的详细信息,请参阅使用 Azure 逻辑应用计划和运行定期自动执行的任务、流程和工作流

提示

若要触发逻辑应用并且在将来仅运行一次,请参阅仅运行一次作业

先决条件

添加重复触发器

  1. 登录到 Azure 门户。 创建空白逻辑应用。

  2. 显示逻辑应用设计器后,在搜索框中输入 recurrence 作为筛选器。 逻辑应用工作流的第一步是从触发器列表中选择此触发器。定期

    选择“定期”触发器

  3. 设置定期计划的间隔和频率。 在此示例中,请将这些属性设置为每周运行工作流。

    设置间隔和频率

    属性 JSON 名称 必须 类型 说明
    时间间隔 interval Integer 一个正整数,描述工作流基于频率运行的频繁度。 下面是最小和最大间隔:

    - 月:1-16 个月
    - 周:1-71 周
    - 天:1-500 天
    - 小时:1-12,000 小时
    - 分钟:1-72,000 分钟
    - 秒:1-9,999,999 秒

    例如,如果间隔为 6,频率为“月”,则重复周期为每 6 个月。

    频率 frequency String 定期计划的时间单位:“秒”、“分钟”、“小时”、“天”、“周”或“月”

    重要

    如果某个定期触发未指定具体的开始日期和时间,则在保存或部署逻辑应用时,会立即运行第一次定期触发,而不管触发器的定期设置如何。 若要避免此行为,请提供你希望运行第一次定期触发的开始日期和时间。

    如果某个定期触发未指定任何其他高级计划选项(例如具体时间)来运行将来的定期触发,则这些将来的定期触发会以上一次运行时间为基础。 因此,这些定期触发的开始时间可能会因存储调用期间的延迟等因素而发生偏移。 为了确保逻辑应用不会错过定期触发(特别是在频率为几天(或更长时间)一次的情况下),请尝试以下选项:

    • 提供定期触发的开始日期和时间,以及运行后续定期触发的具体时间,这可以通过“在这些小时”和“在这些分钟”属性来进行,仅适用于“天”和“周”频率。

    • 使用滑动窗口触发器,而不是使用重复触发器。

  4. 若要设置高级计划选项,请打开“添加新参数”列表。 选择的任何选项会在选定后显示在触发器中。

    高级计划选项

    属性 JSON 名称 必须 类型 说明
    时区 timeZone String 仅当指定启动时间时才适用,因为此触发器不接受 UTC 时差。 选择要应用的时区。
    开始时间 startTime String 提供一个开始日期和时间,该日期和时间在未来最长为 49 年,并且必须遵循 UTC 日期时间格式的 ISO 8601 日期时间规范,但没有 UTC 时差:

    如果选择了时区,则格式为 YYYY-MM-DDThh:mm:ss

    -或-

    如果未选择时区,则格式为 YYYY-MM-DDThh:mm:ssZ

    例如,如果需要 2020 年 9 月 18 日下午 2 点,则指定“2020-09-18T14:00:00”并选择时区(如“太平洋标准时间”)。 或者,指定“2020-09-18T14:00:00Z”且不选择时区。

    重要提示: 如果未选择时区,必须在末尾添加字母“Z”(无空格)。 这个“Z”指等效的航海时间。 如果选择时区值,则无需在“开始时间”值的末尾添加“Z”。 如果这样做,则逻辑应用会忽略时区值,因为“Z”表示 UTC 时间格式。

    对于简单计划,开始时间指首次运行时间;对于复杂计划,触发器的激发时间不会早于开始时间。 可通过哪些方式使用开始日期和时间?

    在这些日期 weekDays 字符串或字符串数组 如果选择“周”,则可以选择要运行工作流的一天或多天:“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”和“星期日”
    在这些小时 hours 整数或整数数组 如果选择了“天”或“周”,则可以从 0 到 23 的范围内选择一个或多个整数,作为当天要运行工作流的小时时间。

    例如,如果指定“10”、“12”和“14”,则会将上午 10 点、中午 12 点和下午 2 点作为当天的小时,但当天的分钟则根据定期启动的时间计算。 若要设置一天中的特定分钟,例如上午 10 点、中午 12 点和下午 2 点,请使用“在这些分钟”属性指定这些值。

    在这些分钟 minutes 整数或整数数组 如果选择了“天”或“周”,则可以从 0 到 59 的范围内选择一个或多个整数,作为要运行工作流的小时时间的分钟时间。

    例如,可以指定“30”作为分钟标记并使用前面示例中的当天小时时间,这样,便可以指定10:30 AM、12:30 PM 和 2:30 PM 作为开始时间。

    注意:有时,已触发运行的时间戳可能与计划时间相差最多 1 分钟。 如果需要将时间戳完全按计划传递给后续操作,则可以使用模板表达式来相应地更改时间戳。 有关详细信息,请参阅表达式的日期和时间函数

    例如,假设当天是 2020 年 9 月 4 日星期五。 以下“定期”触发器不会在开始日期和时间 2020 年 9 月 18 日星期五上午 8 点(太平洋标准时间)之前激发。 但是,该定期计划设置为仅在每个星期一的 10:30 AM、12:30 PM 和 2:30 PM 运行。 因此,首次激发触发器并创建逻辑应用工作流实例的时间为星期一上午 10 点 30 分。 若要详细了解开始时间的工作方式,请参阅这些开始时间示例

    将来的运行发生在同一天的 12:30 PM 和 2:30 PM。 每个定期计划会创建其自身的工作流实例。 之后,在下一个星期一,整个计划会再次从头开始重复。 还有哪些计划示例?

    高级计划示例

    备注

    仅当选择“天”或“周”作为频率时,触发器才显示指定的定期计划的预览。

  5. 现在,请使用其他操作生成剩余的工作流。 有关可添加的其他操作,请参阅 Azure 逻辑应用的连接器

工作流定义 - 定期

在逻辑应用的基础工作流定义(使用 JSON)中,可以通过选定的选项查看“定期”触发器定义。 若要查看此定义,请在设计器工具栏上选择“代码视图”。 若要返回到设计器,请选择设计器工具栏上的“设计器”。

本示例介绍了“定期”触发器定义在基础工作流定义中看起来是什么样的:

"triggers": {
   "Recurrence": {
      "type": "Recurrence",
      "recurrence": {
         "frequency": "Week",
         "interval": 1,
         "schedule": {
            "hours": [
               10,
               12,
               14
            ],
            "minutes": [
               30
            ],
            "weekDays": [
               "Monday"
            ]
         },
         "startTime": "2020-09-07T14:00:00Z",
         "timeZone": "Pacific Standard Time"
      }
   }
}

后续步骤