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

Điều kiện khởi động đầu tiên là Time.ScheduledTimeEvent, Điều kiện này cho phép bạn lên lịch để quy trình tự động hoá 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 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 bắt đầu quy trình tự động hoá vào lúc 10:00 tối hằng 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 liên quan đến thời gian thực thay vì thời gian thực. Tham số cho loại điều kiện khởi động này là SolarTimeStruct bao gồm:

  1. type, là SolarTimeType.Sunrise hoặc SolarTimeType.Sunset.
  2. offset, cho phép bạn chuyển thời gian bắt đầu so với sự kiện liên quan đến mặt trời theo bất kỳ khoảng thời gian nào. Giá trị dương sẽ tạo ra độ trễ sau sự kiện liên quan đến mặt trời và giá trị âm sẽ khiến điều kiện khởi động kích hoạt trước sự kiện liên quan đến mặt trời.

Ví dụ sau đây là một điều kiện khởi động bắt đầu quy trình tự động hoá 15 phút trước khi bình minh hằng 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 thứ hai là điều kiện khởi động sự kiện đã lên lịch định kỳ, 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 hoá dựa trên một hoặc nhiều điều kiện về thời gian hoặc ngày. Điều kiện 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 dùng để chỉ định lịch cho một quy trình tự động hoá định kỳ.

Time.RecurringSolarTimeScheduledEvent cho phép bạn lên lịch cho một quy trình tự động hoá dựa trên thời gian bình minh hoặc hoàng hôn, có thể kết hợp với điều kiện dựa trên lịch.

Biểu thức cron

Bạn có thể đã 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ỳ.

Điều kiện khởi động sự kiện đã lên lịch định kỳ sử dụng cú pháp biểu thức lên lịch tương tự như cú pháp mà cron dùng. Vì lý do này, các biểu thức lên lịch được dùng với các điều kiệ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 điều kiện khởi động sự kiện đã lên lịch định kỳ sử dụng cùng một cú pháp như trình lập lịch biểu Quartz. Cú pháp biểu thức cron của Quartz được giải thích trong tài liệu về Quartz's CronExpression.

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 nửa đêm 0 0 0 ? * * *
Chạy vào lúc 6:00 sáng mỗi thứ Ba 0 30 19 ? * 3 *
Chạy vào mỗi giờ, vào 15 phút sau mỗi giờ, trong tháng 2 0 15 * ? 2 * *
Chạy mỗi giờ một lần 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 2, mỗi giờ một lần, vào 15 phút sau mỗi giờ 0 15 * ? 2 5#2 *
Chạy vào mỗi giờ, vào 15 phút sau 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 mỗi thứ Ba và thứ Năm 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

Trong điều kiện 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ề điều kiện khởi động RecurringClockTimeScheduledEvent bắt đầu quy trình tự động hoá vào lúc 8:00 tối, mỗi thứ Tư trong tháng 4:

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

RecurringSolarTimeScheduleEvent

Điều kiện khởi động RecurringSolarTimeScheduleEvent có 2 tham số:

  1. SolarTimeStruct.
  2. cronExpression: 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 liên quan đến 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 bình minh, mỗi thứ Tư 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 *"))
}