Możesz zaplanować automatyzację z wyprzedzeniem, korzystając z 3 różnych elementów uruchamiających:
Pierwsza opcja, Time.ScheduledTimeEvent
, umożliwia zaplanowanie automatyzacji tak, aby rozpoczynała się w określonym momencie w przyszłości lub cyklicznie na podstawie czasu zegara lub wydarzenia słonecznego (czyli wschodu lub zachodu słońca).
Na przykład ten element uruchamia automatyzację codziennie o 22:00:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
Możesz też określić zdarzenie czasu słonecznego zamiast czasu zegara. Parametr tego typu poleceń inicjujących to SolarTimeStruct
, który składa się z:
type
, który jest alboSolarTimeType.Sunrise
alboSolarTimeType.Sunset
.offset
, który umożliwia przesunięcie czasu rozpoczęcia względem dowolnego zdarzenia słonecznego o dowolną ilość czasu. Wartości dodatnie powodują opóźnienie po zdarzeniu słonecznym, a wartości ujemne powodują, że starter uruchamia się przed zdarzeniem słonecznym.
Ten przykład to starter, który uruchamia automatyzację codziennie 15 minut przed wschodem słońca:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
Dwa pozostałe to powtarzające się zaplanowane inicjatory zdarzeń, które umożliwiają tworzenie automatyzacji, które działają okresowo zgodnie ze szczegółowymi kryteriami, które mogą obejmować warunki oparte na czasie i kalendarzu.
Time.RecurringClockTimeScheduledEvent
umożliwia zaplanowanie automatyzacji na podstawie co najmniej 1 warunku dotyczącego czasu lub daty.
Ten szablon używa składni podobnej do tej używanej przez narzędzie cron
w Unixie do określania harmonogramu powtarzającej się automatyzacji.
Time.RecurringSolarTimeScheduledEvent
umożliwia zaplanowanie automatyzacji na podstawie godziny wschodu lub zachodu słońca, opcjonalnie w połączeniu z warunkiem opartym na kalendarzu.
cron
wyrażenia
Możesz już znać polecenie cron
, które jest używane w systemach uniksowych i Linuksa do planowania powtarzających się zadań.
Początki cyklicznego zaplanowanego zdarzenia używają składni wyrażenia harmonogramu podobnej do tej używanej przez funkcję cron
. Z tego powodu wyrażenia harmonogramu używane z tymi początkami są nazywane wyrażeniami cron
.
Istnieje kilka różnych „wariantów” cron
oraz kilka wariantów składni w ramach tych implementacji. Wyrażenia inicjujące cykliczne zaplanowane zdarzenia cron
używają tej samej składni co planista Quartz.
Składnia wyrażeń cron
w Quartz została opisana w dokumentacji CronExpression
.
Przykłady
Oto kilka przykładów.
Przypadek użycia | Sekunda | Minuta | Godzina | Dzień miesiąca | Miesiąc | Dzień tygodnia | Rok |
---|---|---|---|---|---|---|---|
Uruchamiaj co 24 godziny o północy. | 0 |
0 |
0 |
? |
* |
* |
* |
Uruchamiaj o 6:00 rano każdego wtorku | 0 |
30 |
19 |
? |
* |
3 |
* |
Uruchamianie co godzinę o kwartę do pełnej godziny w lutym. | 0 |
15 |
* |
? |
2 |
* |
* |
Uruchamiaj raz na godzinę | 0 |
0 |
* |
? |
* |
* |
* |
Uruchamiać co 24 godziny o północy w styczniu–marcu w dzień powszedni najbliższy 1 dnia miesiąca. | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
W drugi czwartek lutego co godzinę o ćwierć do pełnej | 0 |
15 |
* |
? |
2 |
5#2 |
* |
uruchamiać co 15 minut, co godzinę i w ostatni dzień lutego; | 0 |
15 |
* |
L |
2 |
? |
* |
Włączaj ją o 6:00 rano we wtorek i czwartek | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
W elementzie startowym RecurringClockTimeScheduledEvent
ciąg znaków wyrażenia cron
jest przypisany do pola Time.RecurringClockTimeScheduledEvent.cronExpression
.
Oto przykład startera RecurringClockTimeScheduledEvent
, który uruchamia automatyzację o 20:00 w każdą środę w kwietniu:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
Starter RecurringSolarTimeScheduleEvent
przyjmuje 2 parametry:
SolarTimeStruct
.cronExpression
: podzbiór wyrażeniacron
, który składa się tylko z pol Day-of-Month, Month, Day-of-Week i Year. Czas słoneczny określa dokładny czas rozpoczęcia automatyzacji, dlatego pola „S” (sekunda), „M” (minut) i „H” (godzina) są pomijane.
Ten przykład to starter, który powoduje, że automatyzacja rozpoczyna się co środę w kwietniu, godzinę po wschodzie słońca:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }