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

다음과 같은 세 가지 시작 도구를 사용하면 자동화를 미리 예약할 수 있습니다.

  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's CronExpression 문서에 설명되어 있습니다.

다음은 몇 가지 예를 보여줍니다.

사용 사례 시간 요일 연도
24시간마다 자정에 실행 0 0 0 ? * * *
매주 화요일 오전 6시에 실행 0 30 19 ? * 3 *
2월 한 달 동안 매시간 15분에 실행 0 15 * ? 2 * *
1시간에 한 번 실행 0 0 * ? * * *
1월부터 3월까지 매일 자정에 실행( 월 1일에 가장 가까운 평일) 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. A 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 *"))
}