Lewati ke konten utama

Aturan Penamaan & Flow Gateway

Diagram BPMN yang benar secara teknis belum tentu mudah dibaca. Penamaan gateway yang baik dan labeling flow yang konsisten adalah perbedaan antara diagram yang bisa dipahami dalam 5 menit dengan diagram yang butuh 30 menit penjelasan.

Halaman ini mengumpulkan semua aturan dan konvensi terkait penamaan gateway dan Sequence Flow yang mengikutinya.


Aturan Dasar: Incoming dan Outgoing Flow

Setiap jenis gateway memiliki aturan ketat tentang berapa Sequence Flow yang boleh masuk dan keluar:

GatewayIncomingOutgoingKondisi pada Outgoing
Exclusive (XOR) — Split12+Wajib ada kondisi (kecuali default)
Exclusive (XOR) — Join2+1Tidak ada
Inclusive (OR) — Split12+Wajib ada kondisi (kecuali default)
Inclusive (OR) — Join2+1Tidak ada
Parallel (AND) — Split12+Tidak boleh ada kondisi
Parallel (AND) — Join2+1Tidak ada
Event-Based — Split12+Tidak boleh ada kondisi
Complex — Split12+Logika custom (activation condition)
Complex — Join2+1Logika custom (activation condition)

:::tip Minimal 2 outgoing Gateway yang hanya memiliki satu Sequence Flow keluar tidak memiliki fungsi — hapus gateway tersebut dan hubungkan langsung elemen sebelum dan sesudahnya. :::


Penamaan Gateway: Format yang Direkomendasikan

Exclusive dan Inclusive Gateway (Split)

Gunakan format pertanyaan — karena gateway ini membutuhkan jawaban untuk menentukan jalur.

Template: [Subjek] + [kata kerja] + ?

KonteksLabel Gateway
Keputusan persetujuanPersetujuan diberikan?
Status dokumenDokumen lengkap?
Hasil verifikasiStatus verifikasi?
Nilai ambang batasNilai melebihi batas?
Pilihan penggunaMetode pembayaran?
Kondisi bisnisNasabah memenuhi syarat?

Hindari label yang:

  • Tidak mengandung pertanyaan: "Cek Status", "Kondisi A"
  • Terlalu umum: "Gateway 1", "Decision Point"
  • Mengulang nama task sebelumnya: "Hasil Verifikasi" (sama dengan task sebelumnya)
  • Menyebutkan jawaban di label gateway: "Jika disetujui maka..." (jawaban seharusnya di label flow)

Parallel Gateway

Umumnya tidak perlu label karena tidak ada keputusan. Jika perlu label untuk keterbacaan:

PosisiLabel Opsional
Split"Paralel:" + nama fase, atau kosong
Join"Sinkronisasi:" + nama fase, atau kosong

Contoh dengan label:

◇+ "Paralel: Persiapan Onboarding"
◇+ "Sinkronisasi: Semua Persiapan Selesai"

Contoh tanpa label (juga valid):

◇+ → [Task A]
→ [Task B]

Event-Based Gateway

Gunakan format yang menggambarkan kondisi menunggu:

Baik ✅Kurang Baik ❌
Menunggu respons vendorGateway
Respons atau timeout?Event
Kosong (jika konteks jelas)Pilih event

Complex Gateway

Wajib diberi label yang menjelaskan logika — karena logikanya tidak standar:

◈* "Minimal 2 dari 3 persetujuan"
◈* "Kuorum komite (≥3/5)"
◈* "Kondisi aktivasi khusus"

Labeling Sequence Flow Keluar

Exclusive Gateway: Jawaban dari Pertanyaan

Setiap jalur keluar harus diberi label berupa jawaban dari pertanyaan gateway.

Pola pasangan yang baik:

Gateway: "Dokumen lengkap?"
├─→ "Ya" ← singkat dan jelas
├─→ "Tidak"
└─→ "Tidak dapat diverifikasi" ← label default yang spesifik

Gateway: "Nilai pinjaman?"
├─→ "≤ Rp 100 juta" ← nilai spesifik, bukan "rendah"
├─→ "Rp 100–500 juta"
└─→ "> Rp 500 juta"

Gateway: "Status kredit?"
├─→ "Disetujui"
├─→ "Ditolak"
└─→ "Perlu dokumen tambahan"

Hindari label flow yang:

Label BurukMasalahPengganti
"Flow 1", "Path A"Tidak informatifJawaban dari pertanyaan gateway
"True", "False"Terlalu teknis"Ya", "Tidak"
"Else"Ambigu"Selain itu" atau nama kondisi spesifik
"Lanjut"Tidak membedakan jalurNama kondisi yang jelas
(kosong)Pembaca tidak tahu kenapa jalur ini diambilSelalu beri label

Inclusive Gateway: Kondisi yang Terpenuhi

Gateway: "Verifikasi apa yang diperlukan?"
├─→ "Pelanggan baru" kondisi: ${pelangganBaru}
├─→ "Kredit > Rp 500 juta" kondisi: ${nilaiKredit > 500000000}
└─→ "Selalu" (default) → Verifikasi dasar

Parallel Gateway: Nama Jalur (Deskriptif, Bukan Kondisi)

◇+ → "Jalur Legal" → [Review Legal]
→ "Jalur Keuangan" → [Review Keuangan]
→ "Jalur Teknis" → [Review Teknis]

Label di sini bukan kondisi — hanya nama jalur untuk keterbacaan. Jika tidak butuh label, kosongkan.

Event-Based Gateway: Nama Event yang Dinantikan

◈ → "Konfirmasi diterima" → ◎✉ Message Event
→ "Penolakan diterima" → ◎✉ Message Event
→ "Batas waktu 3 hari" → ◎⏱ Timer Event

Default Flow: Aturan dan Penandaan

Apa itu Default Flow?

Default Flow adalah jalur yang diambil ketika tidak ada kondisi lain yang bernilai true. Setiap Exclusive dan Inclusive Gateway yang memiliki kondisi harus memiliki Default Flow.

Cara Menandai Default Flow

Default Flow ditandai dengan garis miring kecil (slash) di pangkal Sequence Flow, tepat setelah gateway.

Di diagram: Tanda slash // atau \ kecil di awal panah
Di tool (Camunda Modeler): Klik kanan Sequence Flow → "Mark as Default"

Aturan Default Flow

  1. Hanya satu default per gateway — tidak bisa ada dua jalur default
  2. Default tidak memiliki kondisi — ia diambil jika semua kondisi lain gagal
  3. Wajib ada pada Exclusive dan Inclusive Gateway yang memiliki kondisi pada jalur lain
  4. Tidak berlaku pada Parallel Gateway (tidak ada kondisi) dan Event-Based Gateway

Contoh Default Flow yang Baik

Gateway: "Kategori risiko?"
├─→ "Rendah" kondisi: ${skor >= 700}
├─→ "Sedang" kondisi: ${skor >= 500 && skor < 700}
└─→ "Tinggi" DEFAULT ← diambil jika skor < 500 atau tidak terdefinisi

Konsekuensi Tidak Ada Default Flow

Jika tidak ada jalur default dan semua kondisi bernilai false:

  • Dalam BPMS: Proses stuck — tidak ada token yang bergerak, proses menggantung selamanya
  • Dalam dokumentasi: Diagram tidak lengkap — pembaca tidak tahu apa yang terjadi di luar kondisi yang terdefinisi

Aturan Tambahan yang Sering Dilupakan

1. Pasangkan Jenis yang Sama untuk Split dan Join

Aturan paling fundamental yang sering dilanggar:

✅ BENAR:
◇X Split → jalur A, B → ◇X Join

◇+ Split → jalur A, B → ◇+ Join

◎ Split → jalur A, B → ◎ Join

❌ SALAH:
◇+ Split → jalur A, B → ◇X Join ← Parallel split, Exclusive join
◎ Split → jalur A, B → ◇+ Join ← Inclusive split, Parallel join

Mengapa ini penting: Setiap jenis gateway memiliki semantik token yang berbeda. Mencampur jenis split dan join menghasilkan perilaku yang tidak terdefinisi — proses bisa berjalan dua kali, token bisa hilang, atau proses bisa stuck.

2. Tidak Ada Gateway dengan Satu Jalur Keluar

❌ TIDAK PERLU:
[Task A] → ◇ → [Task B]

(hanya satu jalur)

Gateway dengan satu jalur keluar tidak memiliki fungsi. Hapus dan hubungkan langsung.

3. Tidak Ada Gateway dengan Satu Jalur Masuk dan Satu Jalur Keluar

❌ TIDAK PERLU:
[Task A] → ◇ → [Task B]

Sama dengan di atas — gateway tidak diperlukan.

4. Kondisi Harus Mutually Exclusive pada Exclusive Gateway

Jika menggunakan Exclusive Gateway, pastikan kondisi-kondisi tidak tumpang tindih. Jika tumpang tindih, hasilnya tidak deterministik (bergantung urutan evaluasi):

❌ BERMASALAH:
Gateway: "Nilai?"
→ "Lebih dari 50" kondisi: ${nilai > 50}
→ "Lebih dari 100" kondisi: ${nilai > 100} ← Tumpang tindih!

(Nilai 150 memenuhi kedua kondisi — jalur mana yang diambil?)

✅ BENAR:
Gateway: "Nilai?"
→ "Di atas 100" kondisi: ${nilai > 100}
→ "Antara 50 dan 100" kondisi: ${nilai > 50 && nilai <= 100}
→ "50 atau kurang" DEFAULT

5. Sequence Flow dari Event-Based Gateway Tidak Boleh Punya Kondisi

Event-Based Gateway menentukan jalur berdasarkan event, bukan kondisi data. Menulis kondisi pada Sequence Flow-nya tidak akan dievaluasi dan menyesatkan.


Panduan Cepat: Checklist Penamaan Gateway

Gunakan checklist ini sebelum menganggap diagram selesai:

  • Setiap Exclusive/Inclusive Gateway memiliki label berbentuk pertanyaan?
  • Setiap Sequence Flow keluar dari Exclusive/Inclusive Gateway memiliki label?
  • Label Sequence Flow adalah jawaban dari pertanyaan gateway?
  • Ada satu dan hanya satu Default Flow pada setiap Exclusive/Inclusive Gateway?
  • Parallel Gateway tidak memiliki kondisi pada Sequence Flow keluarnya?
  • Setiap Exclusive Split berpasangan dengan Exclusive Join (bukan jenis lain)?
  • Setiap Parallel Split berpasangan dengan Parallel Join (bukan jenis lain)?
  • Setiap Inclusive Split berpasangan dengan Inclusive Join yang jelas?
  • Tidak ada gateway dengan hanya satu jalur keluar?
  • Kondisi pada Exclusive Gateway tidak tumpang tindih?
  • Complex Gateway dilengkapi Text Annotation yang menjelaskan logikanya?

Ringkasan Format Label per Jenis Gateway

GatewayLabel GatewayLabel Flow KeluarKondisi pada Flow
ExclusivePertanyaanJawabanWajib (kecuali default)
InclusivePertanyaanKondisi yang terpenuhiWajib (kecuali default)
ParallelOpsional (deskriptif)Opsional (nama jalur)Dilarang
Event-BasedKonteks menungguNama eventDilarang
ComplexWajib (jelaskan logika)Kondisi customLogika custom

Kembali ke: Gambaran Umum Gateway →