BPMN’de Boundary Event’ler: Süreci Durdurmak mı, Paralel Çalıştırmak mı?

Bu yazıda BPMN’de (Business Process Model and Notation) en kritik ama çoğu zaman karıştırılan kavramlardan biri olan boundary event’leri öğreneceksin. Sadece ne olduklarını değil, ne zaman süreci durdurduklarını, ne zaman paralel çalıştıklarını ve subprocess’lerle birleşince nasıl ciddi güç kazandıklarını net şekilde anlayacaksın.

Bu yazıda BPMN’de (Business Process Model and Notation) en kritik ama çoğu zaman karıştırılan kavramlardan biri olan boundary event’leri öğreneceksin. Sadece ne olduklarını değil, ne zaman süreci durdurduklarını, ne zaman paralel çalıştıklarını ve subprocess’lerle birleşince nasıl ciddi güç kazandıklarını net şekilde anlayacaksın.

Boundary Event Nedir?

Boundary event, bir görevin (task) veya subprocess’in “kenarına” bağlanan ve o görev çalışırken devreye girebilen olaylardır.

Yani şöyle düşün: Bir iş yapıyorsun ama arka planda “bir şey olursa” seni durdurabilecek ya da yeni bir iş başlatabilecek bir tetikleyici var.


Interrupting Boundary Event: “Her Şeyi Bırak ve Buna Geç”

Interrupting boundary event, tetiklendiğinde mevcut görevi keser ve farklı bir akışa yönlendirir.

Bu noktayı net anlamak önemli.

Yani şöyle düşün:

Bir iş yapıyorsun ama bir alarm çalıyor ve “şimdi bunu bırak, acil başka bir şey yap” deniyor.

Örnek Mantık
  • Bir görev çalışıyor (örneğin: müşteri bulma)
  • Aynı anda bir timer çalışıyor (örneğin: süre dolmak üzere)
  • Süre dolunca:
    • Mevcut iş durur
    • Yeni akış başlar

Buradaki kritik detay şu:

Bu event, görevle paralel çalışır ama tetiklenirse görevi iptal eder.


Farklı Boundary Event Türleri
Timer Event

Zaman bazlı tetiklenir.

Yani şöyle düşün:

“10 dakika içinde bitirmezsen bırak.”


Message Event

Dış bir sistemden veya süreçten gelen mesajla tetiklenir.

Yani şöyle düşün:

Sen iş yaparken biri sana mesaj atıyor:

“Bunu bırak, şu işe geç.”


Signal Event

Broadcast (genel çağrı) mantığıyla çalışır.

Yani şöyle düşün:

Birisi bağırıyor: “Yangın var!”

Ve herkes yaptığı işi bırakıyor.


Non-Interrupting Boundary Event: “Devam Et Ama Bunu da Yap”

Non-interrupting boundary event, en güçlü yapılardan biridir.

Bu event tetiklendiğinde:

  • Mevcut görev devam eder
  • Ek olarak yeni bir akış başlatılır

Yani görev kesilmez, yanına yeni bir iş eklenir.

Bunu şöyle hayal edebilirsin:

Çalışıyorsun ama biri sana diyor ki:

“Bunu bırakma ama şunu da hallet.”


Token Mantığı (Kritik Nokta)

Non-interrupting event yeni bir token oluşturur.

Yani şöyle düşün:

Aynı anda iki farklı sen var:

  • Biri ana işi yapıyor
  • Diğeri yeni işi yürütüyor

Bu güçlüyken aynı zamanda tehlikelidir.

Eğer kontrol etmezsen:

  • Sonsuz paralel işler oluşabilir
  • Süreç karmaşıklaşır
  • Hatta sistem kilitlenebilir

Subprocess ile Birleşince Güç Katlanır

Subprocess, bir grup görevi tek bir blok gibi ele almamızı sağlar.

Boundary event’i subprocess’e bağladığında:

  • İçindeki tüm görevleri kapsar

Yani şöyle düşün:

Tek tek her görevi kontrol etmek yerine,

“Bu işlerin hepsi için geçerli bir kural” koyuyorsun.

Örnek Mantık
  • Subprocess içinde birden fazla iş var
  • Boundary event dışarıdan bağlı
  • Event tetiklenirse:
    • İçeride ne olursa olsun müdahale eder

Bu, özellikle “deadline” veya “global kontrol” senaryolarında çok kritik.


Token Kaybetme Problemi

Non-interrupting event’lerde en sık yapılan hata:

Başlatılan paralel akışların kontrol edilmemesi.

Yani şöyle düşün:

Bir iş başlattın ama bitirmeyi unuttun.

Arka planda çalışmaya devam ediyor.

Bu yüzden:

  • Paralel akışlar ya bitirilmeli
  • Ya da terminate event ile sonlandırılmalı

Error Event: “Artık Devam Edemem”

Error event, ciddi bir hata durumudur ve her zaman interrupting çalışır.

Özelliği şu:

  • Hata yukarı doğru “bubble” eder (scope içinde yukarı çıkar)
  • İlk yakalayan boundary event tarafından işlenir

Yani şöyle düşün:

Bir hata oldu ve sistem diyor ki:

“Ben bunu burada çözemem, üst seviyeye bildiriyorum.”


Catch Mekanizması
  • Belirli bir hatayı yakalayabilir
  • Ya da tüm hataları yakalayabilir

Bu sayede merkezi hata yönetimi yapılabilir.


Escalation Event: “Sorun Var Ama Devam Edebiliriz”

Escalation, error’a göre daha “yumuşak” bir durumdur.

  • Süreci durdurmak zorunda değildir
  • Non-interrupting olabilir

Yani şöyle düşün:

“Problem var ama iş tamamen durmasın, paralelde çözelim.”


Compensation Event: “Geri Sar”

En ilginç event’lerden biridir.

Compensation event:

  • Geçmişte yapılmış işleri hedef alır
  • “Geri alma” (rollback) mantığıyla çalışır

Yani şöyle düşün:

Bir şey yaptın ama sonra vazgeçtin

→ Sistem diyor ki: “Yaptıklarını geri al”


Nasıl Çalışır?
  • Süreçte tamamlanmış görevleri tarar
  • Bu görevlerin compensation handler’larını tetikler

Önemli detay:

  • Sadece tamamlanmış işler etkilenir

Özet

Boundary event’ler BPMN’de sürecin dinamik davranmasını sağlayan yapılardır. Interrupting olanlar mevcut işi kesip yeni bir yola yönlendirirken, non-interrupting olanlar aynı anda birden fazla akışı mümkün kılar. Subprocess ile birlikte kullanıldıklarında tüm bir iş grubunu tek noktadan kontrol edebilirsin. Error event’ler kritik hataları yukarı taşırken, escalation event’ler süreci bozmadan müdahale etmeni sağlar. Compensation ise yapılan işleri geri alarak süreci “geri sarma” imkanı sunar. Tüm bu yapıların ortak noktası, doğru kullanıldığında süreçleri çok esnek ve güçlü hale getirmeleridir—ama kontrol edilmezlerse karmaşaya da sürükleyebilirler.


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