Dostępne są 3 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 (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 startera to SolarTimeStruct składający się z:
type, czyliSolarTimeType.SunriselubSolarTimeType.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 startera 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 startery to cykliczne startery 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 starter 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żeń
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 wydarzenia 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 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 | 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 kwadrans po pełnej godzinie w lutym. | 0 |
15 |
* |
? |
2 |
* |
* |
| Uruchamiaj raz na godzinę | 0 |
0 |
* |
? |
* |
* |
* |
| Uruchamianie 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ę, o kwadrans po | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| Uruchamiaj co godzinę o kwadrans po pełnej godzinie w ostatnim dniu lutego | 0 |
15 |
* |
L |
2 |
? |
* |
| Biegaj 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żeniacronskł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 *")) }