Mit drei verschiedenen Auslösern können Sie eine Automatisierung im Voraus planen:
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:
type
, also entwederSolarTimeType.Sunrise
oderSolarTimeType.Sunset
.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:
- Ein
SolarTimeStruct
. cronExpression
: Eine Teilmenge einescron
-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 *")) }