3 różne polecenia inicjujące pozwalają z wyprzedzeniem zaplanować automatyzację:
Pierwsze polecenie inicjujące, Time.ScheduledTimeEvent,
umożliwia zaplanowanie automatyzacji, która ma się rozpocząć w określonym momencie w
przyszłości lub cyklicznie na podstawie czasu zegarowego albo zdarzenia słonecznego
(czyli wschodu lub zachodu słońca).
Na przykład to polecenie inicjujące uruchamia automatyzację codziennie o 22:00:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
Zamiast czasu zegarowego możesz też określić zdarzenie słoneczne. Parametrem
tego typu polecenia inicjującego jest
SolarTimeStruct
który składa się z tych pól:
type, które może mieć wartośćSolarTimeType.SunriselubSolarTimeType.Sunset.offset, które pozwala przesunąć czas rozpoczęcia względem zdarzenia słonecznego o dowolną ilość czasu. Wartości dodatnie wprowadzają opóźnienie po zdarzeniu słonecznym, a wartości ujemne powodują, że polecenie inicjujące uruchamia się przed zdarzeniem słonecznym.
Ten przykład to polecenie inicjujące, które 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 kolejne polecenia inicjujące to polecenia inicjujące cykliczne zaplanowane zdarzenia, które umożliwiają tworzenie automatyzacji uruchamianych okresowo zgodnie z bardziej 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 czasu lub daty.
To polecenie inicjujące używa składni podobnej do tej, której używa narzędzie cron w systemie Unix, aby określić harmonogram cyklicznej automatyzacji.
Time.RecurringSolarTimeScheduledEvent
umożliwia zaplanowanie automatyzacji na podstawie czasu wschodu lub zachodu słońca, opcjonalnie w połączeniu z warunkiem opartym na kalendarzu.
Wyrażenia cron
Być może znasz już cron, czyli polecenie używane w systemach Unix i Linux do planowania cyklicznych zadań.
Polecenia inicjujące cykliczne zaplanowane zdarzenia używają składni wyrażenia harmonogramu podobnej do tej, której używa cron. Z tego powodu wyrażenia harmonogramu używane z tymi poleceniami inicjującymi są nazywane wyrażeniami cron.
Istnieje kilka różnych „odmian” cron i kilka wariantów składni w tych implementacjach. Wyrażenia polecenia inicjującego cykliczne zaplanowane zdarzenie cron
używają tej samej składni co harmonogram Quartz.
Składnia wyrażenia cron w Quartz jest opisana w dokumentacji
w QuartzCronExpression.
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 w każdy wtorek | 0 |
30 |
19 |
? |
* |
3 |
* |
| Uruchamiaj co godzinę o kwadransie po pełnej godzinie w lutym | 0 |
15 |
* |
? |
2 |
* |
* |
| Uruchamiaj raz na godzinę | 0 |
0 |
* |
? |
* |
* |
* |
| Uruchamiaj co 24 godziny o północy od stycznia do marca w najbliższy dzień powszedni 1 dnia miesiąca | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
| W drugi czwartek lutego, raz na godzinę, o kwadransie po pełnej godzinie | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| Uruchamiaj co godzinę o kwadransie po pełnej godzinie w ostatni dzień lutego | 0 |
15 |
* |
L |
2 |
? |
* |
| Uruchamiaj o 6:00 w każdy wtorek i czwartek | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
W poleceniu inicjującym RecurringClockTimeScheduledEvent ciąg wyrażenia cron jest
przypisany do
Time.RecurringClockTimeScheduledEvent.cronExpression
pola.
Oto przykład polecenia inicjującego RecurringClockTimeScheduledEvent, które 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
Polecenie inicjujące RecurringSolarTimeScheduleEvent przyjmuje 2 parametry:
SolarTimeStruct.cronExpression: podzbiór wyrażeniacronskładający się tylko z pól Dzień miesiąca, Miesiąc, Dzień tygodnia i Rok. Czas słoneczny określa dokładny czas rozpoczęcia automatyzacji, dlatego pola Sekunda, Minuta i Godzina są pomijane.
Ten przykład to polecenie inicjujące, które powoduje uruchomienie automatyzacji godzinę po wschodzie słońca w każdą środę w kwietniu:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }