Dostępne są 3 różne elementy uruchamiające, które umożliwiają zaplanowanie automatyzacji z wyprzedzeniem:
Pierwszy z nich, Time.ScheduledTimeEvent
, umożliwia zaplanowanie automatyzacji, która ma się rozpocząć w jednym, precyzyjnie określonym momencie w przyszłości lub cyklicznie, na podstawie czasu zegarowego lub zdarzenia związanego ze słońcem (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ć wydarzenie związane z czasem słonecznym. Parametr tego typu polecenia inicjującego to SolarTimeStruct
składający się z:
type
, która jest równaSolarTimeType.Sunrise
lubSolarTimeType.Sunset
.offset
, która umożliwia przesunięcie godziny rozpoczęcia względem wydarzenia słonecznego o dowolną ilość czasu. Wartości dodatnie wprowadzają opóźnienie po zdarzeniu słonecznym, a wartości ujemne powodują uruchomienie wyzwalacza przed zdarzeniem słonecznym.
Ten przykład to szablon, który codziennie uruchamia automatyzację 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 to inicjatory cyklicznych zaplanowanych zdarzeń, 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 związanego z czasem lub datą.
Ten szablon używa składni podobnej do tej, której używa narzędzie cron
w systemie Unix do określania harmonogramu powtarzającej się automatyzacji.
Time.RecurringSolarTimeScheduledEvent
umożliwia zaplanowanie automatyzacji na podstawie 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 Unix i Linux do planowania powtarzających się zadań.
Elementy wywołujące cykliczne zaplanowane zdarzenia korzystają z składni wyrażeń harmonogramu podobnej do tej, która jest używana przez cron
. Z tego powodu wyrażenia harmonogramu używane z tymi elementami wywołującymi są nazywane wyrażeniami cron
.
Istnieje kilka „odmian” cron
i kilka wariantów składni w ramach tych implementacji. Wyrażenia inicjujące cykliczne zaplanowane wydarzenie cron
mają taką samą składnię jak harmonogram Quartz.
Składnia wyrażeń Quartz cron
jest wyjaśniona w dokumentacji QuartzCronExpression
.
Przykłady
Oto kilka przykładów.
Przypadek użycia | Sekunda | Minuta | Godzina | Day-of-Month | 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 kwadrans 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 dzień powszedni najbliższy 1 dnia miesiąca. | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
W drugi czwartek lutego, co godzinę, kwadrans po | 0 |
15 |
* |
? |
2 |
5#2 |
* |
Uruchamiaj co godzinę o kwadrans po pełnej godzinie w ostatnim dniu lutego. | 0 |
15 |
* |
L |
2 |
? |
* |
Uruchamiaj o 6:00 w każdy wtorek i czwartek | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
W RecurringClockTimeScheduledEvent
starterze ciąg wyrażenia cron
jest przypisywany do pola Time.RecurringClockTimeScheduledEvent.cronExpression
.
Oto przykład RecurringClockTimeScheduledEvent
, który rozpoczyna automatyzację o 20:00 w każdą środę kwietnia:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
Funkcja RecurringSolarTimeScheduleEvent
przyjmuje 2 parametry:
- A
SolarTimeStruct
. cronExpression
: podzbiór wyrażeniacron
składający się tylko z pól Dzień miesiąca, Miesiąc, Dzień tygodnia i Rok. Czas słoneczny określa dokładną godzinę 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ę kwietnia:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }