Üç farklı başlatıcı, otomasyonu önceden planlamanıza olanak tanır:
İlk seçenek olan Time.ScheduledTimeEvent, otomasyonu gelecekteki tek bir kesin anda veya saat ya da güneşle ilgili bir olaya (ör. gün doğumu veya gün batımı) göre tekrarlanan bir şekilde başlatacak şekilde planlamanıza olanak tanır.
Örneğin, bu başlatıcı otomasyonu her gün 22:00'da 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ği belirtebilirsiniz. Bu tür başlangıç için parametre, aşağıdakilerden oluşan bir SolarTimeStruct'dir:
type,SolarTimeType.SunriseveyaSolarTimeType.Sunset.offset, bu özellik sayesinde başlangıç saatini güneş enerjisi etkinliğine göre istediğiniz kadar değiştirebilirsiniz. Pozitif değerler güneş olayından sonra gecikmeye neden olurken negatif değerler, başlatıcının güneş olayından önce tetiklenmesine neden olur.
Aşağıdaki örnek, her gün gün doğumundan 15 dakika önce otomasyonu başlatan bir başlatıcıdır:
starter<_>(structure, Time.ScheduledTimeEvent) { parameter( Time.ScheduledTimeEvent.solarTime( SolarTimeStruct(SolarTimeType.Sunrise, java.time.Duration.ofMinutes(-15)) ) ) }
Diğer iki başlatıcı ise yinelenen planlanmış etkinlik başlatıcılarıdır. Bu başlatıcılar, hem zamana hem de takvime dayalı koşulları içerebilen daha spesifik ölçütlere göre düzenli olarak çalışan otomasyonlar oluşturmanıza olanak tanır.
Time.RecurringClockTimeScheduledEvent
bir veya daha fazla zaman ya da tarih koşuluna göre otomasyon planlamanıza olanak tanır.
Bu başlatıcı, yinelenen bir otomasyonun zamanlamasını belirtmek için Unix cron
aracının kullandığına benzer bir söz dizimi kullanır.
Time.RecurringSolarTimeScheduledEvent
Gün doğumu veya gün batımı saatine göre otomasyon planlamanıza olanak tanır.
İsteğe bağlı olarak takvime dayalı bir koşulla birlikte kullanılabilir.
cron ifadeler
Tekrarlanan işleri planlamak için Unix ve Linux sistemlerinde kullanılan bir komut olan cron komutunu zaten biliyor olabilirsiniz.
Tekrarlanan planlanmış etkinlik başlatıcıları, cron tarafından kullanılanlara benzer bir planlama ifadesi söz dizimi kullanır. Bu nedenle, bu başlatıcılarla kullanılan planlama ifadeleri cron ifadeleri olarak adlandırılır.
cron'nın birkaç farklı "türü" ve bu uygulamalarda söz diziminin çeşitli varyasyonları vardır. Yinelenen planlanmış etkinlik başlatıcı cron
ifadeleri, Quartz zamanlayıcı ile aynı söz dizimini kullanır.
Quartz cron ifadesi söz dizimi, Quartz'ın belgelerinde
CronExpression açıklanmaktadır.
Örnekler
Aşağıda bu durumu açıklayan birkaç örnek verilmiştir.
| Kullanım alanı | Saniye | Dakika | Saat | Ayın günü | Ay | Haftanın günü | Yıl |
|---|---|---|---|---|---|---|---|
| Her 24 saatte bir, gece yarısı çalıştırılır. | 0 |
0 |
0 |
? |
* |
* |
* |
| Her salı saat 06:00'da çalıştır | 0 |
30 |
19 |
? |
* |
3 |
* |
| Şubat ayı boyunca her saat, saat başını 15 dakika geçe çalıştır | 0 |
15 |
* |
? |
2 |
* |
* |
| Saatte bir kez çalıştırılır. | 0 |
0 |
* |
? |
* |
* |
* |
| Ocak-Mart ayları arasında, ayın 1'ine en yakın hafta içi günü, her 24 saatte bir gece yarısı çalıştırılır. | 0 |
0 |
0 |
? |
1-3 |
1W |
* |
| Şubat ayının ikinci Perşembe günü, saat başı, çeyrek geçe | 0 |
15 |
* |
? |
2 |
5#2 |
* |
| Şubat ayının son günü her saat, saat başını 15 dakika geçe çalıştır | 0 |
15 |
* |
L |
2 |
? |
* |
| Her salı ve perşembe saat 06:00'da çalıştır | 0 |
30 |
19 |
? |
* |
3,5 |
* |
RecurringClockTimeScheduledEvent
RecurringClockTimeScheduledEvent başlatıcıda, cron ifade dizesi Time.RecurringClockTimeScheduledEvent.cronExpression alanına atanır.
Aşağıda, Nisan ayında her çarşamba 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 bircronifadesinin alt kümesi. Otomasyonun tam olarak hangi saatte başlayacağını güneş saati belirler. Bu nedenle, Saniye, Dakika ve Saat alanları atlanır.
Aşağıdaki örnek, nisan ayının her çarşambası, gün doğumundan bir saat sonra otomasyonun başlamasına neden olan bir başlatıcıdır:
starter<_>(structure, event = Time.RecurringSolarTimeScheduledEvent) { parameter( Time.RecurringSolarTimeScheduledEvent.solarTime( TimeTrait.SolarTimeStruct(SolarTimeType.Sunrise, Duration.ofHours(1)) ) ) parameter(Time.RecurringSolarTimeScheduledEvent.cronExpression("? 4 4 *")) }