3 różne elementy wywołujące 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))) }
Możesz też określić wydarzenie w czasie słonecznym zamiast w czasie zegarowym. 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 polecenia inicjującego przed zdarzeniem słonecznym.
Poniższy przykład to polecenie inicjujące, które 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 startery 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 jednego warunku czasu lub daty.
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 czasu 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 różnych „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 | Drugi | Minuta | Godzina | Day-of-Month | Miesiąc | Dzień tygodnia | Rok |
|---|---|---|---|---|---|---|---|
| Uruchamiaj co 24 godziny o północy | 0 |
0 |
0 |
? |
* |
* |
* |
| Uruchamiaj w każdy wtorek o 6:00 | 0 |
30 |
19 |
? |
* |
3 |
* |
| Uruchamiaj co godzinę o kwadrans po pełnej godzinie w lutym | 0 |
15 |
* |
? |
2 |
* |
* |
| Uruchamianie 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ę, o kwadrans po | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| Uruchamiaj co godzinę o kwadrans 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 RecurringClockTimeScheduledEvent starterze ciąg wyrażenia cron jest przypisany do pola Time.RecurringClockTimeScheduledEvent.cronExpression.
Oto przykład RecurringClockTimeScheduledEvent polecenia inicjującego, które uruchamia 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:
SolarTimeStructcronExpression: 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.
Poniższy 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 *")) }