Có 3 điều kiện khởi động để bạn lên lịch trước cho một quy trình tự động hoá:
Điều kiện đầu tiên, Time.ScheduledTimeEvent
, cho phép bạn lên lịch để một quy trình tự động hoá bắt đầu tại một thời điểm chính xác duy nhất trong tương lai hoặc theo định kỳ, dựa trên thời gian thực hoặc một sự kiện liên quan đến mặt trời (tức là bình minh hoặc hoàng hôn).
Ví dụ: điều kiện khởi động này sẽ bắt đầu quy trình tự động hoá vào lúc 22:00 mỗi ngày:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
Ngoài ra, bạn có thể chỉ định sự kiện theo giờ mặt trời thay vì giờ trên đồng hồ. Tham số cho loại thành phần khởi động này là SolarTimeStruct
bao gồm:
type
, có thể làSolarTimeType.Sunrise
hoặcSolarTimeType.Sunset
.offset
, cho phép bạn điều chỉnh thời gian bắt đầu so với sự kiện mặt trời theo bất kỳ khoảng thời gian nào. Các giá trị dương sẽ gây ra độ trễ sau sự kiện năng lượng mặt trời và các giá trị âm sẽ khiến bộ khởi động kích hoạt trước sự kiện năng lượng mặt trời.
Ví dụ sau đây là một quy trình tự động hoá bắt đầu 15 phút trước khi mặt trời mọc mỗi ngày:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
Hai trình kích hoạt thứ hai là trình kích hoạt sự kiện định kỳ theo lịch, cho phép bạn tạo các quy trình tự động hoá chạy định kỳ theo các tiêu chí cụ thể hơn, có thể bao gồm cả điều kiện dựa trên thời gian và lịch.
Time.RecurringClockTimeScheduledEvent
cho phép bạn lên lịch cho một thao tác tự động dựa trên một hoặc nhiều điều kiện về thời gian hoặc ngày.
Trình khởi chạy này sử dụng một cú pháp tương tự như cú pháp mà tiện ích cron
của Unix dùng để chỉ định lịch biểu cho một quy trình tự động hoá định kỳ.
Time.RecurringSolarTimeScheduledEvent
cho phép bạn lên lịch tự động hoá dựa trên thời gian bình minh hoặc hoàng hôn, bạn cũng có thể kết hợp với một điều kiện dựa trên lịch.
cron
biểu thức
Bạn có thể đã quen thuộc với cron
, một lệnh được dùng trên các hệ thống Unix và Linux để lên lịch cho các công việc định kỳ.
Các trình khởi chạy sự kiện định kỳ theo lịch sử dụng một cú pháp biểu thức lập lịch tương tự như cú pháp mà cron
sử dụng. Vì lý do này, các biểu thức lập lịch được dùng với các trình khởi chạy này được gọi là biểu thức cron
.
Có nhiều "hương vị" khác nhau của cron
và một số biến thể của cú pháp trong các cách triển khai này. Biểu thức cron
của sự kiện kích hoạt theo lịch biểu định kỳ sử dụng cùng một cú pháp như trình lập lịch Quartz.
Cú pháp biểu thức Quartz cron
được giải thích trong tài liệu về CronExpression
của Quartz.
Ví dụ
Sau đây là một vài ví dụ minh hoạ.
Trường hợp sử dụng | Giây | Phút | Giờ | Ngày trong tháng | Tháng | Ngày trong tuần | Năm |
---|---|---|---|---|---|---|---|
Chạy mỗi 24 giờ, vào lúc nửa đêm | 0 |
0 |
0 |
? |
* |
* |
* |
Chạy lúc 6:00 sáng thứ Ba hằng tuần | 0 |
30 |
19 |
? |
* |
3 |
* |
Chạy vào mỗi giờ, vào thời điểm 15 phút sau mỗi giờ, trong tháng 2 | 0 |
15 |
* |
? |
2 |
* |
* |
Chạy một lần mỗi giờ | 0 |
0 |
* |
? |
* |
* |
* |
Chạy mỗi 24 giờ, vào nửa đêm, từ tháng 1 đến tháng 3, vào ngày trong tuần gần nhất với ngày 1 của tháng | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
Vào thứ Năm thứ hai của tháng Hai, mỗi giờ một lần, vào lúc 15 phút | 0 |
15 |
* |
? |
2 |
5#2 |
* |
Chạy vào mỗi giờ, vào ngày cuối cùng của tháng 2 | 0 |
15 |
* |
L |
2 |
? |
* |
Chạy lúc 6:00 sáng thứ Ba và thứ Năm hằng tuần | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
Trong một chương trình khởi động RecurringClockTimeScheduledEvent
, chuỗi biểu thức cron
được chỉ định cho trường Time.RecurringClockTimeScheduledEvent.cronExpression
.
Sau đây là ví dụ về một trình khởi chạy RecurringClockTimeScheduledEvent
bắt đầu quy trình tự động hoá lúc 8:00 tối, vào thứ Tư hằng tuần trong tháng Tư:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
Chương trình khởi động RecurringSolarTimeScheduleEvent
nhận 2 tham số:
- Một
SolarTimeStruct
. cronExpression
: Một tập hợp con của biểu thứccron
chỉ bao gồm các trường Ngày trong tháng, Tháng, Ngày trong tuần và Năm. Thời gian mặt trời xác định thời gian chính xác mà quy trình tự động hoá sẽ bắt đầu, do đó, các trường Giây, Phút và Giờ sẽ bị bỏ qua.
Ví dụ sau đây là một điều kiện kích hoạt khiến một quy trình tự động hoá bắt đầu một giờ sau khi mặt trời mọc, vào mỗi thứ Tư trong tháng Tư:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }