Cykliczny zaplanowany początek zdarzenia

Dostępne są 3 różne elementy uruchamiające, które 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)))
}

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:

  1. type, która jest równa 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 wyzwalacza przed zdarzeniem słonecznym.

Ten przykład to szablon, 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))
    )
  )
}

Dwa kolejne to inicjatory 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 cron w systemie Unix do określania harmonogramu powtarzającej się automatyzacji.

Time.RecurringSolarTimeScheduledEventumoż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ć 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 „odmian” cron i kilka wariantów składni w ramach tych implementacji. Wyrażenia inicjujące cykliczne zaplanowane wydarzenie cron mają taką samą składnię jak 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

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 przyjmuje 2 parametry:

  1. A 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.

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