Три различных варианта запуска позволяют запланировать автоматизацию заранее:
Первый параметр, Time.ScheduledTimeEvent , позволяет запланировать запуск автоматизации либо в определенный точный момент времени в будущем, либо на регулярной основе, в зависимости от времени по часам или солнечного события (то есть восхода или захода солнца).
Например, этот стартовый модуль запускает автоматизацию в 22:00 каждый день:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
В качестве альтернативы можно указать событие по солнечному времени вместо обычного времени. Параметром для такого типа стартера является структура SolarTimeStruct состоящая из:
-
type, который может быть либоSolarTimeType.Sunrise, либоSolarTimeType.Sunset. -
offsetпозволяет сдвинуть время начала срабатывания относительно солнечного события на любое значение. Положительные значения вводят задержку после солнечного события, а отрицательные значения приводят к срабатыванию стартера до солнечного события.
Следующий пример — это скрипт, который запускает автоматизацию за 15 минут до восхода солнца каждый день:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
Вторые два варианта — это запуски повторяющихся запланированных событий , которые позволяют создавать автоматизации, запускающиеся периодически в соответствии с более конкретными критериями, которые могут включать как временные, так и календарные условия.
Time.RecurringClockTimeScheduledEvent позволяет запланировать автоматизацию на основе одного или нескольких условий по времени или дате. Этот стартовый модуль использует синтаксис, аналогичный тому, который используется утилитой cron в Unix для указания расписания повторяющейся автоматизации.
Time.RecurringSolarTimeScheduledEvent позволяет запланировать автоматизацию на основе времени восхода или захода солнца, при желании в сочетании с условием, заданным в календаре.
выражения cron
Возможно, вам уже знакома команда cron , используемая в системах Unix и Linux для планирования повторяющихся задач.
Для запуска повторяющихся запланированных событий используется синтаксис выражений планирования, аналогичный тому, который используется в cron , поэтому выражения планирования, используемые с этими запускающими процессами, называются выражениями cron .
Существует несколько различных «вариантов» cron , и в этих реализациях есть несколько вариантов синтаксиса. Выражения cron для запуска повторяющихся запланированных событий используют тот же синтаксис, что и планировщик Quartz . Синтаксис выражений cron в Quartz описан в документации к CronExpression в Quartz .
Примеры
Вот несколько примеров для иллюстрации.
| Вариант использования | Второй | Минута | Час | День месяца | Месяц | День недели | Год |
|---|---|---|---|---|---|---|---|
| Запускать каждые 24 часа, в полночь. | 0 | 0 | 0 | ? | * | * | * |
| Забег проходит каждый вторник в 6:00 утра. | 0 | 30 | 19 | ? | * | 3 | * |
| Запуск в четверть часа каждый час в течение февраля. | 0 | 15 | * | ? | 2 | * | * |
| Бегать раз в час | 0 | 0 | * | ? | * | * | * |
| Запускается каждые 24 часа, в полночь, с января по март, в будний день, ближайший к 1-му числу месяца. | 0 | 0 | 0 | ? | 1-3 | 1W | * |
| Во второй четверг февраля, раз в час, в четверть первого. | 0 | 15 | * | ? | 2 | 5#2 | * |
| Запуск в четверть часа каждый час в последний день февраля. | 0 | 15 | * | L | 2 | ? | * |
| Запуск в 6:00 утра каждый вторник и четверг. | 0 | 30 | 19 | ? | * | 3,5 | * |
RecurringClockTimeScheduledEvent
В стартере RecurringClockTimeScheduledEvent строка выражения cron присваивается полю Time.RecurringClockTimeScheduledEvent.cronExpression .
Ниже приведён пример запуска события RecurringClockTimeScheduledEvent , которое запускает автоматизацию в 20:00 каждую среду апреля:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
Стартовый метод RecurringSolarTimeScheduleEvent принимает два параметра:
- Структура
SolarTimeStruct. -
cronExpression: Подмножество выраженияcron, состоящее только из полей «День месяца», «Месяц», «День недели» и «Год». Солнечное время определяет точное время начала автоматизации, поэтому поля «Секунда», «Минута» и «Час» опущены.
Следующий пример — это скрипт, который запускает автоматизацию через час после восхода солнца каждую среду апреля:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }