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

Ba điều kiện khởi động khác nhau cho phép 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

Trình kích hoạt đầu tiên, Time.ScheduledTimeEvent, cho phép bạn lên lịch tự động hoá để bắt đầu vào một thời điểm chính xác trong tương lai hoặc đị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ụ: đ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ờ đồng hồ. Tham số cho loại trình khởi động này là một SolarTimeStruct bao gồm:

  1. type, có thể là SolarTimeType.Sunrise hoặc SolarTimeType.Sunset.
  2. offset, cho phép bạn thay đổi 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. Giá trị dương sẽ tạo độ trễ sau sự kiện mặt trời, còn giá trị âm sẽ khiến điều kiện khởi động kích hoạt trước sự kiện 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 điều kiện khởi động còn lại là điều kiện khởi động 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 quy trình 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 cú pháp tương tự như cú pháp mà tiện ích cron của Unix sử 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 mặt trời mọc hoặc mặt trời lặn, tuỳ ý kết hợp với điều kiện dựa trên lịch.

cron biểu thức

Có thể bạn đã quen thuộc với cron, một lệnh được dùng trên hệ thống Unix và Linux để lên lịch cho các công việc định kỳ.

Trình khởi động sự kiện theo lịch định kỳ sử dụng 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 dùng với các trình khởi động này được gọi là biểu thức cron.

Có một số "phiên bản" cron khác nhau và một số biến thể cú pháp trong các cách triển khai này. Biểu thức cron của trình khởi động sự kiện định kỳ theo lịch sử dụng cùng cú pháp với trình lập lịch biểu 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 24 giờ một lần, vào lúc nửa đêm 0 0 0 ? * * *
Chạy vào 6:00 sáng thứ Ba hằng tuần 0 30 19 ? * 3 *
Chạy vào 15 phút sau mỗi giờ, mỗi giờ, trong tháng 2 0 15 * ? 2 * *
Chạy một lần mỗi giờ 0 0 * ? * * *
Chạy 24 giờ một lần, vào lúc 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 2, mỗi giờ một lần, vào phút thứ 15 0 15 * ? 2 5#2 *
Chạy vào phút thứ 15 của mỗi giờ, vào ngày cuối cùng của tháng 2 0 15 * L 2 ? *
Chạy vào 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ề điều kiện khởi động RecurringClockTimeScheduledEvent để bắt đầu quy trình tự động hoá lúc 8 giờ tối, thứ Tư hằng tuần trong tháng 4:

starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) {
  parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *"))
}

RecurringSolarTimeScheduleEvent

RecurringSolarTimeScheduleEvent khởi động có hai 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. Giờ 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 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 thứ Tư hằng tuần trong tháng 4:

starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) {
  parameter(
    Time.RecurringSolarTimeScheduledEvent.solarTime(
      TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1))
    )
  )
  parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *"))
}