在 Azure 逻辑应用中使用“滑动窗口”触发器来计划和运行处理连续数据的任务

适用于:Azure 逻辑应用(消耗)

若要定期运行那些必须以连续区块的形式处理数据的任务、进程或作业,可以使用滑动窗口触发器来启动逻辑应用工作流。 可以设置启动工作流的日期、时间和时区,以及设置设置重复该工作流的定期计划。 如果由于某种原因错过了重复周期(例如,由于中断或工作流禁用而错过),则此触发器会处理这些错过的重复周期。 例如,在数据库和备份存储之间同步数据时,请使用“滑动窗口”触发器,使数据在同步时没有产生间隔。 有关内置计划触发器和操作的详细信息,请参阅使用 Azure 逻辑应用计划和运行定期自动执行的任务和工作流

下面是此触发器支持的一些模式:

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

  • 在特定的日期和时间启动,然后运行并每隔 n 秒、分钟、小时、天、周或月重复运行。 使用此触发器时,可以指定过去的一个开始时间,以便运行所有过去的定期触发。

  • 将每个定期触发延迟特定的时间,然后再运行。

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

提示

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

先决条件

添加“滑动窗口”触发器

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

  2. 显示逻辑应用设计器后,在搜索框中输入 sliding window 作为筛选器。 从触发器列表中选择“滑动窗口”触发器,这是逻辑应用工作流的第一步。

    选择“滑动窗口”触发器

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

    设置间隔和频率

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

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

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

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

    高级定期选项

    如需更多定期选项,请打开“添加新参数”列表。 选择的任何选项会在选定后显示在触发器中。

    属性 必须 JSON 名称 类型 说明
    延迟 delay String 根据 ISO 8601 日期时间规范延迟每个定期的时间
    时区 timezone String 仅当指定启动时间时才适用,因为此触发器不接受 UTC 时差。 选择要应用的时区。
    开始时间 startTime 字符串 采用以下格式提供启动日期和时间:

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

    -或-

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

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

    注意:此开始时间必须遵循 ISO 8601 日期时间规范,采用 UTC 日期时间格式但没有 UTC 时差。 如果未选择时区,必须在末尾添加字母“Z”(无空格)。 这个“Z”指等效的航海时间。

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

  4. 现在,请使用其他操作生成剩余的工作流。

工作流定义 - 滑动窗口

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

本示例介绍了“滑动窗口”触发器定义在基础工作流定义中看起来是什么样的,具体说来,对于按小时进行的重复触发,每个重复触发的延迟是 5 秒:

"triggers": {
   "Recurrence": {
      "type": "SlidingWindow",
      "Sliding_Window": {
         "inputs": {
            "delay": "PT5S"
         },
         "recurrence": {
            "frequency": "Hour",
            "interval": 1,
            "startTime": "2019-05-13T14:00:00Z",
            "timeZone": "Pacific Standard Time"
         }
      }
   }
}

后续步骤