Başlangıç küçüktür. Bir pano her sabah güncel olsun diye tek bir zamanlanmış iş kurulur; çalışır, kimse bakmaz, mesele kapanır.
Sonra ikincisi gelir: yetki verisi gece senkronize edilsin. Üçüncüsü: haricî veritabanındaki tablo SAP’ye aktarılsın. Dördüncüsü: bir e-posta her ayın birinde çıksın. Her biri tek başına küçük bir iştir ve her biri ayrı bir ekranda kurulmuştur.
Eşik, iş sayısı arttığında değil soru değiştiğinde gelir. Bir sabah biri “bu rakam neden dünkü?” diye sorar. Cevabı bulmak için kaç ekran açmak gerekiyorsa altyapı o kadar dağılmıştır. Her modül kendi zamanlayıcısını, kendi günlüğünü ve kendi hata anlatısını taşıyorsa “gece ne oldu?” sorusunun tek bir cevabı olmaz.
Ortak iş kuyruğu ve çalışma durumları
Görevler tek çatıda tanımlanır: modül, iş tipi, periyot veya cron ifadesi, öncelik ve azami eşzamanlı çalışma sayısı görev başlığında durur. İş çok adımlı olabilir; her adımın işleyici kodu, parametreleri ve hata davranışı — dur ya da devam et — ayrı ayrı belirlenir.
Zamanı gelen iş için bekleyen bir çalışma kaydı yazılır. Sabit boyutlu havuzdaki bir işçi en yüksek öncelikli kaydı veritabanı seviyesinde kilitleyerek alır; böylece aynı işi iki işçi almaz. Havuz dolduğunda yeni kayıtlar kuyrukta bekler. Adımlar sırayla yürür, paralel dağıtım yoktur.
Operasyonun asıl bilgisi durum listesindedir: bekleyen, çalışan, SAP yanıtı bekleyen, başarılı, başarısız, iptal edilmiş. “SAP yanıtı bekliyor” en çok işe yarayanıdır, çünkü iş sizin tarafınızda değil dış sistemde durur; işçi serbest bırakılır ve beklenen dönüş tanımlı süre içinde gelmezse çalışma başarısız sayılır. Her çalışma için kuyruğa giriş, başlangıç, bitiş, süre, adım sonucu ve iş günlüğü saklanır.
Aynı çatıda BI önbellek yenileme, asenkron veri alma, BI akışı çalıştırma, BI görünümünün PDF olarak e-postalanması, AccessGuard kullanıcı deltası, değer kümesi senkronizasyonu, SQL kaynaklı TSAP aktarımı, e-posta şablonu gönderimi ve olay taraması çalışır. Bir panonun verisiyle bir yetki taramasının verisi aynı izleme diliyle konuşur.
Olay tetikleyicisi manuel kontrolün yerine geçince
İkinci mekanizma olaylardır. SAP’den gönderilen bir bildirim alınabilir ya da seçilen SAP tablosu belirli aralıklarla taranarak değişen satırlar okunabilir. Hangi tablo, hangi alanlar ve hangi filtre satırları izlenecekse tanımda durur. İşlenmiş satırlar anahtar alanlardan üretilen özetle işaretlenir; aynı değişiklik ikinci kez aksiyona dönüşmez.
Aksiyon tarafında üç hedef vardır: e-posta şablonu, kayıtlı bir REST servis çağrısı ve sistem görevi. Olay ile aksiyon arasına koşul yazılabilir; koşul olay satırı ve üst verisi üzerinden değerlendirilir. Tetikleyiciler mevcut dağıtıcı döngüsünde sırayla işlenir. Gelen olaylar ve çalıştırılan aksiyonlar ham ileti yüküyle birlikte olay günlüğünde kalır.
Deneme sayısı alanını doğru okumak
- Görev tanımında deneme sayısı alanı bulunur; bunu her başarısız işin kendiliğinden yeniden çalıştığı anlamına gelmeyecek biçimde okumak gerekir.
- Dosya yüklemeli TSAP aktarımı zamanlanamaz, kullanıcı yüklemesiyle çalışır; SQL kaynaklı projeler zamanlanabilir.
- Olay tarafındaki SAP görev aksiyonu hedefi doğrular ve kuyruk sonucu üretir; SAP’deki çalıştırmanın tamamlandığını göstermez.
- İptal isteği iş birliğine dayanır: çalışan işleyici iptal bağlamını kontrol etmelidir. Çekme yöntemiyle gelen olaylar da tarama periyodu kadar sonra görünür.
- Yarım kalan bir aktarımı yeniden başlatmadan önce önceki adımın hedef sistemde ne bıraktığını kontrol edin; ikinci çalışma kayıtları ikiye katlayabilir.
Bu katmanı bilmenin pratik faydası soruyu değiştirmesidir. “Hangi modül bozuldu?” yerine “iş hangi durumda kaldı?” diye sorarsınız; cevap genellikle modülün içinde değil, çalışma kaydının adım listesindedir.
Denemek için yeni bir kurulum gerekmez: bu haftanın çalışma kayıtlarını açıp yalnızca durum kolonuna bakın ve tekrar eden durumu işaretleyin. Aynı listeyi bizimle okumak isterseniz kendi gece pencerenizden bir hafta seçelim; hangi işin hangi adımda beklediğini ve hangi manuel kontrolün olay tetikleyicisine taşınabileceğini sırayla geçelim.