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

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.

Ö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:
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:
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.

Ş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.
Eğer aynı işlem birden fazla yerde tekrar ediyorsa, bu ciddi bir sinyaldir.
Örneğin:
Bunu kopyala-yapıştır yapmak yerine:
→ Tek bir subprocess yaparsın
→ Her yerden çağırırsın
Bu sana şunları kazandırır:
Call Activity’nin en güçlü tarafı burada ortaya çıkar.
Çağırdığın subprocess:
Bunu şöyle hayal edebilirsin:
Sipariş süreci var ve ülkeye göre farklı işliyor.
Runtime’da ülkeye bakıp doğru subprocess’i çağırabilirsin.
Bu, özellikle büyük sistemlerde ciddi esneklik sağlar.
Bir de veri meselesi var.
Call Activity:
Ama burada dikkat:
Tüm çıktıyı geri almak risklidir. Çünkü mevcut veriyi ezebilirsin.
Bu yüzden:
→ Sadece ihtiyacın olan alanları geri al

Ş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.
Yani işler:
Ş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:
Burada olay daha da ilginçleşiyor.
Ad-hoc subprocess içinde bir AI ajanı düşün:
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.

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.
Süreç çalışırken:
→ Event subprocess arka planda sürekli dinler
Bir olay gerçekleştiğinde:
→ Hemen devreye girer
Diyelim ki süreci aniden durdurman gerekiyor.
Normalde:
Ama event subprocess ile:
Yani şöyle düşün:
Bir fabrikan var ve acil stop butonu var.
Nerede olursan ol, bastığında her şey durur.
Event subprocess iki şekilde çalışabilir:
Interrupting:
→ Süreci keser
Non-interrupting:
→ Süreci kesmez, paralel çalışır
Örneğin:
Süreç devam eder ama:
→ Arka planda sürekli kontrol yapılır
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.
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.