BPMN Gateway’leri: Süreç Akışını Gerçekten Kontrol Etmeyi Öğren

Bir süreci modellemek sadece adımları çizmek değildir; asıl mesele o sürecin hangi durumda nasıl davrandığını net şekilde ifade edebilmektir. İşte burada BPMN Gateway’leri devreye girer. Bu yazıda, en kritik dört gateway türünü (ve uzak durman gereken bir tanesini) sade şekilde anlayacak, ne zaman hangisini kullanman gerektiğini netleştireceksin.

Bir süreci modellemek sadece adımları çizmek değildir; asıl mesele o sürecin hangi durumda nasıl davrandığını net şekilde ifade edebilmektir. İşte burada BPMN Gateway’leri devreye girer. Bu yazıda, en kritik dört gateway türünü (ve uzak durman gereken bir tanesini) sade şekilde anlayacak, ne zaman hangisini kullanman gerektiğini netleştireceksin.

Exclusive Gateway (XOR): “Ya bu ya şu” kararı

Şimdi şöyle bir düşün: Bir kullanıcıyla iletişime geçeceksin ama elinde sadece şu bilgi var: email var mı yok mu?

İşte bu tam olarak Exclusive Gateway (XOR)’ın işi.

Bu gateway, gelen veriye bakar ve tek bir yolu seçer.

  • Email varsa → email gönder
  • Yoksa → fax gönder
Yani şöyle düşün:

Bir yol ayrımındasın ve sadece tek bir yoldan ilerleyebilirsin. Aynı anda iki yola girme şansın yok.

Bu gateway genelde bir koşul (condition) ile çalışır. Çoğunlukla da Boolean (true/false) mantığıyla ilerler.


Default Flow (Varsayılan yol)

Ama hayat her zaman bu kadar net değil.

Diyelim ki kullanıcı ne email ne de fax vermiş. Ne olacak?

İşte burada default flow devreye girer.

Bunu şöyle hayal edebilirsin:

Hiçbir koşul sağlanmazsa, sistem “son çare” olarak bir yolu seçer.

Bu, özellikle Boolean olmayan durumlarda kritik bir güvenlik mekanizmasıdır.


XOR Merge (Birleştirme)

XOR sadece ayırmaz, aynı zamanda birleştirir de.

İki farklı yoldan gelen akışı tekrar tek bir akışta toplamak için yine XOR kullanılır.

Yani şöyle düşün:

İki farklı kapıdan giren insanlar, içeride tek bir koridorda birleşiyor.


Parallel Gateway: Aynı anda birden fazla iş

Şimdi şöyle bir düşün: Bir sipariş geldi.

  • Depoya haber vermen gerekiyor
  • Kargoyu ayarlaman gerekiyor

Bu iki iş birbirine bağlı değil. Aynı anda yapılabilir.

İşte burada Parallel Gateway kullanılır.

Bu gateway, tüm yolları aynı anda çalıştırır.

Yani şöyle düşün:

Aynı anda iki kişiye görev veriyorsun ve ikisi de paralel çalışıyor.


En kritik nokta: Merge davranışı

Parallel Gateway’in asıl gücü burada.

Bu gateway, ilerlemek için tüm paralel işlerin bitmesini bekler.

Bunu şöyle hayal edebilirsin:

İki arkadaşın var. Kahve içmeye gitmek için ikisinin de işinin bitmesini bekliyorsun.


Çok yapılan hata

Birçok kişi şunu zanneder:

“Kaç tane yol açıldıysa o kadar bekler”

Aslında olay bu değil.

Gateway, kaç tane giriş varsa o kadar token bekler.

Bu farkı anlamazsan:

  • Süreç kilitlenir (deadlock)
  • Ya da gereksiz tekrarlar oluşur

Güçlü bir pattern

Paralel akışta bazı işleri “beklenmeyen” hale getirebilirsin.

Örneğin:

  • Depo ve kargo → beklenir
  • Mail kontrolü → beklenmez
Yani şöyle düşün:

Bazı işler kritik, bazıları “boşlukta yapılabilir”.


Inclusive Gateway (OR): “Bir, birden fazla ya da hiçbiri”

Şimdi şöyle bir düşün: Kahve yapıyorsun.

  • Süt isteyebilirsin
  • Şeker isteyebilirsin
  • İkisini de isteyebilirsin
  • Hiçbirini istemeyebilirsin

İşte bu durum Inclusive Gateway (OR) ile modellenir.

Bu gateway:

  • Koşulları tek tek değerlendirir
  • Uygun olan birden fazla yolu aynı anda çalıştırabilir

Yani şöyle düşün:

Menüden istediğin kadar seçenek seçebilirsin. Tek seçim zorunluluğu yok.


Merge davranışı

Inclusive Gateway biraz “akıllıdır”.

  • Eğer 2 yol açıldıysa → 2’sini bekler
  • 1 yol açıldıysa → sadece onu bekler
Bunu şöyle hayal edebilirsin:

Garson sana kaç sipariş verdiysen, sadece onları bekler. Fazlasını değil.


Always Flow (Her zaman çalışan yol)

Bazen bir işlemin her koşulda çalışmasını istersin.

Örneğin:

  • Kahve her zaman yapılmalı
  • Ama süt/şeker opsiyonel

Bu durumda bir akışı “always true” yaparsın.

Yani şöyle düşün:

“Bu adım kesin yapılacak, diğerleri duruma bağlı.”


Event-Based Gateway: İlk gerçekleşene göre ilerle

Şimdi şöyle bir düşün:

Bir şeyin olmasını bekliyorsun:

  • 1 saat geçsin
  • Ya da bir mesaj gelsin

Hangisi önce olursa ona göre devam edeceksin.

İşte bu Event-Based Gateway.


Nasıl çalışır?
  • Gateway’e gelinir
  • Birden fazla event aynı anda “beklenir”
  • İlk gerçekleşen kazanır
  • Diğerleri iptal edilir
Yani şöyle düşün:

Kapı zilini ya da alarmı bekliyorsun. Hangisi önce çalarsa ona göre hareket ediyorsun.


Kritik öneri: Timer ekle

Eğer sadece event beklersen ve hiçbiri gerçekleşmezse:

➡️ Süreç sonsuza kadar bekler (deadlock)

Bu yüzden genelde bir timer event eklemek iyi bir pratiktir.


Merge neden XOR ile yapılır?

Event-based gateway sadece tek bir yol üretir.

Bu yüzden birleşim için en mantıklı gateway:

➡️ Exclusive Gateway (XOR)


Complex Gateway: Kullanma

Açık konuşalım: Bu gateway teoride var ama pratikte kullanmak neredeyse her zaman kötü bir fikir.

Yani şöyle düşün:

“Her şeyi yapabilen ama nasıl yaptığı belli olmayan” bir kara kutu.

  • Okunabilirliği düşürür
  • Karmaşıklığı gizler
  • Çoğu zaman gereksizdir

Bu yüzden:

➡️ Mümkünse uzak dur


Özet

Aslında tüm gateway’leri tek bir bakış açısıyla anlamak mümkün: Süreçte karar veriyorsun, paralel ilerliyorsun, ya da bir şeyi bekliyorsun. Exclusive Gateway net bir seçim yapmanı sağlar, Parallel Gateway işleri aynı anda yürütür, Inclusive Gateway daha esnek kombinasyonlar kurmana izin verir ve Event-Based Gateway tamamen zamana veya dış tetikleyicilere göre hareket eder. Bu yapıların en kritik kısmı ise sadece “nasıl ayrıldıkları” değil, “nasıl birleşip devam ettikleri”dir. Bu noktayı doğru anlamazsan süreçlerin ya kilitlenir ya da beklenmedik şekilde çoğalır.


Bu yazı BPMN Gateways 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