BPMN Event’leri: Süreçleri Tetikleyen ve Yöneten Mekanizmalar

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.

Event Nedir ve Süreçte Ne İşe Yarar?

Ş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:

  • Start Event → süreci başlatır
  • Intermediate Event → süreç içinde bir şeylerin olmasını bekler ya da tetikler
  • End Event → süreci sonlandırı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.


Timer Event: Zamanla Çalışan Süreçler

İ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.

Timer Start Event

Bu event süreci otomatik başlatır.

Örneğin:

  • Her gece saat 00:00’da çalışan bir batch job
  • Haftalık rapor üreten bir sistem

Yani şöyle düşün:

Alarm kuruyorsun ve alarm çaldığında süreç başlıyor.


Intermediate Timer Event

Bu event süreç başladıktan sonra devreye girer ve bir süre bekletir.

Örneğin:

  • “1 saat sonra devam et”
  • “Etkinlikten 1 ay önce işlem yap”

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:

  • Konser tarihi var
  • Sistem “konserden 1 ay önce” tetikleniyor

Yani sabit süre değil, dinamik zamanlama da yapılabilir.


Message Event: Süreçler Arası İletişim

Ş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:

  • Mesaj başka bir sürece gider
  • Aynı süreç kendi kendine message göndermez
Catch ve Throw Mantığı

Message event iki şekilde çalışır:

  • Catch (yakalama) → mesajı bekler
  • Throw (gönderme) → mesaj yollar

Yani şöyle düşün:

Biri sana mail atıyor (send), sen de maili okuyorsun (catch)


En Kritik Kural: One-to-One

Message event’lerde birebir eşleşme vardır.

Yani:

  • 1 mesaj → 1 alıcı

Ne fazla ne eksik.

Bunu şöyle hayal edebilirsin:

Kargo gönderiyorsun ama adres tek bir kişiye ait olmak zorunda.


Neden Kullanılır?

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:

  • Sipariş süreci bitti → faturalama sürecine mesaj gönderildi
  • Onboarding süreci → background check sistemine mesaj attı

Bu sayede sistemler birbirine bağlı ama bağımlı değil.


Message Event’te Correlation Mantığı

Ş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:

  • Name → mesaj tipi
  • Correlation Key → hangi instance

Bu ikisi birlikte doğru hedefi bulur.


Signal Event: Broadcast Mantığı

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.

En büyük fark:
  • Message → birebir
  • Signal → broadcast (yayın)

Yani:

  • 0 kişiye gidebilir
  • 1 kişiye gidebilir
  • 100 kişiye gidebilir

Bunu şöyle hayal edebilirsin:

Message = WhatsApp DM

Signal = Twitter paylaşımı


Ne Zaman Kullanılır?

Özellikle şu senaryolarda:

  • Bir olay gerçekleştiğinde birden fazla süreci tetiklemek
  • Paralel çalışan sistemleri aynı anda başlatmak

Örnek:

  • Data processing bitti
  • 10 farklı raporlama süreci aynı anda başlıyor

Timer burada işe yaramaz çünkü süre belirsiz.

Ama signal:

→ “İşlem bitti” diye bağırır

→ Herkes duyup harekete geçer


Gelişmiş Kullanım: Dinamik Signal

Signal’lar aslında filtrelenebilir.

Örneğin:

  • “user-update-123” gibi dinamik isimler üretilebilir

Bu sayede broadcast yaparken bile hedef daraltılabilir.


Diğer Event Türleri (Hızlı Bakış)

Bazı event’ler daha özel ama oldukça kullanışlı.

Conditional Event

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.


Terminate Event

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”


Event-Based Gateway

Birden fazla event’i aynı anda bekler.

İlk gerçekleşen kazanır.

Bunu şöyle hayal edebilirsin:

  • Ya mesaj gelir
  • Ya süre dolar
  • Ya sinyal gelir

Hangisi önce olursa süreç oradan devam eder.


Özet

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.


Kaynakça:

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir