Эта документация была автоматически переведена ИИ.
Запланированная задача — это событие, которое запускается по условию времени. Существует два режима:
Когда система достигает момента времени (с точностью до секунды), который соответствует настроенным условиям запуска, будет запущен соответствующий рабочий процесс.
При создании рабочего процесса в списке рабочих процессов выберите тип «Запланированная задача»:

Для обычного режима сначала необходимо настроить время начала на любой момент (с точностью до секунды). Время начала можно установить как в будущем, так и в прошлом. Если время начала установлено в прошлом, система проверит, наступило ли оно, основываясь на настроенном условии повтора. Если условие повтора не настроено, и время начала находится в прошлом, рабочий процесс больше не будет запускаться.
Правило повтора можно настроить двумя способами:
После настройки правила повтора вы также можете задать условие завершения. Завершение может быть по фиксированному времени или по ограничению на количество выполненных запусков.
Использование поля времени коллекции для определения времени начала — это режим запуска, который объединяет обычные запланированные задачи с полями времени коллекции. Использование этого режима может упростить узлы в некоторых специфических рабочих процессах, а также сделать настройку более интуитивно понятной. Например, чтобы изменить статус просроченных неоплаченных заказов на «отменен», вы можете просто настроить запланированную задачу в режиме «Поле времени коллекции», выбрав время начала как 30 минут после создания заказа.
Если настроенное условие времени выполняется, но весь сервис приложения NocoBase находится в неактивном или остановленном состоянии, запланированная задача, которая должна была быть запущена в этот момент, будет пропущена. Более того, после перезапуска сервиса пропущенные задачи больше не будут запускаться. Поэтому при использовании вам, возможно, потребуется предусмотреть обработку таких ситуаций или запасные меры.
Когда в условиях завершения настроено ограничение по количеству повторов, учитывается общее количество выполнений для всех версий одного и того же рабочего процесса. Например, если запланированная задача была выполнена 10 раз в версии 1, и количество повторов также установлено на 10, этот рабочий процесс больше не будет запускаться. Даже если его скопировать в новую версию, он не будет запущен, если только количество повторов не будет изменено на число, большее 10. Однако, если рабочий процесс копируется как новый, счетчик выполнений будет сброшен до 0. Без изменения соответствующих настроек новый рабочий процесс сможет быть запущен еще 10 раз.
Интервал в правиле повтора отсчитывается относительно времени последнего запуска (или времени начала), тогда как расширенный режим запускается в фиксированные моменты времени. Например, если настроен запуск каждые 30 минут, и предыдущий запуск был 2021-09-01 12:01:23, то следующее время запуска будет 2021-09-01 12:31:23. В расширенном режиме, то есть в режиме cron, правила всегда настроены на запуск в фиксированные моменты времени. Например, можно настроить запуск в 01 и 31 минуту каждого часа.
Предположим, нам нужно каждую минуту проверять заказы, которые не были оплачены в течение 30 минут после создания, и автоматически изменять их статус на «отменен». Мы реализуем это, используя оба режима.
Создайте рабочий процесс на основе запланированной задачи. В настройках триггера выберите режим «Пользовательское время», установите время начала на любой момент не позднее текущего, для правила повтора выберите «Каждую минуту», а условие завершения оставьте пустым:

Затем настройте другие узлы в соответствии с логикой рабочего процесса: рассчитайте время 30 минут назад и измените статус неоплаченных заказов, созданных до этого времени, на «отменен»:

После активации рабочего процесса он будет запускаться каждую минуту, начиная с указанного времени, рассчитывая время 30 минут назад для обновления статуса заказов, созданных до этого момента, на «отменен».
Создайте рабочий процесс на основе запланированной задачи. В настройках триггера выберите режим «Поле времени коллекции», выберите коллекцию «Заказы», установите время начала на 30 минут после времени создания заказа, а для правила повтора выберите «Не повторять»:

Затем настройте другие узлы в соответствии с логикой рабочего процесса, чтобы обновить статус заказа с ID, соответствующим ID триггерных данных, и статусом «не оплачен» на «отменен»:

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