Pemicu acara terjadwal berulang

Tiga pemicu berbeda memungkinkan Anda menjadwalkan otomatisasi terlebih dahulu:

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

Yang pertama, Time.ScheduledTimeEvent, memungkinkan Anda menjadwalkan otomatisasi untuk dimulai pada satu waktu yang tepat di masa mendatang, atau secara berulang, berdasarkan waktu jam atau peristiwa matahari (yaitu, matahari terbit atau terbenam).

Misalnya, pemicu ini memulai otomatisasi pada pukul 22.00 setiap hari:

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0)))
}

Atau, Anda dapat menentukan peristiwa waktu matahari, bukan waktu jam. Parameter untuk jenis pemicu ini adalah SolarTimeStruct yang terdiri dari:

  1. type, yang merupakan SolarTimeType.Sunrise atau SolarTimeType.Sunset.
  2. offset, yang memungkinkan Anda mengubah waktu mulai relatif terhadap peristiwa surya dengan jumlah waktu apa pun. Nilai positif akan menyebabkan penundaan setelah peristiwa surya, dan nilai negatif akan menyebabkan pemicu dipicu sebelum peristiwa surya.

Contoh berikut adalah pemicu yang memulai otomatisasi 15 menit sebelum matahari terbit setiap hari:

starter<_>(structure, Time.ScheduledTimeEvent) {
  parameter(
    Time.ScheduledTimeEvent.solarTime(
      SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15))
    )
  )
}

Dua pemicu kedua adalah pemicu peristiwa terjadwal berulang, yang memungkinkan Anda membuat otomatisasi yang berjalan secara berkala sesuai dengan kriteria yang lebih spesifik yang dapat mencakup kondisi berbasis waktu dan kalender.

Time.RecurringClockTimeScheduledEvent memungkinkan Anda menjadwalkan otomatisasi berdasarkan satu atau beberapa kondisi waktu atau tanggal. Pemicu ini menggunakan sintaksis yang mirip dengan yang digunakan oleh utilitas cron Unix untuk menentukan jadwal otomatisasi berulang.

Time.RecurringSolarTimeScheduledEvent memungkinkan Anda menjadwalkan otomatisasi berdasarkan waktu matahari terbit atau terbenam, secara opsional dikombinasikan dengan kondisi berbasis kalender.

Ekspresi cron

Anda mungkin sudah terbiasa dengan cron, perintah yang digunakan di sistem Unix dan Linux untuk menjadwalkan tugas berulang.

Pemicu acara terjadwal berulang menggunakan sintaksis ekspresi penjadwalan yang mirip dengan yang digunakan oleh cron, dan karena alasan ini, ekspresi penjadwalan yang digunakan dengan pemicu ini disebut sebagai ekspresi cron.

Ada beberapa 'ragam' cron yang berbeda, dan beberapa variasi sintaksis di seluruh implementasi ini. Ekspresi cron pemicu peristiwa terjadwal berulang menggunakan sintaksis yang sama dengan penjadwal Quartz. Sintaksis ekspresi cron Quartz dijelaskan dalam dokumentasi untuk CronExpression Quartz.

Contoh

Berikut beberapa contoh untuk mengilustrasikannya.

Kasus penggunaan Detik Menit Jam Tanggal Bulan Hari Tahun
Jalankan setiap 24 jam, pada tengah malam 0 0 0 ? * * *
Dijalankan pada pukul 06.00 setiap Selasa 0 30 19 ? * 3 *
Berjalan pada seperempat jam, setiap jam, selama bulan Februari 0 15 * ? 2 * *
Berjalan sekali per jam 0 0 * ? * * *
Berjalan setiap 24 jam, pada tengah malam, dari Januari hingga Maret, pada hari kerja yang paling dekat dengan tanggal 1 bulan 0 0 0 ? 1-3 1W *
Pada Kamis kedua bulan Februari, satu kali dalam satu jam, pada seperempat 0 15 * ? 2 5#2 *
Berjalan pada seperempat jam, setiap jam, pada hari terakhir bulan Februari 0 15 * L 2 ? *
Dijalankan pada pukul 06.00 setiap Selasa dan Kamis 0 30 19 ? * 3,5 *

RecurringClockTimeScheduledEvent

Di pemicu RecurringClockTimeScheduledEvent, string ekspresi cron ditetapkan ke kolom Time.RecurringClockTimeScheduledEvent.cronExpression.

Berikut adalah contoh pemicu RecurringClockTimeScheduledEvent yang memulai otomatisasi pada pukul 20.00, setiap hari Rabu di bulan April:

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

RecurringSolarTimeScheduleEvent

Pemicu RecurringSolarTimeScheduleEvent menggunakan dua parameter:

  1. SolarTimeStruct.
  2. cronExpression: Subset ekspresi cron yang hanya terdiri dari kolom Hari dalam Bulan, Bulan, Hari dalam Minggu, dan Tahun. Waktu matahari menentukan waktu persis dimulainya otomatisasi, sehingga kolom Detik, Menit, dan Jam dihilangkan.

Contoh berikut adalah pemicu yang menyebabkan otomatisasi dimulai satu jam setelah matahari terbit, setiap hari Rabu di bulan April:

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