Cykliczny zaplanowany początek zdarzenia

Możesz zaplanować automatyzację z wyprzedzeniem, korzystając z 3 różnych elementów uruchamiających:

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

Pierwsza opcja, Time.ScheduledTimeEvent, umożliwia zaplanowanie automatyzacji tak, aby rozpoczynała się w określonym momencie w przyszłości lub cyklicznie na podstawie czasu zegara lub wydarzenia 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 zegara. Parametr tego typu poleceń inicjujących to SolarTimeStruct, który składa się z:

  1. type, który jest albo SolarTimeType.Sunrise albo SolarTimeType.Sunset.
  2. offset, który umożliwia przesunięcie czasu rozpoczęcia względem dowolnego zdarzenia słonecznego o dowolną ilość czasu. Wartości dodatnie powodują opóźnienie po zdarzeniu słonecznym, a wartości ujemne powodują, że starter uruchamia się przed zdarzeniem słonecznym.

Ten przykład to starter, który uruchamia automatyzację codziennie 15 minut przed wschodem słońca:

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(
    Time.ScheduledTimeEvent.solarTime(
      SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15))
    )
  )
}

Dwa pozostałe to powtarzające się zaplanowane inicjatory zdarzeń, które umożliwiają tworzenie automatyzacji, które działają okresowo zgodnie ze 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 dotyczącego czasu lub daty. Ten szablon używa składni podobnej do tej używanej przez narzędzie cron w Unixie do określania harmonogramu powtarzającej się automatyzacji.

Time.RecurringSolarTimeScheduledEvent umożliwia zaplanowanie automatyzacji na podstawie godziny 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 uniksowych i Linuksa do planowania powtarzających się zadań.

Początki cyklicznego zaplanowanego zdarzenia używają składni wyrażenia harmonogramu podobnej do tej używanej przez funkcję cron. Z tego powodu wyrażenia harmonogramu używane z tymi początkami są nazywane wyrażeniami cron.

Istnieje kilka różnych „wariantów” cron oraz kilka wariantów składni w ramach tych implementacji. Wyrażenia inicjujące cykliczne zaplanowane zdarzenia cron używają tej samej składni co planista Quartz. Składnia wyrażeń cron w Quartz została opisana w dokumentacji CronExpression.

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 rano każdego wtorku 0 30 19 ? * 3 *
Uruchamianie co godzinę o kwartę do pełnej godziny w lutym. 0 15 * ? 2 * *
Uruchamiaj raz na godzinę 0 0 * ? * * *
Uruchamiać co 24 godziny o północy w styczniu–marcu w dzień powszedni najbliższy 1 dnia miesiąca. 0 0 0 ? 1-3 1W *
W drugi czwartek lutego co godzinę o ćwierć do pełnej 0 15 * ? 2 5#2 *
uruchamiać co 15 minut, co godzinę i w ostatni dzień lutego; 0 15 * L 2 ? *
Włączaj ją o 6:00 rano we wtorek i czwartek 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

W elementzie startowym RecurringClockTimeScheduledEvent ciąg znaków wyrażenia cron jest przypisany do pola Time.RecurringClockTimeScheduledEvent.cronExpression.

Oto przykład startera RecurringClockTimeScheduledEvent, który uruchamia automatyzację o 20:00 w każdą środę w kwietniu:

starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) {
  parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *"))
}

RecurringSolarTimeScheduleEvent

Starter RecurringSolarTimeScheduleEvent przyjmuje 2 parametry:

  1. SolarTimeStruct.
  2. cronExpression: podzbiór wyrażenia cron, który składa się tylko z pol Day-of-Month, Month, Day-of-Week i Year. Czas słoneczny określa dokładny czas rozpoczęcia automatyzacji, dlatego pola „S” (sekunda), „M” (minut) i „H” (godzina) są pomijane.

Ten przykład to starter, który powoduje, że automatyzacja rozpoczyna się co środę w kwietniu, godzinę po wschodzie słońca:

starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) {
  parameter(
    Time.RecurringSolarTimeScheduledEvent.solarTime(
      TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1))
    )
  )
  parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *"))
}