Możesz zaplanować automatyzację z wyprzedzeniem, korzystając z 3 różnych elementów uruchamiających:
Pierwszy, Time.ScheduledTimeEvent, umożliwia zaplanowanie automatyzacji, która rozpocznie się w jednym konkretnym momencie w przyszłości lub będzie powtarzana cyklicznie na podstawie godziny lub zdarzenia słonecznego (czyli wschodu lub zachodu słońca).
Na przykład ten element 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ć zdarzenie czasu słonecznego zamiast czasu zegarowego. Parametr dla tego typu elementu uruchamiającego to SolarTimeStruct, który składa się z:
type, czyliSolarTimeType.SunriselubSolarTimeType.Sunset.offset, który 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 aktywator uruchamia się przed zdarzeniem słonecznym.
Poniższy przykład to element inicjujący, 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)) ) ) }
Kolejne 2 elementy początkowe 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 związane z czasem i kalendarzem.
Time.RecurringClockTimeScheduledEvent
umożliwia zaplanowanie automatyzacji na podstawie co najmniej jednego warunku dotyczącego godziny lub daty.
Ten starter używa składni podobnej do tej, której używa narzędzie cron w systemie Unix, aby określić harmonogram automatyzacji cyklicznej.
Time.RecurringSolarTimeScheduledEvent
umożliwia zaplanowanie automatyzacji na podstawie godziny wschodu lub zachodu słońca, opcjonalnie w połączeniu z warunkiem opartym na kalendarzu.
Wyrażenia: cron
Być może znasz już cron, polecenie używane w systemach Unix i Linux do planowania zadań cyklicznych.
Wyzwalacze cyklicznych zaplanowanych zdarzeń używają składni wyrażeń planowania, która jest podobna do składni używanej przez cron. Z tego powodu wyrażenia planowania używane z tymi wyzwalaczami są nazywane wyrażeniami cron.
Istnieje kilka różnych „odmian” cron i kilka odmian składni w tych implementacjach. Wyrażenia cyklicznego zaplanowanego zdarzenia inicjującego cron używają tej samej składni co harmonogram Quartz.
Składnia wyrażeń Quartz cron jest wyjaśniona w dokumentacji Quartz CronExpression.
Przykłady
Oto kilka przykładów.
| Przypadek użycia | Drugi | Minuta | Godzina | Dzień miesiąca | Miesiąc | Dzień tygodnia | Rok |
|---|---|---|---|---|---|---|---|
| Uruchamiaj co 24 godziny o północy | 0 |
0 |
0 |
? |
* |
* |
* |
| Uruchamiaj we wtorki o 6:00 | 0 |
30 |
19 |
? |
* |
3 |
* |
| Uruchamiaj kwadrans po każdej godzinie w lutym | 0 |
15 |
* |
? |
2 |
* |
* |
| Uruchom raz na godzinę | 0 |
0 |
* |
? |
* |
* |
* |
| Uruchamiaj co 24 godziny o północy od stycznia do marca w dzień powszedni najbliżej 1 dnia miesiąca | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
| W drugi czwartek lutego, raz na godzinę, kwadrans po pełnej godzinie | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| Uruchamiaj kwadrans po każdej godzinie w ostatni dzień lutego | 0 |
15 |
* |
L |
2 |
? |
* |
| Uruchamiaj we wtorki i czwartki o 6:00 | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
W elemencie inicjującym RecurringClockTimeScheduledEvent ciąg wyrażenia cron jest przypisany do pola Time.RecurringClockTimeScheduledEvent.cronExpression.
Oto przykład elementu inicjującego RecurringClockTimeScheduledEvent, który uruchamia automatyzację o godzinie 20:00 w każdą środę w kwietniu:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
Funkcja inicjująca RecurringSolarTimeScheduleEvent przyjmuje 2 parametry:
SolarTimeStruct.cronExpression: podzbiór wyrażeniacronskładający się tylko z pól Day-of-Month, Month, Day-of-Week i Year. Czas słoneczny określa dokładny czas 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ę w kwietniu:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }