Cykliczny zaplanowany początek zdarzenia

3 różne elementy wywołujące umożliwiają zaplanowanie automatyzacji z wyprzedzeniem:

  1. Time.ScheduledTimeEvent
  2. Time.RecurringClockTimeScheduledEvent
  3. Time.RecurringSolarTimeScheduledEvent

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:

  1. type, czyli SolarTimeType.Sunrise lub SolarTimeType.Sunset.
  2. 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:

  1. SolarTimeStruct
  2. cronExpression: podzbiór wyrażenia cron 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.

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 *"))
}