다음 세 가지 시작 조건을 사용하면 자동화를 미리 예약할 수 있습니다.
첫 번째인 Time.ScheduledTimeEvent
를 사용하면 미래의 정확한 한 시점이나 시계 시간 또는 태양 이벤트(일출 또는 일몰)를 기반으로 반복되는 일정에 자동화를 시작하도록 예약할 수 있습니다.
예를 들어 이 스타터는 매일 오후 10시에 자동화를 시작합니다.
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
또는 시계 시간 대신 태양시 이벤트를 지정할 수 있습니다. 이 유형의 스타터 매개변수는 다음으로 구성된 SolarTimeStruct
입니다.
type
(SolarTimeType.Sunrise
또는SolarTimeType.Sunset
)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
문서에 설명되어 있습니다.
예
다음은 몇 가지 예입니다.
사용 사례 | 초 | 분 | 시간 | 일 | 월 | 요일 | 연도 |
---|---|---|---|---|---|---|---|
매일 자정에 실행 | 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월 두 번째 목요일, 매시간 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
스타터는 다음 두 가지 매개변수를 사용합니다.
SolarTimeStruct
.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 *")) }