Mit drei verschiedenen Auslösern können Sie eine Automatisierung im Voraus planen:
Mit dem ersten Auslöser, Time.ScheduledTimeEvent,
können Sie festlegen, dass eine Automatisierung zu einem bestimmten Zeitpunkt in
der Zukunft oder wiederkehrend gestartet wird. Dabei kann die Uhrzeit oder ein Sonnenereignis
(Sonnenaufgang oder Sonnenuntergang) als Grundlage dienen.
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:
type, entwederSolarTimeType.SunriseoderSolarTimeType.Sunset.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, mit dem die Automatisierung jeden Tag 15 Minuten vor Sonnenaufgang gestartet wird:
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 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 von cron
verwendeten Syntax ähnelt. Mit wird der Zeitplan für eine wiederkehrende Automatisierung festgelegt.
Time.RecurringSolarTimeScheduledEvent
können Sie eine Automatisierung basierend auf der Zeit des Sonnenaufgangs oder Sonnenuntergangs planen.
Optional können Sie auch eine kalenderbasierte Bedingung hinzufügen.
cron-Ausdrücke
Vielleicht kennen Sie bereits cron. Das ist ein Befehl, der auf Unix- und Linux-Systemen verwendet wird, um wiederkehrende Jobs zu planen.
Wiederkehrende geplante Ereignisauslöser verwenden eine Syntax für Planungszeiträume, die der von cron verwendeten Syntax ähnelt. Aus diesem Grund werden die Planungszeiträume, die mit diesen Auslösern verwendet werden, als cron-Ausdrücke bezeichnet.
Es gibt verschiedene Varianten von cron und unterschiedliche Syntaxen für diese Implementierungen. cron
`cron`-Ausdrücke für wiederkehrende geplante Ereignisauslöser verwenden dieselbe Syntax wie der Quartz-
Scheduler.
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 Monat um Viertel nach jeder Stunde ausführen | 0 |
15 |
* |
? |
2 |
* |
* |
| Einmal pro Stunde ausführen | 0 |
0 |
* |
? |
* |
* |
* |
| Alle 24 Stunden um Mitternacht ausführen, von Januar bis März, am Wochentag, 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 |
* |
| Am letzten Tag des Monats Februar um Viertel nach jeder Stunde 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, mit dem die Automatisierung jeden Mittwoch im April um 20:00 Uhr gestartet wird:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
Der Auslöser RecurringSolarTimeScheduleEvent hat zwei Parameter:
- Ein
SolarTimeStruct. cronExpression: Eine Teilmenge einescron-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, mit dem 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 *")) }