Lewati ke konten utama

Exclusive Gateway (XOR)

Exclusive Gateway adalah gateway yang paling sering digunakan dalam BPMN. Ia merepresentasikan titik keputusan di mana tepat satu jalur yang akan diambil dari beberapa kemungkinan — berdasarkan kondisi yang dievaluasi pada saat proses berjalan.

Simbol: Belah ketupat dengan tanda X di tengah, atau belah ketupat kosong (tanpa simbol)
Dibaca sebagai: "Salah satu dari..." / "Hanya jika..."
Nama lain: XOR Gateway, Data-Based Exclusive Gateway


Cara Kerja

Exclusive Split (Diverging / Percabangan)

Ketika proses mencapai Exclusive Split, engine mengevaluasi kondisi pada setiap jalur keluar secara berurutan. Jalur pertama yang kondisinya bernilai true adalah jalur yang diaktifkan. Jalur lain diabaikan.

[Setujui Kredit]
↗ (jika skor ≥ 700)
[Evaluasi Skor] ──◇─→ [Review Manual]
↘ (jika skor 500–699)
[Tolak Kredit]
(jika skor < 500) [default]

Prinsip "tepat satu": Meskipun beberapa kondisi secara teoritis bisa bernilai true sekaligus, Exclusive Gateway hanya mengambil jalur pertama yang true. Urutkan kondisi dari yang paling spesifik ke paling umum.

Exclusive Join (Converging / Penggabungan)

Ketika proses mencapai Exclusive Join, ia langsung melanjutkan begitu satu token tiba — tanpa menunggu jalur lain. Setiap token yang masuk menghasilkan satu token baru yang keluar.

[Jalur A: Disetujui] ──┐
◇──→ [Arsip Dokumen]
[Jalur B: Ditolak] ──┘

Baik dari jalur A maupun B, proses akan langsung melanjutkan ke "Arsip Dokumen" begitu salah satu selesai.


Kondisi (Condition Expression)

Setiap Sequence Flow keluar dari Exclusive Split harus memiliki kondisi, kecuali jalur default.

Format Kondisi

Kondisi ditulis sebagai ekspresi yang menghasilkan true atau false. Bergantung pada BPMS:

BPMSBahasa KondisiContoh
Camunda 7JUEL / FEEL${skorKredit >= 700}
Camunda 8FEEL= skorKredit >= 700
FlowableJUEL${status == 'DISETUJUI'}
ActivitiJUEL${jumlah > 10000000}

Contoh Kondisi yang Baik

Jalur "Disetujui Otomatis": ${skorKredit >= 700 && rasioDBR < 0.3}
Jalur "Review Manual": ${skorKredit >= 500 && skorKredit < 700}
Jalur "Ditolak": default

Default Flow

Selalu definisikan default flow. Default flow adalah jalur yang diambil jika tidak ada kondisi lain yang true. Ditandai dengan garis kecil miring (slash) di pangkal Sequence Flow.

Tanpa default flow, proses akan berhenti (stuck) jika tidak ada kondisi yang terpenuhi — ini adalah bug yang sulit dideteksi.


Aturan Penamaan Exclusive Gateway

Label Gateway

Format yang direkomendasikan: pertanyaan yang jawabannya menentukan jalur.

Baik ✅Kurang Baik ❌
Skor kredit memenuhi syarat?Gateway 1
Status verifikasi?Cek status
Nilai pengajuan melebihi batas?Exclusive Gateway
Dokumen lengkap?Kondisi

Label Sequence Flow Keluar

Setiap jalur keluar harus memiliki label yang merupakan jawaban dari pertanyaan gateway:

Gateway: "Dokumen lengkap?"
→ "Ya" → [Proses Pengajuan]
→ "Tidak" → [Minta Kelengkapan]
→ "Tidak dapat diverifikasi" (default) → [Eskalasi Manual]
Gateway: "Status persetujuan?"
→ "Disetujui" → [Proses Pencairan]
→ "Ditolak" → [Kirim Surat Penolakan]
→ "Perlu Revisi" → [Kembalikan ke Pemohon]

Kapan Menggunakan Exclusive Gateway

Gunakan Exclusive Gateway ketika:

✅ Ada dua atau lebih jalur yang mungkin, tapi hanya satu yang akan diambil
✅ Keputusan dibuat berdasarkan data/variabel yang tersedia di proses
✅ Kondisi bersifat mutually exclusive (tidak tumpang tindih)
✅ Menggabungkan jalur-jalur yang berasal dari Exclusive Split

Jangan gunakan ketika:

❌ Beberapa jalur bisa aktif sekaligus → pakai Inclusive Gateway
❌ Semua jalur harus aktif → pakai Parallel Gateway
❌ Keputusan bergantung pada event yang terjadi → pakai Event-Based Gateway
❌ Hanya ada satu jalur keluar → tidak perlu gateway


Kesalahan Paling Umum

Kesalahan 1: XOR Join setelah Parallel Split

❌ SALAH:
[Start] → [AND Split: ◇+] → [Task A]
→ [Task B]
[Task A] ──┐
◇X──→ [Task C] ← XOR Join tidak tepat di sini!
[Task B] ──┘

Jika Task A dan Task B berjalan paralel, maka ada dua token yang akan tiba di XOR Join. XOR Join tidak menunggu — ia akan langsung melanjutkan dua kali, sehingga "Task C" dieksekusi dua kali.

Solusi: Gunakan Parallel Join untuk menggabungkan jalur yang berasal dari Parallel Split.

✅ BENAR:
[Start] → [AND Split: ◇+] → [Task A]
→ [Task B]
[Task A] ──┐
◇+──→ [Task C] ← Parallel Join yang benar
[Task B] ──┘

Kesalahan 2: Kondisi yang Tumpang Tindih

❌ SALAH:
Gateway: "Nilai pinjaman?"
→ "Di atas 100 juta": ${nilaiPinjaman > 100000000}
→ "Di atas 50 juta": ${nilaiPinjaman > 50000000} ← Tumpang tindih!

Pinjaman Rp 150 juta memenuhi keduanya. Karena XOR mengambil jalur pertama yang true, "Di atas 50 juta" tidak pernah akan diambil jika "Di atas 100 juta" lebih dulu dievaluasi.

Solusi: Pastikan kondisi saling eksklusif:

✅ BENAR:
→ "Di atas 100 juta": ${nilaiPinjaman > 100000000}
→ "50–100 juta": ${nilaiPinjaman > 50000000 && nilaiPinjaman <= 100000000}
→ "Di bawah 50 juta": default

Kesalahan 3: Tidak Ada Default Flow

Jika kondisi berdasarkan data eksternal atau input pengguna, selalu ada kemungkinan tidak ada kondisi yang true. Tanpa default, proses akan dead end.

Kesalahan 4: Gateway Tanpa Label

Gateway tanpa label memaksa pembaca menebak logika keputusan. Selalu beri label berupa pertanyaan yang jelas.


Perbedaan Gateway Kosong vs Gateway X

Kedua simbol berikut adalah Exclusive Gateway yang sama secara semantik:

SimbolKeterangan
Belah ketupat kosong ◇Exclusive Gateway (notasi ringkas)
Belah ketupat dengan X ◇XExclusive Gateway (notasi eksplisit)

Beberapa tool (Camunda, Signavio) menggunakan tanda X secara default. Tool lain menggunakan diamond kosong. Keduanya valid menurut standar BPMN 2.0.

Rekomendasi: Pilih satu gaya dan konsisten dalam satu diagram/organisasi.


Contoh Lengkap: Proses Persetujuan Pinjaman

[Start: Terima Permohonan]

[Service Task: Hitung Skor Kredit]

◇ "Kategori skor?"
├─ "Prime (≥700)" → [Service Task: Approve Otomatis] → [End: Disetujui]
├─ "Standard (500–699)" → [User Task: Review Analis]
│ ↓
│ ◇ "Keputusan analis?"
│ ├─ "Setuju" → [End: Disetujui]
│ └─ "Tolak" → [End: Ditolak]
└─ "Subprime (<500)" [default] → [Send Task: Kirim Surat Penolakan]

[End: Ditolak]

Selanjutnya: Inclusive Gateway →