Trình kích hoạt sự kiện định kỳ theo lịch

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á:

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

Đầu tiên, Time.ScheduledTimeEvent, cho phép bạn lên lịch tự động hóa để bắt đầu tại một thời điểm chính xác trong tương lai hoặc theo định kỳ, dựa trên thời gian đồng hồ hoặc sự kiện mặt trời (tức là bình minh hoặc hoàng hôn).

Ví dụ, trình khởi động này sẽ bắt đầu tự động hóa vào lúc 10:00 tối 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 khởi động này là SolarTimeStruct bao gồm:

  1. type, có thể là SolarTimeType.Sunrise hoặc SolarTimeType.Sunset.
  2. 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 gây ra độ trễ sau sự kiện năng lượng mặt trời và các giá trị âm 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 điều kiện khởi động giúp bắt đầu quy trình tự động hoá 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 động 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.RecurringSolarTimeScheduledEventcho 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 thành phần khởi động 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 thành phần khởi động này được gọi là biểu thức cron.

Có một số "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ụ

Dưới đây là một vài ví dụ minh hoạ.

Trường hợp sử dụng Giây Phút Giờ Day-of-Month (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ờ, ở phút thứ 15, 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 lúc 15 phút, 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 trình khởi động RecurringClockTimeScheduledEvent, chuỗi biểu thức cron được gán cho trường Time.RecurringClockTimeScheduledEvent.cronExpression.

Sau đây là ví dụ về một RecurringClockTimeScheduledEvent khởi động quy trình tự động hoá lúc 8 giờ 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 RecurringSolarTimeScheduleEvent khởi động nhận 2 tham số:

  1. SolarTimeStruct.
  2. cronExpression: Một tập hợp con của biểu thức cron 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à quá trình tự động hóa 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 khởi động khiến 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 *"))
}