BPMN Subprocess Türleri: Karmaşayı Nasıl Yönetirsin?

Bu yazıda BPMN süreçlerinde kullanılan dört farklı subprocess (alt süreç) türünü gerçekten anlayacaksın. Sadece ne olduklarını değil, neden kullanıldıklarını, hangi problemi çözdüklerini ve gerçek hayatta nasıl işine yarayacaklarını net şekilde kavrayacaksın. Okumayı bitirdiğinde, bir süreci daha sade, daha esnek ve daha yönetilebilir hale nasıl getireceğini biliyor olacaksın.

Bu yazıda BPMN süreçlerinde kullanılan dört farklı subprocess (alt süreç) türünü gerçekten anlayacaksın. Sadece ne olduklarını değil, neden kullanıldıklarını, hangi problemi çözdüklerini ve gerçek hayatta nasıl işine yarayacaklarını net şekilde kavrayacaksın. Okumayı bitirdiğinde, bir süreci daha sade, daha esnek ve daha yönetilebilir hale nasıl getireceğini biliyor olacaksın.

Embedded Subprocess: Karmaşayı Saklama Sanatı

Önce en yaygın olanla başlayalım: Embedded Subprocess.

Aslında bu yapı, büyük ve karmaşık bir sürecin içindeki detayları saklamak için kullanılır. Yani süreç gerçekten değişmez, sadece daha okunabilir hale gelir.

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

Elinde uzun bir süreç var ve içinde “doküman işleme” gibi bir bölüm var. Bu bölüm kendi içinde birkaç adımdan oluşuyor. Ama bu detaylar ana akışı kalabalıklaştırıyor.

İşte burada embedded subprocess devreye giriyor. Bu adımları alıp tek bir kutunun içine koyuyorsun.

Yani şöyle düşün:

Ana süreçte “yemek hazırla” yazıyor ama içine girince “doğra, pişir, baharat ekle” gibi detayları görüyorsun.

Bu yapı sayesinde:

  • Ana süreç sadeleşir
  • Okuyan kişi gözünde kaybolmaz
  • Detaya ihtiyaç varsa içeri girer bakar
Scope (Kapsam) Mantığı — Kritik Nokta

Embedded subprocess sadece görsellik değil, aynı zamanda scope (kapsam) sağlar.

Bu ne demek?

İçindeki olaylar sadece kendi alanında etkili olur.

Örneğin:

İki kişi aynı dokümanı incelemek için görevlendirildi diyelim. İlk bitiren işi tamamlasın, diğeri otomatik iptal olsun.

Bu senaryoyu subprocess içinde şöyle çözebilirsin:

  • Paralel iki akış başlatırsın
  • Biri bitince “terminate event” ile diğerini öldürürsün

Bunu şöyle hayal edebilirsin:

İki yarışmacı var. Biri bitiş çizgisine ulaştığında, diğerinin yarışı otomatik iptal ediliyor.

Buradaki önemli detay:

Terminate event tüm süreci değil, sadece bulunduğu scope’u durdurur.


Call Activity: Tekrar Eden İşleri Merkezileştirme

Şimdi biraz daha ileri gidelim: Call Activity.

İlk bakışta embedded subprocess’e çok benzer. Ama aslında tamamen farklı bir amaca hizmet eder.

Embedded subprocess:

→ Aynı süreç içinde kalır

Call Activity:

→ Ayrı bir süreci çağırır

Yani burada artık bağımsız bir yapıdan bahsediyoruz.

Yani şöyle düşün:

Bir fonksiyon yazıyorsun ve bunu farklı yerlerden çağırıyorsun.

Ne zaman kullanılır?

Eğer aynı işlem birden fazla yerde tekrar ediyorsa, bu ciddi bir sinyaldir.

Örneğin:

  • Aynı “doküman işleme” adımı iki farklı yerde kullanılıyor

Bunu kopyala-yapıştır yapmak yerine:

→ Tek bir subprocess yaparsın

→ Her yerden çağırırsın

Bu sana şunları kazandırır:

  • Tek noktadan değişiklik
  • Daha az hata
  • Daha sürdürülebilir yapı
Versiyonlama ve Dinamizm

Call Activity’nin en güçlü tarafı burada ortaya çıkar.

Çağırdığın subprocess:

  • Belirli bir versiyon olabilir
  • En güncel versiyon olabilir
  • Hatta runtime’da seçilebilir

Bunu şöyle hayal edebilirsin:

Sipariş süreci var ve ülkeye göre farklı işliyor.

  • Almanya için ayrı süreç
  • Türkiye için ayrı süreç

Runtime’da ülkeye bakıp doğru subprocess’i çağırabilirsin.

Bu, özellikle büyük sistemlerde ciddi esneklik sağlar.

Veri Yönetimi (Input / Output)

Bir de veri meselesi var.

Call Activity:

  • İçeri veri gönderir (input)
  • Çıktı alır (output)

Ama burada dikkat:

Tüm çıktıyı geri almak risklidir. Çünkü mevcut veriyi ezebilirsin.

Bu yüzden:

→ Sadece ihtiyacın olan alanları geri al


Ad-hoc Subprocess: Belirsizliği Yönetmek

Şimdi işin ilginç kısmına geldik: Ad-hoc Subprocess.

BPMN normalde çok deterministik bir yapıdır.

Yani:

Her şey önceden tanımlıdır

Ne zaman ne olacağı bellidir

Ama gerçek hayat böyle değil.

İşte ad-hoc subprocess tam burada devreye girer.

Ne farkı var?
  • Başlangıç eventi yok
  • Bitiş eventi yok
  • Akış sırası yok

Yani işler:

  • Herhangi bir sırada yapılabilir
  • Bazıları hiç yapılmayabilir

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

Bir görev listesi var ama sırayla yapmak zorunda değilsin.

İstediğini yap, istediğini atla.

Bu yapı özellikle şu durumlar için idealdir:

  • İnsan kararına bağlı süreçler
  • Esnek workflow’lar
  • AI destekli karar sistemleri
AI ile Kullanımı

Burada olay daha da ilginçleşiyor.

Ad-hoc subprocess içinde bir AI ajanı düşün:

  • Duruma bakıyor
  • Hangi task çalışacak karar veriyor
  • Sonra tekrar değerlendiriyor

Bunu şöyle hayal edebilirsin:

Bir yönetici var ve sürekli “şimdi ne yapmalıyız?” diye karar veriyor.

Bu yapı klasik BPMN’in katı yapısını kırar ve sana esneklik kazandırır.


Event Subprocess: Süreci Her An Kontrol Etmek

Geldik en güçlü yapılardan birine: Event Subprocess.

Bu yapı, sürecin herhangi bir anında oluşabilecek olayları yakalamak için kullanılır.

Temel Mantık

Süreç çalışırken:

→ Event subprocess arka planda sürekli dinler

Bir olay gerçekleştiğinde:

→ Hemen devreye girer

Örnek: Acil Durdurma

Diyelim ki süreci aniden durdurman gerekiyor.

Normalde:

  • Her adıma kontrol eklemen gerekir

Ama event subprocess ile:

  • Tek noktadan dinlersin
  • Mesaj gelince tüm süreci durdurursun

Yani şöyle düşün:

Bir fabrikan var ve acil stop butonu var.

Nerede olursan ol, bastığında her şey durur.

Interrupting vs Non-interrupting

Event subprocess iki şekilde çalışabilir:

Interrupting:

→ Süreci keser

Non-interrupting:

→ Süreci kesmez, paralel çalışır

Örneğin:

  • Her saat başı uyarı gönder

Süreç devam eder ama:

→ Arka planda sürekli kontrol yapılır

Gelişmiş Senaryo: Global Güncelleme

Daha da ileri bir kullanım:

Bir müşteriye ait birden fazla süreç çalışıyor diyelim.

Yeni bilgi geldi:

→ Adres değişti

Event subprocess ile:

→ Tüm çalışan süreçlere sinyal gönderirsin

→ Hepsi verisini günceller

Bunu şöyle hayal edebilirsin:

Toplu bir duyuru yapıyorsun ve herkes aynı anda bilgiyi güncelliyor.


Özet

Subprocess kavramı aslında tek bir şey değil, farklı problemlere çözüm üreten dört ayrı araçtır. Embedded subprocess ile karmaşayı gizlersin ve süreci okunabilir hale getirirsin. Call activity ile tekrar eden işleri merkezileştirir ve sürdürülebilirliği artırırsın. Ad-hoc subprocess ile belirsiz ve insan kararına bağlı akışları modele dahil edersin. Event subprocess ise süreci dış dünyaya açar, anlık olaylara tepki vermeni sağlar ve sistemi çok daha dinamik hale getirir. Bu dört yapı birlikte kullanıldığında, BPMN sadece bir diyagram değil, gerçek dünyayı modelleyebilen güçlü bir sistem haline gelir.


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