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:
| Gateway | Incoming | Outgoing | Kondisi pada Outgoing |
|---|---|---|---|
| Exclusive (XOR) — Split | 1 | 2+ | Wajib ada kondisi (kecuali default) |
| Exclusive (XOR) — Join | 2+ | 1 | Tidak ada |
| Inclusive (OR) — Split | 1 | 2+ | Wajib ada kondisi (kecuali default) |
| Inclusive (OR) — Join | 2+ | 1 | Tidak ada |
| Parallel (AND) — Split | 1 | 2+ | Tidak boleh ada kondisi |
| Parallel (AND) — Join | 2+ | 1 | Tidak ada |
| Event-Based — Split | 1 | 2+ | Tidak boleh ada kondisi |
| Complex — Split | 1 | 2+ | Logika custom (activation condition) |
| Complex — Join | 2+ | 1 | Logika 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] + ?
| Konteks | Label Gateway |
|---|---|
| Keputusan persetujuan | Persetujuan diberikan? |
| Status dokumen | Dokumen lengkap? |
| Hasil verifikasi | Status verifikasi? |
| Nilai ambang batas | Nilai melebihi batas? |
| Pilihan pengguna | Metode pembayaran? |
| Kondisi bisnis | Nasabah 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:
| Posisi | Label 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 vendor | Gateway |
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 Buruk | Masalah | Pengganti |
|---|---|---|
"Flow 1", "Path A" | Tidak informatif | Jawaban dari pertanyaan gateway |
"True", "False" | Terlalu teknis | "Ya", "Tidak" |
"Else" | Ambigu | "Selain itu" atau nama kondisi spesifik |
"Lanjut" | Tidak membedakan jalur | Nama kondisi yang jelas |
| (kosong) | Pembaca tidak tahu kenapa jalur ini diambil | Selalu 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
- Hanya satu default per gateway — tidak bisa ada dua jalur default
- Default tidak memiliki kondisi — ia diambil jika semua kondisi lain gagal
- Wajib ada pada Exclusive dan Inclusive Gateway yang memiliki kondisi pada jalur lain
- 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
| Gateway | Label Gateway | Label Flow Keluar | Kondisi pada Flow |
|---|---|---|---|
| Exclusive | Pertanyaan | Jawaban | Wajib (kecuali default) |
| Inclusive | Pertanyaan | Kondisi yang terpenuhi | Wajib (kecuali default) |
| Parallel | Opsional (deskriptif) | Opsional (nama jalur) | Dilarang |
| Event-Based | Konteks menunggu | Nama event | Dilarang |
| Complex | Wajib (jelaskan logika) | Kondisi custom | Logika custom |
Kembali ke: Gambaran Umum Gateway →