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 dem ersten Auslöser, Time.ScheduledTimeEvent, können Sie eine Automatisierung so planen, dass sie entweder zu einem bestimmten Zeitpunkt in der Zukunft oder wiederkehrend gestartet wird. Die Auslösung kann dabei auf der Uhrzeit oder 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 anstelle der Uhrzeit ein Sonnenereignis angeben. Der Parameter für diesen Auslösertyp ist eine SolarTimeStruct , die aus Folgendem besteht:

  1. type, entweder SolarTimeType.Sunrise oder SolarTimeType.Sunset.
  2. offset: Mit diesem Parameter können Sie die Startzeit um einen beliebigen Zeitraum relativ zum Sonnenereignis verschieben. Positive Werte führen zu einer Verzögerung nach dem Sonnenereignis, während negative Werte dazu führen, dass der Auslöser vor dem Sonnenereignis ausgelöst wird.

Das folgende Beispiel zeigt einen Auslöser, 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 Auslöser für wiederkehrende geplante Ereignisse. Mit ihnen können Sie Automatisierungen erstellen, die regelmäßig nach bestimmten Kriterien ausgeführt werden . Diese Kriterien können sowohl zeit- als auch kalenderbasierte Bedingungen umfassen.

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

Time.RecurringSolarTimeScheduledEvent ermöglicht Ihnen die Planung einer Automatisierung basierend auf der Zeit des Sonnenaufgangs oder Sonnenuntergangs, optional in Kombination mit einer kalenderbasierten Bedingung.

cron-Ausdrücke

Vielleicht kennen Sie bereits cron, einen Befehl, der auf Unix- und Linux-Systemen verwendet wird, um wiederkehrende Jobs zu planen.

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

Es gibt verschiedene Varianten von cron und verschiedene Syntaxvarianten für diese Implementierungen. `cron`-Ausdrücke für Auslöser für wiederkehrende geplante Ereignisse verwenden dieselbe Syntax wie der Quartz Scheduler.cron Die Syntax für cron Ausdrücke von Quartz wird in der Dokumentation für Quartz's CronExpression erläutert.

Beispiele

Hier einige Beispiele zur Veranschaulichung.

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

RecurringClockTimeScheduledEvent

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

Das folgende Beispiel zeigt einen RecurringClockTimeScheduledEvent-Auslöser, 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“, „Tag der Woche“ und „Jahr“ enthält. Die Sonnenzeit bestimmt die genaue Zeit, zu der die Automatisierung gestartet wird. Daher werden die Felder „Sekunde“, „Minute“ und „Stunde“ weggelassen.

Das folgende Beispiel zeigt einen Auslöser, der eine Automatisierung jeden Mittwoch im April eine Stunde nach Sonnenaufgang startet:

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