Zamanlanmış Otomasyonlar
Zamanlanmış otomasyonlar, iş öğesi olaylarına yanıt olarak değil, belirtilen zamanlarda çalışır. Periyodik bakım, tekrarlayan raporlar, temizlik görevleri ve zamana duyarlı iş akışları için idealdir. Zamanlanmış bir kural tetiklendiğinde, motor koşullarını projedeki tüm iş öğelerine karşı değerlendirir ve eşleşen her öğede eylemleri yürütür.
Zamanlama tipleri
SetGet, her biri farklı kullanım senaryolarına uygun üç zamanlama tipini destekler.
| Tip | Açıklama | En uygun olduğu durum |
|---|---|---|
| Bir kez | Belirli bir tarih ve saatte tek sefer tetiklenir | Tek seferlik taşımalar, lansman günü görevleri, son tarih hatırlatmaları |
| Aralık | Sabit bir aralıkta tekrar tekrar tetiklenir | Düzenli sağlık kontrolleri, periyodik durum güncellemeleri |
| Cron | Bir cron ifadesi zamanlamasında tetiklenir | Karmaşık tekrarlayan zamanlamalar, iş saatleri iş akışları |
Bir kez: tek seferlik yürütme
Tek seferlik zamanlama, yapılandırılan tarih ve saatte tam olarak bir kez tetiklenir, ardından devre dışı kalır.
Yapılandırma
scheduledtetikleyicisiyle bir kural oluşturun veya düzenleyin.- Zamanlama bölümünde Bir kez seçin.
- Tarih seçicisinden tarih seçin.
- Zaman seçicisinden saat seçin.
- Saat dilimini seçin.
- Kuralı kaydedin.
Parametreler
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
date | Tarih | Evet | Yürütme tarihi (YYYY-MM-DD) |
time | Saat | Evet | Yürütme saati (HH:MM, 24 saat formatı) |
timezone | Saat dilimi | Evet | IANA saat dilimi tanımlayıcısı |
Yürütme sonrası davranış
Tek seferlik zamanlama tetiklendikten sonra:
- Kuralın durumu Tamamlandı olarak değişir.
- Yürütme Yürütme Geçmişi sayfasına kaydedilir.
- Kural otomasyonlar listesinde görünür kalır ancak tekrar tetiklenmez.
- Kuralı düzenleyerek ve yeni bir tarih ve saat ayarlayarak yeniden etkinleştirebilirsiniz.
Örnek: lansman günü öncelik yükseltme
15 Nisan 2026 sabah 9:00'da bir ürün lansmanından önce, tüm açık öğeleri yükselt:
- Tetikleyici:
scheduled(bir kez: 2026-04-15 09:00, America/New_York) - Koşul: Durum grubu "started" VE öncelik "low" veya "medium"
- Eylem:
change_priorityile "high",add_comment"Lansman günü için öncelik yükseltildi"
Aralık: sabit periyotlarda tekrarlayan
Aralık zamanlamaları sabit bir periyotta tekrar tekrar tetiklenir. Aralık, son yürütme zamanından itibaren ölçülür.
Yapılandırma
scheduledtetikleyicisiyle bir kural oluşturun veya düzenleyin.- Zamanlama bölümünde Aralık seçin.
- Aralık değerini girin (pozitif tamsayı).
- Açılır menüden aralık birimini seçin.
- İlk yürütme hesaplaması için saat dilimini seçin.
- Kuralı kaydedin.
Parametreler
| Parametre | Tip | Zorunlu | Seçenekler |
|---|---|---|---|
interval_value | Integer | Evet | 1 veya daha büyük |
interval_unit | Enum | Evet | minutes, hours, days, weeks |
timezone | Saat dilimi | Evet | IANA saat dilimi tanımlayıcısı |
Desteklenen aralıklar
| Birim | Minimum | Maksimum | Örnekler |
|---|---|---|---|
| Dakika | 15 | 1440 (24 saat) | Her 15 dakikada, her 60 dakikada |
| Saat | 1 | 168 (7 gün) | Her 1 saatte, her 6 saatte, her 24 saatte |
| Gün | 1 | 90 | Her 1 günde, her 7 günde, her 30 günde |
| Hafta | 1 | 12 | Her 1 haftada, her 2 haftada, her 4 haftada |
UYARI
Minimum aralık 15 dakikadır. Otomasyon motorunda aşırı yük oluşmasıni önlemek için daha kisa aralıklar reddedilir.
Aralık kayması
Aralıklar, sabit bir saat zamanından değil, son yürütmenin tamamlanmasından itibaren ölçülür. Bir yürütme 2 dakika sürerse ve aralık 60 dakika ise, sonraki yürütme öncekinin başlamasından 62 dakika sonra gerçekleşir. Saate hizalanmış zamanlama için bunun yerine cron ifadelerini kullanın.
Örnek: günlük bayat öğe kontrolü
Her 24 saatte bir bayat öğeleri kontrol et:
- Tetikleyici:
scheduled(aralık: 24 saat) - Koşul: Durum grubu "started" VE
updated_at_age_days7'den büyük - Eylem:
add_label"Bayat", atananlarasend_notification
Cron: standart cron ifadeleri
Cron zamanlamaları, hassas, saate hizalanmış zamanlama için standart cron ifadelerini kullanır. Bu en esnek zamanlama tipidir.
Yapılandırma
scheduledtetikleyicisiyle bir kural oluşturun veya düzenleyin.- Zamanlama bölümünde Cron seçin.
- Metin alanina cron ifadesini girin.
- Saat dilimini seçin.
- Arayüz önizleme olarak sonraki 5 yürütme zamanını gösterir.
- Kuralı kaydedin.
Cron ifade formatı
SetGet standart 5 alanlı cron formatını kullanır:
dakika (0-59)
saat (0-23)
ayin gunu (1-31)
ay (1-12)
haftanin gunu (0-6, Pazar=0)Cron alan referansı
| Alan | İzin verilen değerler | Özel karakterler |
|---|---|---|
| Dakika | 0-59 | * , - / |
| Saat | 0-23 | * , - / |
| Ayin günü | 1-31 | * , - / |
| Ay | 1-12 | * , - / |
| Haftanin günü | 0-6 (Pzr=0) | * , - / |
Özel karakterler
| Karakter | Anlam | Örnek |
|---|---|---|
* | Herhangi bir değer | * * * * * = her dakika |
, | Değer listesi | 1,15 * * * * = dakika 1 ve 15 |
- | Aralık | 9-17 * * * * = saat 9'dan 17'ye |
/ | Adım | */15 * * * * = her 15 dakikada |
Yaygın cron ifadeleri
| İfade | Açıklama |
|---|---|
0 2 * * * | Her gün saat 02:00'de |
0 9 * * 1 | Her Pazartesi saat 09:00'da |
0 9 * * 1-5 | Hafta içi her gün saat 09:00'da |
0 0 1 * * | Her ayın ilk günü gece yarısı |
0 */6 * * * | Her 6 saatte |
30 8 * * 1 | Her Pazartesi saat 08:30'da |
0 17 * * 5 | Her Cuma saat 17:00'de |
0 9,17 * * * | Günde iki kez saat 09:00 ve 17:00'de |
0 0 15 * * | Her ayın 15'inde gece yarısı |
Örnek: her gece saat 02:00'de temizlik
30 günden eski tamamlanmış öğeleri her gece arşivle:
- Tetikleyici:
scheduled(cron:0 2 * * *, saat dilimi: UTC) - Koşul: Durum grubu "completed" VE
updated_at_age_days30'dan büyük - Eylem:
archive
Örnek: her Pazartesi haftalık rapor
Proje yöneticisine bayat öğelerin haftalık raporunu gönder:
- Tetikleyici:
scheduled(cron:0 9 * * 1, saat dilimi: America/New_York) - Koşul: Durum grubu "started" VE
updated_at_age_days7'den büyük - Eylem: Proje yöneticisine özet ile
send_notification,add_label"Dikkat Gerekli"
Örnek: aylık arşiv
Her ayın ilk gününde iptal edilmiş öğeleri arşivle:
- Tetikleyici:
scheduled(cron:0 0 1 * *, saat dilimi: Europe/London) - Koşul: Durum grubu "cancelled"
- Eylem:
archive
Saat dilimi seçimi
Tüm zamanlama tipleri bir saat dilimi gerektirir. Saat dilimi, zamanlamanın yerel saate göre ne zaman tetikleneceğini belirler.
Saat dilimi seçme
- Zamanlama yapılandırmasında Saat Dilimi açılır menüsüne tıklayın.
- Saat diliminizi arayın veya göz atın.
- IANA saat dilimi tanımlayıcısını seçin (örneğin,
America/New_York,Europe/Istanbul,Asia/Tokyo).
Yaz saati uygulaması
SetGet, yaz saati uygulaması (DST) geçişlerini otomatik olarak yönetir. Saatler değiştiğinde:
- "İleri atla" geçişi sırasında saat 02:00 için ayarlanmış bir zamanlama saat 03:00'te (bir sonraki geçerli zaman) tetiklenir.
- "Geri al" geçişi sırasında saat 01:30 için ayarlanmış bir zamanlama bir kez tetiklenir (iki kez değil).
Sonraki çalışma hesaplaması
Otomasyon ayarları sayfası, her zamanlanmış kural için sonraki zamanlanmış çalışmayı gösterir. Bu, mevcut zaman, zamanlama yapılandırması ve saat diliminden hesaplanır.
| Zamanlama tipi | Sonraki çalışma hesaplaması |
|---|---|
| Bir kez | Gelecekteyse yapılandırılan tarih ve saat |
| Aralık | Son yürütme zamanı + aralık süresi |
| Cron | Cron ifadesinden sonraki eşleşen zaman |
Bir kural durdurulmuşsa, sonraki çalışma alanı bir zaman yerine "Durduruldu" gösterir.
Arka plan zamanlayıcısı
SetGet arka plan zamanlayıcısı, zamanlanmış tetikleyicileri çalıştırmaktan sorumludur.
Nasıl çalışır
- Zamanlayıcı, API sunucusunda bir arka plan goroutine'i olarak çalışır.
- Her 60 saniyede tüm aktif zamanlanmış kuralları kontrol eder.
- Sonraki çalışma zamanı geçmiş her kural için zamanlayıcı tetikleyiciyi çalıştırır.
- Kuralın koşulları projedeki tüm eşleşen iş öğelerine karşı değerlendirilir.
- Eylemler, koşulları geçen her öğede yürütülür.
- Sonraki çalışma zamanı yeniden hesaplanır ve saklanır.
Yürütme garantileri
| Özellik | Garanti |
|---|---|
| Zamanlama doğruluğu | Zamanlanan saatin 60 saniyesi içinde |
| En-az-bir-kez teslimat | Evet. Sunucu yeniden başlarsa, kaçırılan zamanlamalar başlangıçta tetiklenir. |
| Tam-bir-kez teslimat | En iyi çaba. Nadir durumlarda (yürütme sırasında sunucu çökmesi), bir zamanlama iki kez tetiklenebilir. Eylemler idempotent olmalıdır. |
| Eş zamanlı yürütme | Önceki yürütmesi hala devam ediyorsa bir kural tekrar tetiklenmez. |
İPUCU
Zamanlanmış otomasyon eylemlerini idempotent olacak şekilde tasarlayın. Örneğin, "mevcut değilse etiket ekle" birden fazla kez çalıştırmak için güvenlidir, "etiket değiştir" ise değildir.
Zamanlanmış kuralları izleme
Zamanlanmış kuralların durumunu ve geçmişini incelemek için:
- Projede Ayarlar > Otomasyonlar bölümüne gidin.
- Kural listesini tetikleyici tipi Zamanlanmış olarak filtreleyin.
- Her kural zamanlama yapılandırmasını, sonraki çalışma zamanını ve son yürütme durumunu gösterir.
- Tüm Yürütme Geçmişi sayfasını görüntülemek için bir kurala tıklayın.
İlgili sayfalar
- Tetikleyiciler -- Zamanlanmış tetikleyici dahil tüm tetikleyici tipleri
- Koşullar -- Zamanlamanin üzerinde hareket ettigi öğeleri filtreleme
- Eylemler -- Zamanlama tetiklendiğinde ne olur
- Yürütme Geçmişi -- Geçmiş zamanlanmış çalışmaları inceleme
- Gelişmiş Kalıplar -- Karmaşık zamanlama stratejileri