Tre diversi comandi iniziali ti consentono di pianificare un'automazione in anticipo:
Il primo, Time.ScheduledTimeEvent,
ti consente di pianificare l'avvio di un'automazione in un singolo istante preciso nel
futuro o su base ricorrente, in base all'ora o a un evento solare
(ovvero alba o tramonto).
Ad esempio, questo comando iniziale avvia l'automazione alle 22:00 ogni giorno:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
In alternativa, puoi specificare l'evento di ora solare anziché l'ora. Il
parametro per questo tipo di comando iniziale è una
SolarTimeStruct
composta da:
type, che èSolarTimeType.SunriseoSolarTimeType.Sunset.offset, che ti consente di spostare l'ora di inizio rispetto all'evento solare di un qualsiasi periodo di tempo. I valori positivi introducono un ritardo dopo l'evento solare, mentre i valori negativi fanno sì che il comando iniziale venga attivato prima dell'evento solare.
L'esempio seguente è un comando iniziale che avvia l'automazione 15 minuti prima dell'alba ogni giorno:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
Gli altri due comandi iniziali sono comandi iniziali di eventi pianificati ricorrenti, che ti consentono di creare automazioni che vengono eseguite periodicamente in base a criteri più specifici che possono includere condizioni basate su ora e calendario.
Time.RecurringClockTimeScheduledEvent
ti consente di pianificare un'automazione in base a una o più condizioni di ora o data.
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 di alba o tramonto, facoltativamente in combinazione con una condizione basata sul calendario.
Espressioni cron
Potresti già conoscere cron, un comando utilizzato sui sistemi Unix e Linux per pianificare job ricorrenti.
I comandi iniziali di 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 denominate espressioni cron.
Esistono diverse "varianti" di cron e diverse varianti di sintassi in queste implementazioni. Le espressioni cron
dei comandi iniziali di eventi pianificati ricorrenti utilizzano la stessa sintassi dello scheduler Quartz.
La sintassi delle espressioni cron di Quartz è spiegata in the documentation for Quartz's
CronExpression.
Esempi
Ecco alcuni esempi per illustrare.
| Caso d'uso | Secondo | Minuto | Ora | Giorno del mese | Mese | Giorno della settimana | Anno |
|---|---|---|---|---|---|---|---|
| Esegui ogni 24 ore, a mezzanotte | 0 |
0 |
0 |
? |
* |
* |
* |
| Esegui alle 6:00 ogni martedì | 0 |
30 |
19 |
? |
* |
3 |
* |
| Esegui ogni ora, al quarto d'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, nel giorno feriale più vicino al 1° del mese | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
| Il secondo giovedì di febbraio, una volta all'ora, al quarto d'ora | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| Esegui ogni ora, al quarto d'ora, l'ultimo giorno del mese di febbraio | 0 |
15 |
* |
L |
2 |
? |
* |
| Esegui alle 6:00 ogni martedì e giovedì | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
In un comando iniziale RecurringClockTimeScheduledEvent, la stringa dell'espressione cron viene
assegnata al
Time.RecurringClockTimeScheduledEvent.cronExpression
campo.
Di seguito è riportato un esempio di comando iniziale RecurringClockTimeScheduledEvent che avvia l'automazione alle 20:00, 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:
- Una
SolarTimeStruct. cronExpression: un sottoinsieme di un'espressionecroncomposta solo dai campi Giorno del mese, Mese, Giorno della settimana e Anno. L'ora solare determina l'ora esatta in cui verrà avviata l'automazione, pertanto i campi Secondo, Minuto e Ora vengono omessi.
L'esempio seguente è un comando iniziale che avvia 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 *")) }