반복 예약된 이벤트 시작 조건

세 가지 시작 조건을 사용하면 자동화를 미리 예약할 수 있습니다.

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

첫 번째(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))
    )
  )
}

나머지 두 가지 시작 조건은 반복 예약된 이벤트 시작 조건으로, 시간 및 캘린더 기반 조건을 모두 포함할 수 있는 더 구체적인 기준에 따라 주기적으로 실행되는 자동화를 만들 수 있습니다.

Time.RecurringClockTimeScheduledEvent를 사용하면 하나 이상의 시간 또는 날짜 조건을 기반으로 자동화를 예약할 수 있습니다. 이 시작 조건은 Unix cron 유틸리티에서 반복 자동화의 일정을 지정하는 데 사용하는 것과 유사한 구문을 사용합니다.

Time.RecurringSolarTimeScheduledEvent를 사용하면 일출 또는 일몰 시간을 기준으로 자동화를 예약할 수 있으며 원하는 경우 캘린더 기반 조건과 함께 사용할 수도 있습니다.

cron 표현식

Unix 및 Linux 시스템에서 반복 작업을 예약하는 데 사용되는 명령어인 cron는 이미 익숙할 수 있습니다.

반복 예약된 이벤트 시작 조건은 cron에서 사용하는 것과 유사한 예약 표현식 문법을 사용합니다. 따라서 이러한 시작 조건과 함께 사용되는 예약 표현식은 cron 표현식이라고 합니다.

cron에는 여러 가지 '버전'이 있으며 이러한 구현에는 여러 가지 문법 변형이 있습니다. 반복 예약된 이벤트 시작 조건 cron 표현식은 Quartz 스케줄러와 동일한 문법을 사용합니다. Quartz cron 표현식 구문은 Quartz CronExpression 문서에 설명되어 있습니다.

다음은 이를 보여주는 몇 가지 예입니다.

사용 사례 시간 Day-of-Week 연도
자정에 24시간마다 실행 0 0 0 ? * * *
매주 화요일 오전 6시에 실행 0 30 19 ? * 3 *
2월 한 달 동안 매시간 15분에 실행 0 15 * ? 2 * *
1시간마다 한 번 실행 0 0 * ? * * *
1월부터 3월까지 매월 1일에 가장 가까운 평일 자정에 24시간마다 실행 0 0 0 ? 1-3 1W *
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 시작 조건자는 다음 두 가지 매개변수를 사용합니다.

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