Auslöser für wiederkehrende geplante Ereignisse

Mit drei verschiedenen Auslösern können Sie eine Automatisierung im Voraus planen:

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

Mit der ersten, Time.ScheduledTimeEvent, können Sie eine Automatisierung so planen, dass sie entweder zu einem bestimmten Zeitpunkt in der Zukunft oder auf wiederkehrender Basis gestartet wird. Dabei kann der Zeitpunkt entweder auf der Uhrzeit oder auf einem Sonnenereignis (Sonnenaufgang oder Sonnenuntergang) basieren.

Mit diesem Auslöser wird die Automatisierung beispielsweise jeden Tag um 22:00 Uhr gestartet:

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0)))
}

Alternativ können Sie ein Ereignis für die Sonnenzeit anstelle der Uhrzeit angeben. Der Parameter für diesen Auslösertyp ist ein SolarTimeStruct, der aus folgenden Elementen besteht:

  1. type, also entweder SolarTimeType.Sunrise oder SolarTimeType.Sunset.
  2. offset, mit dem Sie den Beginn relativ zum Sonnenereignis um einen beliebigen Zeitraum verschieben können. Bei positiven Werten wird eine Verzögerung nach dem Sonnenereignis eingeführt. Bei negativen Werten wird der Auslöser vor dem Sonnenereignis ausgelöst.

Im folgenden Beispiel wird ein Auslöser verwendet, der die Automatisierung jeden Tag 15 Minuten vor Sonnenaufgang startet:

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

Die beiden anderen Auslöser sind wiederkehrende geplante Ereignisauslöser. Mit diesen können Sie Automatisierungen erstellen, die regelmäßig nach genaueren Kriterien ausgeführt werden. Diese können sowohl zeit- als auch kalenderbasierte Bedingungen umfassen.

Mit Time.RecurringClockTimeScheduledEvent können Sie eine Automatisierung basierend auf einer oder mehreren Zeit- oder Datumsbedingungen planen. Dieser Auslöser verwendet eine Syntax, die der des Unix-Dienstprogramms cron ähnelt, mit dem der Zeitplan für eine wiederkehrende Automatisierung angegeben wird.

Mit Time.RecurringSolarTimeScheduledEvent können Sie eine Automatisierung basierend auf dem Sonnenaufgang oder Sonnenuntergang planen, optional in Kombination mit einer kalendarischen Bedingung.

cron Ausdrücke

Möglicherweise kennen Sie bereits cron, einen Befehl, der unter Unix- und Linux-Systemen zum Planen wiederkehrender Jobs verwendet wird.

Für Auslöser für wiederkehrende geplante Ereignisse wird eine Syntax für Planungsausdrücke verwendet, die der von cron ähnelt. Aus diesem Grund werden die Planungsausdrücke, die mit diesen Auslösern verwendet werden, als cron-Ausdrücke bezeichnet.

Es gibt verschiedene Varianten von cron und mehrere Syntaxvarianten für diese Implementierungen. Für cron-Ausdrücke, die wiederkehrende geplante Ereignisse starten, wird dieselbe Syntax wie für den Quartz-Scheduler verwendet. Die Syntax von Quartz-cron-Ausdrücken wird in der Dokumentation für CronExpression erläutert.

Beispiele

Hier einige Beispiele zur Veranschaulichung:

Anwendungsfall Sekunde Minute Stunde Tag des Monats Monat Wochentag Jahr
Alle 24 Stunden um Mitternacht ausführen 0 0 0 ? * * *
Wird jeden Dienstag um 6:00 Uhr ausgeführt 0 30 19 ? * 3 *
Wird im Februar stündlich um Viertel nach der vollen Stunde ausgeführt 0 15 * ? 2 * *
Einmal pro Stunde ausführen 0 0 * ? * * *
Wird von Januar bis März jeden Tag um Mitternacht ausgeführt, wobei der Wochentag dem 1. des Monats am nächsten ist 0 0 0 ? 1-3 1W *
Am zweiten Donnerstag im Februar einmal pro Stunde um Viertel nach 0 15 * ? 2 5#2 *
Wird am letzten Tag des Monats Februar jede Stunde um Viertel nach der vollen Stunde ausgeführt 0 15 * L 2 ? *
Wird jeden Dienstag und Donnerstag um 6:00 Uhr ausgeführt 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

In einem RecurringClockTimeScheduledEvent-Auslöser wird der cron-Ausdrucksstring dem Feld Time.RecurringClockTimeScheduledEvent.cronExpression zugewiesen.

Im folgenden Beispiel wird ein RecurringClockTimeScheduledEvent-Auslöser verwendet, der die Automatisierung jeden Mittwoch im April um 20:00 Uhr startet:

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

RecurringSolarTimeScheduleEvent

Der RecurringSolarTimeScheduleEvent-Auslöser hat zwei Parameter:

  1. Ein SolarTimeStruct.
  2. cronExpression: Eine Teilmenge eines cron-Ausdrucks, die nur die Felder „Tag des Monats“, „Monat“, „Wochentag“ und „Jahr“ enthält. Die Sonnenzeit bestimmt die genaue Uhrzeit, zu der die Automatisierung gestartet wird. Daher werden die Felder „Sekunde“, „Minute“ und „Stunde“ weggelassen.

Im folgenden Beispiel wird ein Auslöser verwendet, durch den eine Automatisierung jeden Mittwoch im April eine Stunde nach Sonnenaufgang gestartet wird:

starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) {
  parameter(
    Time.RecurringSolarTimeScheduledEvent.solarTime(
      TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1))
    )
  )
  parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *"))
}