Üç farklı başlatıcı, otomasyonu önceden planlamanıza olanak tanır:
İlki (Time.ScheduledTimeEvent
), bir otomasyonu gelecekte belirli bir anda veya saate ya da güneş olayına (ör. gün doğumu veya gün batımı) göre tekrarlı olarak başlayacak şekilde planlamanıza olanak tanır.
Örneğin, bu başlatıcı otomasyonu her gün 22:00'de başlatır:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter(Time.ScheduledTimeEvent.clockTime(LocalTime.of(22, 0, 0, 0))) }
Alternatif olarak, saat zamanı yerine güneş zamanı etkinliğini de belirtebilirsiniz. Bu tür başlatıcının parametresi, aşağıdakilerden oluşan bir SolarTimeStruct
'dir:
type
,SolarTimeType.Sunrise
veyaSolarTimeType.Sunset
olabilir.offset
, başlangıç zamanını güneş olayına göre istediğiniz kadar kaydırmanıza olanak tanır. Pozitif değerler güneş etkinliğinden sonra bir gecikme, negatif değerler ise marş motorunun güneş etkinliğinden önce tetiklenmesine neden olur.
Aşağıdaki örnekte, otomasyonu her gün güneş doğmadan 15 dakika önce başlatan bir başlatıcı gösterilmektedir:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
İkinci iki başlatıcı, yinelenen planlanmış etkinlik başlatıcılarıdır. Bu başlatıcılar, hem zamana hem de takvime dayalı koşullar içerebilecek daha spesifik ölçütlere göre düzenli olarak çalışan otomasyonlar oluşturmanıza olanak tanır.
Time.RecurringClockTimeScheduledEvent
bir veya daha fazla saat ya da tarih koşuluna göre otomasyon planlamanıza olanak tanır.
Bu başlatıcı, yinelenen bir otomasyonun planını belirtmek için Unix cron
yardımcı programı tarafından kullanılana benzer bir söz dizimi kullanır.
Time.RecurringSolarTimeScheduledEvent
, isteğe bağlı olarak takvime dayalı bir koşulla birlikte gün doğumu veya gün batımı saatine göre otomasyon planlamanıza olanak tanır.
cron
ifadeler
Yinelenen işleri planlamak için Unix ve Linux sistemlerinde kullanılan cron
komutunu zaten biliyor olabilirsiniz.
Yinelenen planlanmış etkinlik başlatıcıları, cron
tarafından kullanılana benzer bir planlama ifadesi söz dizimi kullanır. Bu nedenle, bu başlatıcılarla kullanılan planlama ifadelerine cron
ifadeleri denir.
cron
'ın birkaç farklı "türü" ve bu uygulamalarda söz dizimi için birkaç varyasyon vardır. Düzenli olarak planlanan etkinlik başlatıcı cron
ifadelerinde Quartz planlayıcısı ile aynı söz dizimi kullanılır.
Quartz cron
ifade söz dizimi, Quartz'ın CronExpression
belgeleri bölümünde açıklanmıştır.
Örnekler
Aşağıda konuyu açıklayan birkaç örnek verilmiştir.
Kullanım alanı | Saniye | Dakika | Saat | Ayın günü | Ay | Haftanın günü | Yıl |
---|---|---|---|---|---|---|---|
Gece yarısı, 24 saatte bir çalıştır | 0 |
0 |
0 |
? |
* |
* |
* |
Her Salı saat 06:00'da çalıştır | 0 |
30 |
19 |
? |
* |
3 |
* |
Şubat ayı boyunca her saat 25 geçe çalıştırılır. | 0 |
15 |
* |
? |
2 |
* |
* |
Saatte bir çalıştır | 0 |
0 |
* |
? |
* |
* |
* |
Ocak-Mart ayları arasında, ayın 1'ine en yakın iş gününde, gece yarısında 24 saatte bir çalıştır | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
Şubat ayının ikinci Perşembe günü, saat başı 15 geçe | 0 |
15 |
* |
? |
2 |
5#2 |
* |
Şubat ayının son gününde her saat 15:15'te çalıştırılır | 0 |
15 |
* |
L |
2 |
? |
* |
Her salı ve perşembe günü saat 06:00'da çalıştır | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
RecurringClockTimeScheduledEvent
başlatıcısında cron
ifade dizesi Time.RecurringClockTimeScheduledEvent.cronExpression
alanına atanır.
Aşağıda, Nisan ayının her Çarşamba günü saat 20:00'de otomasyonu başlatan bir RecurringClockTimeScheduledEvent
başlatıcı örneği verilmiştir:
starter<_>(structure, event = Time.RecurringClockTimeScheduledEvent) { parameter(Time.RecurringClockTimeScheduledEvent.cronExpression("0 0 20 ? 4 4 *")) }
RecurringSolarTimeScheduleEvent
RecurringSolarTimeScheduleEvent
başlatıcısı iki parametre alır:
SolarTimeStruct
cronExpression
: Yalnızca Ayın-Günü, Ay, Haftanın-Günü ve Yıl alanlarından oluşan bircron
ifadesinin alt kümesi. Güneş saati, otomasyonun tam olarak ne zaman başlayacağını belirler. Bu nedenle, Saniye, Dakika ve Saat alanları atlanır.
Aşağıdaki örnekte, Nisan ayında her Çarşamba güneş doğduktan bir saat sonra otomasyonun başlamasına neden olan bir başlatıcı gösterilmektedir:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }