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

Bu yazıda BPMN ile sadece tek bir süreci değil, birden fazla sürecin birbiriyle nasıl konuştuğunu öğreneceksin. Mesajlaşma, sinyal gönderme ve farklı katılımcıların (müşteri, kasiyer, barista gibi) aynı akış içinde nasıl modellenebileceğini net bir şekilde anlayacaksın. Yazının sonunda “end-to-end süreç” dediğimiz uçtan uca modelin mantığı kafanda oturmuş olacak.
Bu yazıda BPMN ile sadece tek bir süreci değil, birden fazla sürecin birbiriyle nasıl konuştuğunu öğreneceksin. Mesajlaşma, sinyal gönderme ve farklı katılımcıların (müşteri, kasiyer, barista gibi) aynı akış içinde nasıl modellenebileceğini net bir şekilde anlayacaksın. Yazının sonunda “end-to-end süreç” dediğimiz uçtan uca modelin mantığı kafanda oturmuş olacak.
Şimdi şöyle bir düşün: Bir kafeye gidiyorsun, sipariş veriyorsun, ödeme yapıyorsun ve siparişinin hazırlanmasını bekliyorsun.
Bu aslında tek bir süreç gibi görünür ama içinde birden fazla aktör vardır. BPMN’de bu süreci modellediğinde genelde ilk olarak tek bir “pool” (katılımcı) ile başlarsın.
Pool (Havuz)
Bir süreci sahiplenen kişi ya da sistemi temsil eder.
Yani şöyle düşün:
Bir havuz, “bu sürecin sahibi kim?” sorusunun cevabıdır. Örneğin kasiyer.
Bu ilk modelde kasiyer siparişi alır, ödemeyi yapar, baristaya iletir ve müşteriye teslim eder. Ama burada kritik bir şey var: Bu süreç aslında tek başına değil.
Sen de fark etmişsindir ki gerçek hayatta hiçbir süreç izole çalışmaz. BPMN’de bunu anlamanın en kolay yolu mesajlara bakmaktır.

Message Event (Mesaj Olayı)
Bir sürecin başka bir sürece veri göndermesi veya ondan veri almasıdır.
Bunu şöyle hayal edebilirsin:
WhatsApp’tan birine mesaj atıyorsun. Senin uygulaman başka bir uygulamayla konuşuyor.
Eğer modelde “mesaj gönder” veya “mesaj al” varsa, bu şu anlama gelir:
Bu sürecin dışında başka bir aktör daha var.
Bu sayede sistemdeki diğer katılımcıları keşfedersin:
Bu noktada her aktör için ayrı bir pool oluşturursun.
Örneğin:
Başlangıçta bu pool’ları “collapsed” (içi boş) bırakabilirsin.
Collapsed Pool (Kapalı Havuz)
İç detaylarını göstermediğin ama varlığını bildiğin süreçtir.
Yani şöyle düşün:
Bir kara kutu. İçinde ne olduğunu bilmiyorsun ama dışarıyla nasıl konuştuğunu biliyorsun.
Bu yaklaşım hızlı modelleme için çok güçlüdür.
Message Flow (Mesaj Akışı)
Farklı pool’lar arasındaki iletişimi gösterir.
Bunu şöyle hayal edebilirsin:
Farklı mikroservisler arasında API çağrıları.
Örneğin:
Burada önemli bir nokta:
Mesajlar her zaman farklı pool’lar arasında olur. Aynı pool içinde message flow olmaz.
Barista tarafında ilginç bir durum var.
Bir siparişte 5 kahve olabilir. Bu durumda barista süreci aynı anda 5 kez çalışır.
Multi-Instance (Çoklu Çalıştırma)
Bir görevin aynı anda birden fazla kez çalıştırılmasıdır.
Yani şöyle düşün:
Aynı anda 5 ayrı kahve hazırlanıyor ama tek bir siparişe ait.
Bu durumda:
Burada küçük ama kritik bir ayrım var.
Send Event (Mesaj Gönderme Olayı)
Tek seferlik, basit mesaj gönderimi.
Send Task (Mesaj Gönderme Görevi)
Daha kompleks, birden fazla mesaj gönderebilen yapı.
Aslında bu çok basit:
Örneğin multi-instance durumunda event yeterli olmaz, task kullanman gerekir.
Şimdi şöyle bir düşün: Sipariş verdin ve bekliyorsun.
Ama bu sırada:
İşte burada devreye girer:
Boundary Event (Sınır Olayı)
Bir görev devam ederken ortaya çıkan alternatif durumları yakalar.
Bunu şöyle hayal edebilirsin:
Bir işi yapıyorsun ama aynı anda başka bir şey seni bölüyor.
Örneğin:
Bu sayede süreç daha gerçekçi olur.
Gerçek hayatta iletişim her zaman anlık değildir.
Asynchronous Communication (Asenkron İletişim)
Mesaj gönderilir ama cevap hemen gelmez.
Yani şöyle düşün:
Birine mesaj attın ama “görüldü” bile gelmedi.
Kahve örneğinde:
Bu, BPMN’de zamanlayıcı (timer) ile modellenir.
Burada iş biraz daha ilginçleşiyor.
Signal Event (Sinyal Olayı)
Belirli bir kişiye değil, herkese yayınlanan mesajdır.
Bunu şöyle hayal edebilirsin:
Yangın alarmı. Kim varsa duyar.
Örneğin:
Bu sinyal:
Herkes sürecini sonlandırır.
Bazen işler planlandığı gibi gitmez.
Error Event (Hata Olayı)
Sürecin devam edemeyeceği kritik hatalar.
Escalation Event (Yükseltme Olayı)
Sorunun bir üst seviyeye iletilmesi.
Yani şöyle düşün:
Örneğin:
Artık tek bir süreç değil, birden fazla sürecin birleşimini görüyorsun:
Hepsi birlikte çalışır.
End-to-End Process (Uçtan Uca Süreç)
Bir işin baştan sona tüm aktörleriyle modellenmesidir.
Bunu şöyle hayal edebilirsin:
Bir e-ticaret siparişi:
Hepsi ayrı ama aynı hikâyenin parçası.
Aslında bu modelin anlattığı şey oldukça net: Gerçek hayattaki süreçler hiçbir zaman tek başına çalışmaz. BPMN’de bunu doğru modellemek için önce mesajları takip ederek diğer aktörleri keşfedersin, ardından her biri için ayrı havuzlar oluşturursun. Bu havuzlar arasındaki iletişimi message flow ile bağlarsın. Daha karmaşık durumlarda multi-instance, boundary event ve timer gibi yapılarla süreci gerçeğe yaklaştırırsın. Kritik durumlar için error, escalation ve signal event kullanarak sistemin nasıl tepki verdiğini tanımlarsın. Sonuçta ortaya çıkan şey, sadece bir akış değil, tüm sistemin birlikte nasıl çalıştığını gösteren uçtan uca bir model olur.
Bu yazı BPMN Message Events and Message Flows Explained videosundan ilham alınarak yazılmıştır.