Планирование и выполнение повторяющихся рабочих процессов с помощью триггера повторения в Azure Logic Apps

Область применения: Azure Logic Apps (Потребление + Стандартный)

Чтобы запустить и запустить рабочий процесс по расписанию, можно использовать универсальный триггер повторения в качестве первого шага. Можно задать дату, время и часовой пояс для запуска рабочего процесса и повторения для повторения этого рабочего процесса. В следующем списке содержатся некоторые шаблоны, которые этот триггер поддерживает вместе с более сложными повторениями и сложными расписаниями:

  • Выполняется по определенной дате и времени, а затем повторяется каждые n количество секунд, минут, часов, дней, недель или месяцев.

  • Незамедлительное выполнение и повторение каждые n секунд, минут, часов, дней, недель или месяцев.

  • Запустите немедленно и повторите ежедневно в одно или несколько конкретных раз, например 8:00 и 5:00.

  • Запустите немедленно и повторите еженедельно в определенные дни, такие как суббота и воскресенье.

  • Запустите немедленно и повторите еженедельно в определенные дни и время, например понедельник по пятницу в 8:00 утра и 5:00 вечера.

Примечание.

Дополнительные параметры планирования, такие как "В эти часы " и "В эти дни", доступны и работают только со встроенными триггерами опроса, такими как триггеры повторения и скользящего окна , которые непосредственно выполняются с средой выполнения Azure Logic Apps. Для соединителей, управляемых Корпорацией Майкрософт, размещенных и работающих в Azure, триггеры опроса вычисляют следующее повторение, используя только значения интервала и частоты , а не расширенные параметры планирования.

Триггер повторения не связан с какой-либо службой, поэтому триггер можно использовать практически с любым рабочим процессом, например рабочими процессами приложения логики потребления и рабочими процессами с отслеживанием состояния приложения логики "Стандартный". Этот триггер в настоящее время недоступен для рабочих процессов без отслеживания состояния приложения логики уровня "Стандартный".

Триггер повторения является частью встроенного соединителя schedule и выполняется в среде выполнения Azure Logic Apps в собственном коде. Дополнительные сведения о встроенных триггерах и действиях по расписанию см. в статье Планирование и выполнение повторяющихся автоматизированных задач и рабочих процессов с помощью Azure Logic Apps.

Необходимые компоненты

Добавление триггера повторения

В зависимости от того, является ли рабочий процесс типом "Потребление" или "Стандартный", выполните соответствующие действия.

  1. В портал Azure откройте ресурс приложения логики и пустой рабочий процесс.

  2. Выполните следующие общие действия, чтобы добавить встроенный триггер Schedule с именем "Повторение".

  3. Задайте интервал повторения и единицу времени. В этом примере задайте эти свойства для запуска рабочего процесса каждую неделю, например:

    Снимок экрана: конструктор рабочих процессов потребления с интервалом и частотой триггера повторения.

    Свойство Имя JSON Обязательное поле Type Описание
    Интервал interval Да Целое Положительное целое число, которое описывает, как часто выполняется рабочий процесс с учетом заданной частоты. Ниже приведены минимальные и максимальные интервалы.

    - Месяц: 1-16 месяцев
    - Неделя: 1-71 недели
    - День: 1-500 дней
    - Час: 1–12 000 часов
    - Минута: 1-72 000 минут
    — Секунда: 1–9 999 999 секунд.

    Например, если интервал равен 6, а значение частоты — "Месяц", то повтор будет происходить каждые 6 месяцев.
    Периодичность frequency Да Строка Единица времени для повторения: Секунда, Минута, Час, День, Неделя или Месяц.

    Важно. Если выбрать частоту дня, недели или месяца , а затем указать дату и время начала, убедитесь, что вы настроили повторение заранее. В противном случае рабочий процесс может пропустить первое повторение.

    - День. Настройте ежедневное повторение по меньшей мере за 24 часа до назначенного времени.

    - Неделя. Настройте еженедельное повторение по меньшей мере за 7 дней до назначенного времени.

    - Месяц: настройте ежемесячное повторение по крайней мере один месяц заранее.
  4. Ознакомьтесь со следующими рекомендациями при использовании триггера повторения .

    • Если вы не указываете определенную дату и время начала, первое повторение выполняется немедленно при сохранении рабочего процесса или развертывании ресурса приложения логики, несмотря на настройку повторения триггера. Чтобы избежать такого поведения, укажите дату и время начала выполнения первого повторения.

    • Если вы не указываете другие дополнительные параметры планирования, такие как определенное время для выполнения будущих повторений, эти повторения основаны на последнем времени выполнения. В результате время начала этих повторений может быть смещено из-за таких факторов, как временная задержка при вызовах хранилища.

    • Чтобы убедиться, что рабочий процесс не пропускает повторение, особенно если частота находится в днях или более длинных, попробуйте выполнить следующие действия.

      • Укажите дату и время начала повторения и определенное время для выполнения последующих повторений. Свойства с именем "В эти часы" и "На этих минутах", доступные только для частот дня и недели.

      • Для рабочих процессов приложения логики потребления используйте триггер скользящего окна, а не триггер повторения .

    • Если вы развертываете отключенный рабочий процесс потребления с триггером повторения с помощью шаблона ARM, триггер мгновенно запускается при включении рабочего процесса, если вы не задали параметр времени начала перед развертыванием.

  5. Чтобы задать дополнительные параметры планирования, откройте список Добавление нового параметра. Все выбранные параметры появляются в триггере после выбора.

    Свойство Имя JSON Обязательное поле Type Описание
    Часовой пояс timeZone Нет Строка Применяется только при указании времени начала, так как этот триггер не принимает смещение от UTC. Выберите часовой пояс, который необходимо применить. Дополнительные сведения см. в разделе "Часовые пояса по умолчанию".
    Время начала startTime Нет Строка Укажите дату и время начала, которое имеет максимум 49 лет в будущем и должно соответствовать спецификации времени даты ISO 8601 в формате времени UTC, но без смещения в формате UTC:

    ГГГГ-ММ-ДДThh:mm:ss при выборе часового пояса

    -или-

    ГГГГ-ММ-DDThh:mm:ssZ, если вы не выбираете часовой пояс

    Например, если требуется указать 18 сентября 2020 г. в 14:00, укажите "2020-09-18T14:00:00" и выберите часовой пояс, например "Тихоокеанское время". Или укажите "2020-09-18T14:00:00Z" без часового пояса.

    Важно! Если вы не выберите часовой пояс, необходимо в конце добавить букву Z без пробелов. Эта буква Z ссылается на соответствующее судовое время. Если вы выбираете значение часового пояса, не нужно добавлять Z в конце значения Время начала. В этом случае Logic Apps игнорирует значение часового пояса, поскольку Z обозначает время в формате UTC.

    В простых расписаниях время начала определяет первый случай выполнения задания, а в сложных расписаниях триггер срабатывает не раньше, чем наступит время начала. Как можно использовать дату и время начала?
    В эти дни weekDays No Строка или массив строк Если вы выбрали значение "Неделя", то можно выбрать один или несколько дней. В эти дни будет запускаться рабочий процесс: Понедельник, Вторник, Среда, Четверг, Пятница, Суббота и Воскресенье.
    В эти часы hours No Целое число или массив целых чисел Если вы выбрали "День" или "Неделя", можно выбрать одно или несколько целых чисел от 0 до 23. В эти часы будет запускаться рабочий процесс. Например, если указать "10", "12" и "14", вы получаете 10 утра, 12 вечера и 2 вечера в течение часов дня.

    Примечание. По умолчанию минуты дня вычисляются на основе начала повторения. Чтобы задать определенные минуты дня, например 10:00 AM, 12:00 PM и 2:00 PM, укажите эти значения с помощью свойства с именем В минутах.
    В эти минуты minutes No Целое число или массив целых чисел Если вы выбрали значение "День" или "Неделя", то можно выбрать одно или несколько целых чисел от 0 до 59. В эти минуты часа будет запускаться рабочий процесс.

    Например, если указать 30 минут и использовать предыдущий пример для часов, то вы получите 10:30, 12:30 и 14:30.

    Примечание. Иногда метка времени выполнения триггера может варьироваться до 1 минуты по расписанию. Если необходимо передать точную метку времени в соответствии с последующими действиями, можно использовать выражения шаблона, чтобы соответствующим образом изменить метку времени. Дополнительные сведения см. в разделе Функции даты и времени в выражениях.

    Снимок экрана: конструктор рабочих процессов потребления и триггер повторения с расширенными параметрами планирования.

    Например, предположим, что сегодня пятница, 4 сентября 2020 г. Следующий триггер повторения не запускается раньше указанной даты и времени начала, которая находится в пятницу, 18 сентября 2020 г. в 8:00 по Тихоокеанскому времени. Тем не менее для расписания повторения заданы значения 10:30, 12:30 и 14:30 только по понедельникам. При первом срабатывании триггера и создании экземпляра рабочего процесса в понедельник в 10:30. Дополнительные сведения о времени начала см. в этих примерах.

    Последующие запуски будут выполняться в 12:30 и 14:30 в тот же день. Каждое повторение создает собственный экземпляр рабочего процесса. После этого весь этот процесс повторяется снова в следующий понедельник. Какие еще существуют примеры повторений?

    Снимок экрана: рабочий процесс потребления и триггер повторения с примером расширенного планирования.

    Примечание.

    Триггер отображает предварительную версию для указанного повторения только при выборе дня или недели в качестве частоты.

  6. Теперь продолжайте создавать рабочий процесс с другими действиями.

Определение рабочего процесса — повторение

Определение триггера повторения можно просмотреть с выбранными параметрами, просмотрив базовое определение JSON для рабочего процесса в приложениях логики потребления и стандартных приложениях логики (только с отслеживанием состояния).

В зависимости от того, является ли приложение логики типом "Потребление" или "Стандартный", выберите один из следующих вариантов:

  • Потребление: на панели инструментов конструктора выберите представление кода. Чтобы вернуться к конструктору, на панели инструментов редактора представления кода выберите конструктор.

  • Стандартный: в меню рабочего процесса выберите представление кода. Чтобы вернуться к конструктору, в меню рабочего процесса выберите конструктор.

В следующем примере показано, как определение триггера повторения может отображаться в базовом определении 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"
      }
   }
}

Примечание.

В определении evaluatedRecurrence триггера повторения свойство отображается вместе со recurrence свойством, когда в критерии повторения отображается любая ссылка на выражение или параметр. Это evaluatedRecurrence свойство представляет вычисляемые значения из ссылки на выражение или параметр. Если критерии повторения не указывают никаких выражений или ссылок на параметры, evaluatedRecurrence то и recurrence свойства одинаковы.

В следующем примере показано, как изменить определение триггера, чтобы триггер выполнялся только один раз в последний день каждого месяца.

"triggers": {
    "Recurrence": {
        "recurrence": {
            "frequency": "Month",
            "interval": 1,
            "schedule": {
                "monthDays": [-1]
            }
        },
        "type": "Recurrence"
    }
}

Выполнять только один раз

Чтобы запустить рабочий процесс только один раз в будущем, можно применить планировщик: выполнить один раз шаблон рабочего процесса заданий , который доступен только для рабочих процессов приложения логики потребления. Этот шаблон использует триггер запроса и действие HTTP , а не триггер повторения , который не поддерживает этот шаблон повторения.

  1. В портал Azure создайте приложение логики потребления.

  2. В конструкторе откройте пустой рабочий процесс. На панели инструментов конструктора выберите Включить устаревший конструктор.

  3. На панели инструментов конструктора выберите Шаблоны.

  4. На открывающейся странице прокрутите видео до раздела "Шаблоны ".

  5. В списке категорий выберите "Расписание" и выберите следующий шаблон:

    Снимок экрана: выбранный шаблон с именем Планировщик запуска после заданий.

  6. На панели инструментов конструктора выберите "Общий доступный конструктор".

  7. Выполните следующие общие действия, чтобы добавить действие "Расписание " с именем "Задержка" до тех пор, пока не будет указано время, в течение которых начинается следующее действие.

Также можно запустить рабочий процесс с триггером запроса с именем "При получении HTTP-запроса" и передать время начала в качестве параметра для триггера.

Выполнение один раз в последний день месяца

Для этой задачи необходимо изменить триггер повторения в базовом определении JSON рабочего процесса с помощью представления кода, а не конструктора, используя следующий пример:

"triggers": {
    "Recurrence": {
        "recurrence": {
            "frequency": "Month",
            "interval": 1,
            "schedule": {
                "monthDays": [-1]
            }
        },
        "type": "Recurrence"
    }
}

Смена повторения триггера и смещение (летнее время)

При планировании заданий Azure Logic Apps помещает сообщение для обработки в очередь и указывает, когда это сообщение становится доступным, в зависимости от времени в формате UTC, когда было выполнено последнее задание, а также времени в формате UTC, когда запланировано выполнение следующего задания. Если вы указываете время начала для повторения, обязательно выберите часовой пояс, чтобы рабочий процесс приложения логики выполнялся в указанное время начала. Таким образом, время в формате UTC для приложения логики также смещается, адаптируясь к сезонному изменению времени. Повторяющиеся триггеры учитывают заданное расписание, в том числе любой указанный часовой пояс.

В противном случае, если часовой пояс не выбран, события перехода на летнее время могут повлиять на время выполнения триггеров. Например, время запуска сдвинется на один час вперед при переходе на летнее время и на один час назад при его отмене. Тем не менее в некоторых временных окнах может возникнуть проблема при сдвиге времени. Дополнительные сведения и примеры см. в статье Повторение при переходе на летнее время и стандартное время.

Следующие шаги