Comandi iniziali degli eventi pianificati ricorrenti

Tre diversi comandi iniziali ti consentono di programmare un'automazione in anticipo:

  1. Time.ScheduledTimeEvent
  2. Time.RecurringClockTimeScheduledEvent
  3. Time.RecurringSolarTimeScheduledEvent

Il primo, Time.ScheduledTimeEvent, ti consente di programmare 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 l'alba o il 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 dell'ora solare anziché l'ora dell'orologio. Il parametro per questo tipo di comando iniziale è un SolarTimeStruct composto da:

  1. type, che è SolarTimeType.Sunrise o SolarTimeType.Sunset.
  2. offset, che ti consente di spostare l'ora di inizio rispetto all'evento solare di 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 15 minuti prima dell'alba ogni giorno:

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(
    Time.ScheduledTimeEvent.solarTime(
      SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15))
    )
  )
}

I due comandi iniziali successivi sono i comandi iniziali di eventi programmati 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 programmare 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à Unix cron per specificare la pianificazione di un'automazione ricorrente.

Time.RecurringSolarTimeScheduledEvent ti consente di programmare un'automazione in base all'ora dell'alba o del tramonto, facoltativamente in combinazione con una condizione basata sul calendario.

cron espressioni

Potresti già avere familiarità con cron, un comando utilizzato sui sistemi Unix e Linux per pianificare job ricorrenti.

Gli starter 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 starter sono chiamate espressioni cron.

Esistono diversi "gusti" di cron e diverse varianti di sintassi in queste implementazioni. Le espressioni di avvio di eventi pianificati ricorrenti cron utilizzano la stessa sintassi dello scheduler Quartz. La sintassi dell'espressione Quartz cron è spiegata nella documentazione di Quartz CronExpression.

Esempi

Ecco alcuni esempi.

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 alle ore e un quarto, ogni ora, durante il mese di febbraio 0 15 * ? 2 * *
Esegui una volta all'ora 0 0 * ? * * *
Eseguito 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, alle 15 minuti 0 15 * ? 2 5#2 *
Esegui alle ore 15 di ogni ora, l'ultimo giorno del mese di febbraio 0 15 * L 2 ? *
Run at 6:00am every Tuesday and Thursday 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

In un avviatore RecurringClockTimeScheduledEvent, la stringa di 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, ogni mercoledì di aprile:

starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) {
  parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *"))
}

RecurringSolarTimeScheduleEvent

L'avvio RecurringSolarTimeScheduleEvent richiede due parametri:

  1. Un SolarTimeStruct.
  2. cronExpression: un sottoinsieme di un'espressione cron costituito 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 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 *"))
}