Mit drei verschiedenen Auslösern kannst du eine Automatisierung im Voraus planen:
Mit dem ersten, Time.ScheduledTimeEvent, kannst du festlegen, dass ein automatisierter Ablauf zu einem bestimmten Zeitpunkt in der Zukunft oder regelmäßig basierend auf der Uhrzeit oder einem Sonnenereignis (Sonnenaufgang oder Sonnenuntergang) gestartet wird.
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 Solarzeitereignis angeben. Der Parameter für diesen Auslöser ist ein SolarTimeStruct, der aus Folgendem besteht:
type, die entwederSolarTimeType.SunriseoderSolarTimeType.Sunsetist.offset: Damit können Sie die Startzeit relativ zum Solarereignis um einen beliebigen Zeitraum verschieben. Positive Werte führen zu einer Verzögerung nach dem Solarereignis und negative Werte dazu, dass der Starter vor dem Solarereignis ausgelöst wird.
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 letzten beiden Auslöser sind wiederkehrende geplante Ereignisauslöser. Mit ihnen kannst du Automatisierungen 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.
Dieses Starter-Kit verwendet eine Syntax, die der 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 Uhrzeit 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 das Starten von wiederkehrenden geplanten Ereignissen 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. Wiederkehrende geplante Ereignis-Starter cron verwenden dieselbe Syntax wie der Quartz-Scheduler.
Die Syntax für Quartz-cron-Ausdrücke wird in der Dokumentation für CronExpression von Quartz erläutert.
Beispiele
Hier einige Beispiele:
| 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 alle 24 Stunden um Mitternacht von Januar bis März 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 |
* |
| Wird am letzten Tag des Februars stündlich um Viertel nach ausgeführt | 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.
Hier ist ein Beispiel für 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 Starter RecurringSolarTimeScheduleEvent 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 Startzeit der Automatisierung. Daher werden die Felder „Sekunde“, „Minute“ und „Stunde“ ausgelassen.
Das folgende Beispiel ist ein Auslöser, der bewirkt, 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 *")) }