Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Bu yazıda BPMN’de (Business Process Model and Notation) kullanılan event’lerin ne işe yaradığını, hangi durumlarda tercih edildiğini ve süreç içinde nasıl davrandıklarını öğreneceksin. Özellikle timer, message ve signal event’lerinin farklarını net şekilde anlayacak, hangi senaryoda hangisini kullanman gerektiğini kavrayacaksın.
Bu yazıda BPMN’de (Business Process Model and Notation) kullanılan event’lerin ne işe yaradığını, hangi durumlarda tercih edildiğini ve süreç içinde nasıl davrandıklarını öğreneceksin. Özellikle timer, message ve signal event’lerinin farklarını net şekilde anlayacak, hangi senaryoda hangisini kullanman gerektiğini kavrayacaksın.

Şimdi şöyle bir düşün: Bir süreç başlıyor, ilerliyor ve bir noktada bitiyor. Ama bu akışın “ne zaman başlayacağı”, “neye göre ilerleyeceği” ve “ne zaman duracağı” gibi kararları kim veriyor?
İşte burada event’ler devreye girer.
Event’ler, süreç içinde bir şeyin olduğunu, olacağını ya da beklendiğini ifade eder. BPMN’de üç temel event tipi vardır:
Yani şöyle düşün:
Yani şöyle düşün:
Start event = “Başla” düğmesi
Intermediate event = “Bekle / kontrol et” noktası
End event = “Bitti” noktası
Bu event’ler aslında süreç içinde “token” denilen bir akışın hareket etmesini sağlar.
Bunu şöyle hayal edebilirsin:
Bir topun bir boru içinde ilerlediğini düşün. Start event topu içeri bırakır, intermediate event’ler topu durdurabilir veya yönlendirebilir, end event ise topu sistemden çıkarır.
İlk önemli event türü: Timer Event
Bu event zaman bazlı çalışır. Yani bir şeyin belirli bir zaman geldiğinde ya da bir süre geçtikten sonra gerçekleşmesini sağlar.
Bu event süreci otomatik başlatır.
Örneğin:
Yani şöyle düşün:
Alarm kuruyorsun ve alarm çaldığında süreç başlıyor.
Bu event süreç başladıktan sonra devreye girer ve bir süre bekletir.
Örneğin:
Buradaki kritik nokta: Sayaç, token o noktaya geldiğinde başlar.
Bunu şöyle hayal edebilirsin:
Online bilet aldın → sistem 1 saat bekliyor → sonra bileti gönderiyor
Ya da daha gelişmiş senaryo:
Yani sabit süre değil, dinamik zamanlama da yapılabilir.

Şimdi biraz daha kritik bir konuya gelelim: Message Event
Bu event, süreçlerin birbirleriyle konuşmasını sağlar.
Ama burada önemli bir kural var:
Message event iki şekilde çalışır:
Yani şöyle düşün:
Biri sana mail atıyor (send), sen de maili okuyorsun (catch)
Message event’lerde birebir eşleşme vardır.
Yani:
Ne fazla ne eksik.
Bunu şöyle hayal edebilirsin:
Kargo gönderiyorsun ama adres tek bir kişiye ait olmak zorunda.
En büyük kullanım amacı: Scope ayırmak
Scope (kapsam)
Bir sürecin başlangıcı ve bitişi arasında kalan sorumluluk alanıdır.
Yani şöyle düşün:
Senin sorumluluğun burada bitiyor, sonrası başka bir ekibin işi.
Örnek:
Bu sayede sistemler birbirine bağlı ama bağımlı değil.
Şimdi işin teknik kısmı biraz derinleşiyor.
Birden fazla süreç aynı mesajı bekliyorsa ne olacak?
Cevap: Correlation Key
Bu anahtar, mesajın doğru sürece gitmesini sağlar.
Yani şöyle düşün:
100 tane sipariş var ama sen sadece “OrderID=123” olanı güncellemek istiyorsun.
Message:
Bu ikisi birlikte doğru hedefi bulur.

Message event’leri anladıysan, şimdi daha serbest bir versiyonuna bakalım: Signal Event
Bu event mesaj gibi çalışır ama çok daha gevşek kurallara sahiptir.
Yani:
Bunu şöyle hayal edebilirsin:
Message = WhatsApp DM
Signal = Twitter paylaşımı
Özellikle şu senaryolarda:
Örnek:
Timer burada işe yaramaz çünkü süre belirsiz.
Ama signal:
→ “İşlem bitti” diye bağırır
→ Herkes duyup harekete geçer
Signal’lar aslında filtrelenebilir.
Örneğin:
Bu sayede broadcast yaparken bile hedef daraltılabilir.
Bazı event’ler daha özel ama oldukça kullanışlı.
Bir şart gerçekleşene kadar bekler.
Yani şöyle düşün:
“Fiyat düşerse al, yükselirse sat”
Model içinde “kısayol” sağlar.
Bunu şöyle hayal edebilirsin:
Haritada teleport noktası gibi
Büyük diyagramlarda çizgileri karmaşıklaştırmadan akışı taşır.
Tüm süreci anında bitirir.
Normal end event:
→ sadece gelen token’ı bitirir
Terminate event:
→ tüm token’ları öldürür
Yani şöyle düşün:
“Programı kapat” vs “sadece bu sekmeyi kapat”
Birden fazla event’i aynı anda bekler.
İlk gerçekleşen kazanır.
Bunu şöyle hayal edebilirsin:
Hangisi önce olursa süreç oradan devam eder.
Aslında bu çok basit: BPMN’de event’ler, sürecin ne zaman başlayacağını, neye göre ilerleyeceğini ve nasıl biteceğini kontrol eder. Timer event’ler zaman bazlı çalışır, message event’ler süreçler arası kontrollü iletişim kurar ve signal event’ler geniş çaplı bildirimler yapar. Aralarındaki farkı anladığında, karmaşık görünen süreç modellerinin aslında oldukça sistematik ve tahmin edilebilir şekilde çalıştığını fark edersin. Özellikle “hangi durumda bekliyorum, hangi durumda tetikleniyorum” sorusunu doğru cevapladığında, event seçimi zaten kendiliğinden netleşir.
Bu yazı BPMN Intermediate Events and How to Use Them In Camunda videosundan ilham alınarak yazılmıştır.