Tre diversi comandi iniziali ti consentono di pianificare un'automazione in anticipo:
Il primo, Time.ScheduledTimeEvent
, consente di pianificare l'avvio di un'automazione in un singolo istante preciso nel futuro o su base ricorrente, in base all'ora dell'orologio o a un evento solare (ad es. alba o tramonto).
Ad esempio, questo comando iniziale avvia l'automazione alle 22:00 di ogni giorno:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
In alternativa, puoi specificare l'evento dell'ora solare anziché l'ora dell'orologio. Il parametro per questo tipo di comando iniziale è un SolarTimeStruct
costituito da:
type
, che può essereSolarTimeType.Sunrise
oSolarTimeType.Sunset
.offset
, che ti consente di modificare l'ora di inizio rispetto all'evento solare per qualsiasi quantità di tempo. I valori positivi introducono un ritardo dopo l'evento solare, mentre i valori negativi fanno sì che l'avviatore si attivi prima dell'evento solare.
L'esempio seguente è un comando iniziale che avvia l'automazione ogni giorno 15 minuti prima dell'alba:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
I due comandi iniziali successivi sono comandi iniziali per eventi pianificati ricorrenti, che ti consentono di creare automazioni che vengono eseguite periodicamente in base a criteri più specifici che possono includere condizioni basate sul tempo e sul calendario.
Time.RecurringClockTimeScheduledEvent
ti consente di pianificare un'automazione in base a una o più condizioni di data o ora.
Questo comando iniziale utilizza una sintassi simile a quella utilizzata dall'utilità cron
di Unix per specificare la pianificazione di un'automazione ricorrente.
Time.RecurringSolarTimeScheduledEvent
ti consente di pianificare un'automazione in base all'ora dell'alba o del tramonto, optionally in combinazione con una condizione basata sul calendario.
Espressioni cron
Potresti già conoscere cron
, un comando utilizzato sui sistemi Unix e Linux per pianificare i job ricorrenti.
I comandi iniziali per gli eventi pianificati ricorrenti utilizzano una sintassi di espressione di pianificazione simile a quella utilizzata da cron
e, per questo motivo, le espressioni di pianificazione utilizzate con questi comandi iniziali sono chiamate espressioni cron
.
Esistono diversi "flavor" di cron
e diverse varianti di sintassi tra queste implementazioni. Le espressioni cron
iniziale degli eventi pianificati ricorrenti utilizzano la stessa sintassi del programma schedulatore Quartz.
La sintassi delle espressioni cron
di Quartz è spiegata nella documentazione di CronExpression
di Quartz.
Esempi
Ecco alcuni esempi per chiarire.
Caso d'uso | Secondo | Minuto | Ora | Giorno del mese | Mese | Giorno della settimana | Anno |
---|---|---|---|---|---|---|---|
Esegui ogni 24 ore, a mezzanotte | 0 |
0 |
0 |
? |
* |
* |
* |
Esegui ogni martedì alle 06:00 | 0 |
30 |
19 |
? |
* |
3 |
* |
Eseguita alle 15:15, ogni ora, durante il mese di febbraio | 0 |
15 |
* |
? |
2 |
* |
* |
Esegui una volta all'ora | 0 |
0 |
* |
? |
* |
* |
* |
Esegui ogni 24 ore, a mezzanotte, da gennaio a marzo, il giorno feriale più vicino al 1° giorno del mese | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
Il secondo giovedì di febbraio, una volta ogni ora, a un quarto di ora | 0 |
15 |
* |
? |
2 |
5#2 |
* |
Esegui ogni ora a un quarto dopo l'ora, l'ultimo giorno del mese di febbraio | 0 |
15 |
* |
L |
2 |
? |
* |
Eseguila alle 06:00 ogni martedì e giovedì | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
In un comando iniziale RecurringClockTimeScheduledEvent
, la stringa dell'espressione cron
viene assegnata al campo Time.RecurringClockTimeScheduledEvent.cronExpression
.
Di seguito è riportato un esempio di comando iniziale RecurringClockTimeScheduledEvent
che avvia l'automazione alle 20:00 di ogni mercoledì di aprile:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
Il comando iniziale RecurringSolarTimeScheduleEvent
accetta due parametri:
- Un
SolarTimeStruct
. cronExpression
: un sottoinsieme di un'espressionecron
costituito solo dai campi Giorno-del-mese, Mese, Giorno-della-settimana e Anno. L'ora solare determina l'ora esatta di inizio dell'automazione, pertanto i campi Secondi, Minuti e Ore vengono omessi.
L'esempio seguente è un comando iniziale che fa avviare un'automazione un'ora dopo l'alba, ogni mercoledì di aprile:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }