Bu belge AI tarafından çevrilmiştir. Herhangi bir yanlışlık için lütfen İngilizce sürümüne bakın
Zamanlanmış görevler, zaman koşuluna göre tetiklenen olaylardır ve iki farklı modda çalışır:
Sistem, yapılandırılan tetikleme koşullarını karşılayan zaman noktasına (saniye hassasiyetinde) ulaştığında, ilgili iş akışı tetiklenir.
İş akışı listesinde yeni bir iş akışı oluştururken, tür olarak “Zamanlanmış Görev”i seçin:

Bu standart mod için öncelikle başlangıç zamanını herhangi bir zaman noktası olarak (saniye hassasiyetinde) yapılandırmanız gerekir. Başlangıç zamanı gelecekte bir zaman olabileceği gibi, geçmişte bir zaman da olabilir. Geçmiş bir zaman olarak ayarlandığında, yapılandırılan tekrar koşuluna göre zamanın gelip gelmediği kontrol edilir. Eğer tekrar koşulu yapılandırılmamışsa ve başlangıç zamanı geçmişteyse, iş akışı bir daha tetiklenmez.
Tekrar kuralını yapılandırmanın iki yolu vardır:
Tekrar kuralını yapılandırdıktan sonra, bir bitiş koşulu da belirleyebilirsiniz. Bu, sabit bir zaman noktasında veya belirli bir çalıştırma sayısıyla sınırlanarak sona erebilir.
Bir koleksiyonun zaman alanını kullanarak başlangıç zamanını belirlemek, standart zamanlanmış görevleri koleksiyon zaman alanlarıyla birleştiren bir tetikleme modudur. Bu modu kullanmak, belirli süreçlerdeki düğümleri basitleştirebilir ve yapılandırma açısından daha sezgiseldir. Örneğin, süresi dolmuş ödenmemiş siparişlerin durumunu iptal edildi olarak değiştirmek için, sadece koleksiyon zaman alanı modunda bir zamanlanmış görev yapılandırabilir, başlangıç zamanını sipariş oluşturulduktan 30 dakika sonrası olarak seçebilirsiniz.
Yapılandırılan zaman koşulu karşılandığında, ancak NocoBase uygulama hizmetinin tamamı çalışmıyor veya durdurulmuş durumdaysa, o zaman noktasında tetiklenmesi gereken zamanlanmış görev atlanır. Ayrıca, hizmet yeniden başlatıldıktan sonra, atlanan görevler tekrar tetiklenmez. Bu nedenle, kullanırken bu tür durumlar için bir çözüm veya yedek önlemler düşünmeniz gerekebilir.
Bitiş koşulunda "tekrar sayısına göre" seçeneği yapılandırıldığında, aynı iş akışının tüm versiyonlarının toplam çalıştırma sayısı hesaplanır. Örneğin, bir zamanlanmış görev sürüm 1'de 10 kez çalıştırıldıysa ve tekrar sayısı da 10 olarak ayarlandıysa, bu iş akışı bir daha tetiklenmez. Yeni bir sürüme kopyalansa bile, tekrar sayısı 10'dan büyük bir sayıya değiştirilmedikçe tetiklenmeyecektir. Ancak, yeni bir iş akışı olarak kopyalanırsa, çalıştırma sayısı sıfırdan tekrar başlar. İlgili yapılandırmalar değiştirilmediği sürece, yeni iş akışı 10 kez daha tetiklenebilir.
Tekrar kuralındaki aralık zamanı, son tetiklemenin (veya başlangıç zamanının) zaman noktasına göre belirlenirken, gelişmiş mod sabit zaman noktalarında tetiklenir. Örneğin, her 30 dakikada bir tetiklenecek şekilde yapılandırıldıysa ve son tetikleme 2021-09-01 12:01:23 ise, bir sonraki tetikleme zamanı 2021-09-01 12:31:23 olacaktır. Gelişmiş mod, yani cron modu ise, yapılandırılan kurallar sabit zaman noktalarında tetiklenir. Örneğin, her saatin 01. ve 31. dakikalarında tetiklenecek şekilde yapılandırılabilir.
Oluşturulduktan sonra 30 dakikadan fazla süredir ödemesi tamamlanmamış siparişlerin her dakika kontrol edildiğini ve otomatik olarak iptal edildi durumuna getirildiğini varsayalım. Bunu iki farklı mod kullanarak uygulayacağız.
Zamanlanmış görev tabanlı bir iş akışı oluşturun. Tetikleyici yapılandırmasında “Özel Zaman” modunu seçin, başlangıç zamanını mevcut zamandan daha geç olmayan herhangi bir zaman noktası olarak belirleyin, tekrar kuralını “Her dakika” olarak seçin ve bitiş koşulunu boş bırakın:

Ardından, iş akışı mantığına göre diğer düğümleri yapılandırın: 30 dakika önceki zamanı hesaplayın ve bu zamandan önce oluşturulmuş, ödenmemiş siparişlerin durumunu iptal edildi olarak değiştirin:

İş akışı etkinleştirildikten sonra, başlangıç zamanından itibaren her dakika bir kez tetiklenir. Bu, 30 dakika önceki zamanı hesaplar ve bu zaman noktasından önce oluşturulmuş siparişlerin durumunu iptal olarak günceller.
Zamanlanmış görev tabanlı bir iş akışı oluşturun. Tetikleyici yapılandırmasında “Koleksiyon Zaman Alanı” modunu seçin, koleksiyon olarak “Siparişler” tablosunu belirleyin, başlangıç zamanını siparişin oluşturulma zamanından 30 dakika sonrası olarak ayarlayın ve tekrar kuralını “Tekrarlama” olarak seçin:

Ardından, iş akışı mantığına göre diğer düğümleri yapılandırın: Tetikleyici veri kimliğine sahip ve durumu “ödenmemiş” olan siparişleri iptal edildi durumuna güncelleyin:

Özel zaman modundan farklı olarak, burada 30 dakika önceki zamanı hesaplamaya gerek yoktur. Çünkü iş akışı tetikleyici veri bağlamı, zaman koşulunu karşılayan ilgili veri satırını zaten içerir, bu nedenle doğrudan ilgili siparişin durumunu güncelleyebilirsiniz.