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 albo zdarzenia związanego ze słońcem (np. wschodu lub zachodu słońca).
Na przykład ten element uruchamiający rozpoczyna 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 uruchamia automatyzację 15 minut przed wschodem słońca każdego dnia:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
Dwa kolejne elementy to elementy początkowe 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 Unix cron
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ć cron
, polecenie 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 zdarzenie cron
używają tej samej składni co 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
starter 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 szablon, który 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 *")) }