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, Time.ScheduledTimeEvent, können Sie festlegen, dass ein automatisierter Ablauf zu einem bestimmten Zeitpunkt in der Zukunft oder wiederkehrend gestartet wird. Die Auslösung kann entweder auf einer Uhrzeit oder einem Sonnenereignis (Sonnenaufgang oder Sonnenuntergang) basieren.

Mit diesem Auslöser wird der automatisierte Ablauf 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 Solarzeitereignis angeben. Der Parameter für diesen Starttyp ist ein SolarTimeStruct, der aus Folgendem besteht:

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

Das folgende Beispiel ist ein 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 kannst du automatisierte Abläufe erstellen, die regelmäßig nach bestimmten Kriterien ausgeführt werden. Diese Kriterien können sowohl zeit- als auch kalenderbasierte Bedingungen umfassen.

Mit Time.RecurringClockTimeScheduledEvent können Sie eine Automatisierung auf Grundlage einer oder mehrerer Zeit- oder Datumsbedingungen planen. Für diesen Starter wird eine Syntax verwendet, die der Syntax des Unix-Dienstprogramms cron ähnelt, um den Zeitplan für eine wiederkehrende Automatisierung anzugeben.

Mit Time.RecurringSolarTimeScheduledEvent können Sie eine Automatisierung basierend auf der Zeit für Sonnenaufgang oder Sonnenuntergang planen, optional in Kombination mit einer kalenderbasierten Bedingung.

cron-Ausdrücke

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

Für wiederkehrende geplante Ereignis-Starter wird eine Planungs-Ausdruckssyntax verwendet, die der von cron ähnelt. Aus diesem Grund werden die Planungs-Ausdrücke, die mit diesen Startern verwendet werden, als cron-Ausdrücke bezeichnet.

Es gibt verschiedene Varianten von cron und verschiedene Syntaxvarianten für die einzelnen Implementierungen. Für das Starten von wiederkehrenden geplanten Ereignissen werden cron-Ausdrücke mit derselben Syntax wie beim Quartz-Scheduler verwendet. Die Syntax für Quartz-cron-Ausdrücke wird in der Dokumentation für CronExpression von Quartz 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 ? * * *
Jeden Dienstag um 6:00 Uhr ausführen 0 30 19 ? * 3 *
Wird im Februar jede Stunde um Viertel nach ausgeführt 0 15 * ? 2 * *
Einmal pro Stunde ausführen 0 0 * ? * * *
Wird von Januar bis März alle 24 Stunden um Mitternacht am Wochentag ausgeführt, der 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 *
Ausführung um Viertel nach jeder Stunde am letzten Tag des Monats Februar 0 15 * L 2 ? *
Jeden Dienstag und Donnerstag um 6:00 Uhr ausführen 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

In einem RecurringClockTimeScheduledEvent-Starter wird der cron-Ausdrucksstring dem Feld Time.RecurringClockTimeScheduledEvent.cronExpression zugewiesen.

Das folgende Beispiel zeigt einen RecurringClockTimeScheduledEvent-Starter, der den automatisierten Ablauf 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-Starter verwendet 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 Startzeit der Automatisierung. Daher werden die Felder „Sekunde“, „Minute“ und „Stunde“ weggelassen.

Das folgende Beispiel ist ein Auslöser, der dafür sorgt, dass ein automatisierter Ablauf 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 *"))
}