Lewati ke konten

A13 — Embedded Subprocess

KodeA13
Nama BPMNEmbedded Subprocess (Sub-Process)
TierA (wajib dikuasai)
DiperkenalkanModul 7
SpesifikasiOMG BPMN 2.0.2 §10.3 TODO-VERIFY

A13 — Embedded Subprocess: kotak dengan tanda + di tengah bawah (collapsed)
Unduh .bpmn

Memuat diagram…

Kotak dengan tanda + di bagian tengah bawah. Dalam kondisi collapsed (tersembunyi), isi proses tidak terlihat. Dalam kondisi expanded, isi proses terbuka di dalam kotak tersebut.

Cara membuat di demo.bpmn.io: Klik kanan → “Sub-Process (collapsed)” atau klik kanan lalu “Expand” untuk membuka isinya.


Embedded Subprocess menyatakan: “Di sini ada prosedur dengan logika internal tersendiri — detailnya tersembunyi di balik kotak ini agar diagram utama tetap terbaca.”

Subprocess disisipkan langsung dalam proses saat ini dan tidak dapat dipanggil dari proses lain.


Menyembunyikan detail internal sub-prosedur yang kompleks (percabangan, event, loop) agar alur utama tetap dapat dibaca. Bukan untuk menyembunyikan informasi tanpa alasan.


Token masuk ke Subprocess melalui Sequence Flow dan diteruskan ke Start Event di dalam Subprocess. Proses internal berjalan sampai mencapai End Event. Setelah End Event, token keluar dari Subprocess dan melanjutkan Sequence Flow utama.

[PEDAGOGICAL SIMPLIFICATION] Bayangkan Subprocess sebagai “kotak hitam” yang menerima token di pintu masuk dan mengembalikannya di pintu keluar setelah prosedur internal selesai.


Gunakan Embedded Subprocess ketika:

  • Sub-prosedur memiliki logika internal: percabangan, event, atau loop.
  • Menampilkan seluruh detail di view utama melampaui batas keterbacaan.
  • Sub-prosedur adalah prosedur tersendiri dengan SOP dan nama yang jelas.
  • Sub-prosedur tidak perlu dipanggil ulang dari proses lain.

Jangan gunakan Embedded Subprocess jika langkah-langkah di dalamnya hanya task linear sederhana tanpa percabangan atau logika internal. Overhead konseptual tanpa nilai tambah semantik. Jangan gunakan jika prosedur yang sama dipakai di beberapa proses — gunakan Call Activity.


Dalam Modul 7:

  • “Pemenuhan Pesanan” di Lane Tim Gudang dimodelkan sebagai Embedded Subprocess karena memiliki logika internal: Multi-instance Task memproses setiap item satu per satu, diikuti Task “Terbitkan Invoice”.
  • Dari view utama, diagram tetap bersih. Detail hanya terlihat ketika Subprocess dibuka.

Collapsed Subprocess 'Pemenuhan Pesanan' dengan marker multi-instance sequential
Unduh .bpmn

Memuat diagram…


  1. Temukan kotak dengan tanda + di bagian bawah.
  2. Label kotak menyebutkan nama prosedur internal.
  3. Jika ada marker multi-instance (≡ atau ⋮), Subprocess dieksekusi berulang kali.
  4. Klik tanda + (di editor) untuk membuka dan melihat isi proses internal.

“Subprocess dipakai untuk merapikan gambar.”

Merapikan gambar adalah efek samping, bukan tujuan. Subprocess harus digunakan karena sub-prosedur memiliki makna tersendiri — bukan karena diagram terlihat lebih rapi. Subprocess yang isinya hanya task linear adalah penyembunyian informasi tanpa nilai tambah.


Anti-pattern: Subprocess berisi task linear tanpa logika internal.

Gejala: Subprocess dibuka → Start Event → Task A → Task B → Task C → End Event. Tidak ada percabangan, event, atau loop.

Diagnosis: Semua task ini bisa ditampilkan langsung di view utama tanpa kehilangan informasi. Subprocess hanya menambah lapisan abstraksi yang tidak diperlukan.


ElemenBedanya
Embedded Subprocess (A13)Disisipkan di proses ini; tidak bisa dipakai ulang
Call Activity (A16)Memanggil proses terpisah; bisa dipakai ulang
Task (A01)Satu langkah atomik; tidak punya proses internal

  • Prosedur internal kompleks, hanya dipakai di proses ini → Embedded Subprocess.
  • Prosedur yang sama dipakai di beberapa proses → Call Activity.
  • Langkah sederhana dan linear → Task langsung, tanpa Subprocess.

  • Apakah sub-prosedur ini punya percabangan atau event internal? → Pertimbangkan Subprocess.
  • Apakah sub-prosedur ini dipanggil dari proses lain? → Call Activity, bukan Subprocess.
  • Apakah diagram utama masih terbaca jika detail ini ditampilkan? → Jika ya, tidak perlu Subprocess.

Subprocess (Modul 7) diperkenalkan karena model Modul 6 sudah padat — hubungan sebab itu harus dinyatakan tersurat. Bukan karena ada notasi baru yang ingin diperkenalkan, tapi karena kepadatan diagram sudah mencapai batas keterbacaan dan ada prosedur dengan SOP-nya sendiri.


  • Subprocess harus memiliki minimal satu Start Event dan satu End Event di dalamnya.
  • Sequence Flow tidak boleh keluar masuk Subprocess secara langsung (hanya melalui Start/End Event).
  • Elemen di dalam Subprocess hanya terlihat dalam scope Subprocess — tidak bisa direferensikan dari luar.

Di Camunda, Embedded Subprocess dieksekusi dalam satu proses instance yang sama. Variable dari proses utama accessible di dalam Subprocess. Jika Subprocess gagal, boundary event pada Subprocess dapat menangkap kondisi gagal tersebut.


Embedded Subprocess adalah kotak yang menyembunyikan prosedur internal kompleks agar alur utama tetap terbaca — digunakan ketika sub-prosedur memiliki logika tersendiri, bukan sekadar untuk merapikan tampilan.