定期的なスケジュール設定されたイベントの開始条件

3 種類の開始条件を使用して、自動化を事前にスケジュール設定できます。

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

1 つ目の Time.ScheduledTimeEvent を使用すると、将来の特定の時刻、または時刻や太陽イベント(日の出や日の入り)に基づいて、自動化を定期的に開始するようにスケジュールを設定できます。

たとえば、次の開始条件は、毎日午後 10 時に自動化を開始します。

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0)))
}

また、時計時刻の代わりに太陽時イベントを指定することもできます。このタイプのスターターのパラメータは、次の要素で構成される SolarTimeStruct です。

  1. type。SolarTimeType.Sunrise または SolarTimeType.Sunset。
  2. offset。これにより、太陽イベントを基準として開始時間を任意の時間だけシフトできます。正の値を指定すると、太陽イベントの後に遅延が発生します。負の値を指定すると、太陽イベントの前に開始条件がトリガーされます。

次の例は、毎日日の出の 15 分前に自動化を開始する開始条件です。

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

2 つ目の開始条件は、定期的なスケジュール設定イベントの開始条件です。これにより、時間ベースとカレンダーベースの両方の条件を含む、より具体的な条件に従って定期的に実行される自動化を作成できます。

Time.RecurringClockTimeScheduledEvent を使用すると、1 つ以上の時刻または日付の条件に基づいて自動化をスケジュールできます。このスターターは、Unix の cron ユーティリティで使用される構文に似た構文を使用して、繰り返しの自動化のスケジュールを指定します。

Time.RecurringSolarTimeScheduledEvent を使用すると、日の出または日の入りの時刻に基づいて自動化をスケジュールできます。必要に応じて、カレンダーベースの条件と組み合わせることもできます。

cron 式

cron は、Unix システムと Linux システムで繰り返しジョブをスケジュールするために使用されるコマンドです。

繰り返しスケジュール設定イベントのスターターは、cron で使用されるものと同様のスケジュール設定式の構文を使用します。このため、これらのスターターで使用されるスケジュール設定式は cron 式と呼ばれます。

cron にはいくつかの異なる「フレーバー」があり、これらの実装にはいくつかの構文バリエーションがあります。繰り返しスケジュール設定されたイベント スターターの cron 式では、Quartz スケジューラと同じ構文を使用します。Quartz cron 式の構文については、Quartz の CronExpression のドキュメントをご覧ください。

例

いくつか例を挙げて説明します。

ユースケース 第 2 世代 分 時間 Day-of-Month 月 曜日 年
24 時間ごと(午前 0 時)に実行 0 0 0 ? * * *
毎週火曜日の午前 6 時に実行 0 30 19 ? * 3 *
2 月の毎時 15 分に実行する 0 15 * ? 2 * *
1 時間に 1 回実行 0 0 * ? * * *
1 月から 3 月まで、毎月 1 日に最も近い平日の午前 0 時に 24 時間ごとに実行します。 0 0 0 ? 1-3 1W *
2 月の第 2 木曜日の 1 時間ごと、15 分 0 15 * ? 2 5#2 *
2 月の最終日の毎時 15 分に実行 0 15 * L 2 ? *
毎週火曜日と木曜日の午前 6 時に実行 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

RecurringClockTimeScheduledEvent スターターでは、cron 式文字列が Time.RecurringClockTimeScheduledEvent.cronExpression フィールドに割り当てられます。

次の例は、4 月の毎週水曜日の午後 8 時に自動化を開始する RecurringClockTimeScheduledEvent 開始条件の例です。

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

RecurringSolarTimeScheduleEvent

RecurringSolarTimeScheduleEvent スターターは次の 2 つのパラメータを受け取ります。

  1. SolarTimeStruct。
  2. cronExpression: 日、月、曜日、年のフィールドのみで構成される cron 式のサブセット。太陽時は自動化が開始される正確な時間を決定するため、秒、分、時間のフィールドは省略されます。

次の例は、4 月の毎週水曜日の日の出から 1 時間後に自動化を開始する開始条件です。

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