Lewati ke konten

G01 — Exclusive Gateway (XOR)

KodeG01
Nama BPMNExclusive Gateway (XOR Gateway)
TierA (wajib dikuasai)
DiperkenalkanModul 2
SpesifikasiOMG BPMN 2.0.2 §13.3 TODO-VERIFY

G01 — Exclusive Gateway: belah ketupat dengan X di tengah, memisahkan dua jalur
Unduh .bpmn

Memuat diagram…

Belah ketupat (diamond) dengan tanda X di tengah. Perhatikan dua outgoing Sequence Flow berlabel “ya” dan “tidak” yang keluar dari gateway.

Cara membuat di demo.bpmn.io: Seret “Gateway” dari palet. Default adalah Exclusive Gateway. Atau ubah tipe gateway via context menu.


Exclusive Gateway menyatakan: “Dari semua outgoing Sequence Flow, tepat satu yang akan dilalui token — berdasarkan kondisi yang dievaluasi saat token tiba.”

“Exclusive” berarti jalur-jalur itu saling eksklusif: tidak bisa lebih dari satu dipilih sekaligus.

Dalam bahasa sehari-hari: ini adalah titik keputusan (decision point).


XOR Gateway memungkinkan proses merespons kondisi berbeda secara berbeda. Tanpa gateway, semua token harus mengikuti satu jalur yang sama — tidak ada cara menyatakan “jika A maka ini, jika B maka itu.”


XOR split (satu incoming, banyak outgoing):

  1. Token tiba di gateway.
  2. Kondisi pada setiap outgoing flow dievaluasi.
  3. Token bergerak melalui tepat satu outgoing flow yang kondisinya terpenuhi.
  4. Jika lebih dari satu kondisi terpenuhi: flow dengan kondisi pertama yang terpenuhi dipilih (urutan tergantung implementasi — hindari situasi ini).
  5. Jika tidak ada kondisi yang terpenuhi dan ada default flow: token mengikuti default flow.
  6. Jika tidak ada kondisi dan tidak ada default: error eksekusi.

XOR join (banyak incoming, satu outgoing):

  1. Token tiba dari salah satu incoming flow.
  2. Token langsung diteruskan ke outgoing flow.
  3. Gateway tidak menunggu token lain — setiap token yang tiba langsung lewat.

Ini penting: XOR join bukan “penghalang” (barrier). Jika dua token datang dari dua jalur berbeda, dua token akan keluar. Ini berbeda dari AND join (Modul 6) yang menunggu.


  • Ketika ada keputusan berdasarkan data yang sudah tersedia saat token tiba.
  • Ketika hasil proses bisa berbeda berdasarkan kondisi bisnis.
  • Untuk menggabungkan dua jalur yang sebelumnya dipisahkan oleh XOR split (XOR join).

Jangan gunakan XOR untuk menunggu hasil yang belum ada.

Contoh: setelah mengirim instruksi pembayaran, apakah pembayaran diterima atau tidak belum diketahui — datanya belum ada. Menggunakan XOR di sini menyatakan bahwa keputusan bisa dibuat sekarang, yang salah. Gunakan Event-Based Gateway (G04, Modul 5) untuk menunggu salah satu dari beberapa event.

Jangan gunakan sebagai AND gateway.

XOR hanya memilih satu jalur. Jika semua jalur harus diambil secara bersamaan, gunakan Parallel Gateway (G02, Modul 6).


XOR Gateway memisahkan jalur berdasarkan kondisi — token mengambil tepat satu jalur:

G01 — XOR Gateway: keputusan 'Data pesanan valid?' dengan jalur ya/tidak
Unduh .bpmn

Memuat diagram…


Model lengkap Kasus 2 dengan XOR Gateway, dua End Event, dan task spesifik:

Kasus 2 — XOR Gateway dalam proses pesanan nyata
Unduh .bpmn

Memuat diagram…


Ketika melihat belah ketupat dengan X:

  1. Baca labelnya — biasanya berupa pertanyaan.
  2. Baca label setiap outgoing flow — biasanya berupa jawaban atau kondisi.
  3. Ikuti jalur yang kondisinya terpenuhi.

“XOR join menunggu semua token”

Tidak. XOR join meneruskan token segera saat tiba — ia tidak menunggu. Jika dua token masuk dari dua jalur berbeda (misal: kesalahan dalam pemodelan), dua token akan keluar.

“Belah ketupat polos = XOR”

Dalam BPMN 2.0, belah ketupat tanpa marker juga merupakan Exclusive Gateway (tipe default). Namun, untuk keterbacaan, lebih baik selalu gunakan tanda X.


Task bercabang langsung tanpa gateway

Gejala: sebuah Task memiliki dua outgoing Sequence Flow.

Diagnosis semantik: dalam BPMN, Task dengan beberapa outgoing flow berperilaku seperti implicit AND split — token digandakan ke semua jalur. Ini bukan keputusan, ini pemisahan paralel yang tidak disengaja.

Perbaikan: tambahkan XOR Gateway setelah Task, pindahkan semua outgoing flow ke gateway.

XOR outgoing flow tanpa kondisi

Gejala: salah satu outgoing flow dari XOR tidak memiliki kondisi dan tidak ditandai sebagai default.

Diagnosis: BPMN membutuhkan kondisi atau penanda default agar mesin tahu kapan memilih jalur itu.

Perbaikan: tambahkan kondisi atau tandai sebagai default flow.


Tertukar denganPerbedaan kunci
Parallel Gateway / AND (G02)AND split mengambil semua jalur sekaligus; XOR hanya satu
Inclusive Gateway / OR (G03)OR split bisa mengambil satu atau lebih jalur; XOR hanya satu
Event-Based Gateway (G04)Event-Based menunggu event yang belum terjadi; XOR mengevaluasi data yang sudah ada

Ada keputusan berdasarkan data yang sudah ada → XOR Gateway
Semua jalur harus diambil bersamaan → AND Gateway (G02)
Satu atau lebih jalur bisa diambil → OR Gateway (G03)
Menunggu salah satu dari beberapa event → Event-Based Gateway (G04)

  1. Apakah data untuk membuat keputusan sudah tersedia saat token tiba di gateway?
  2. Apakah hanya satu jalur yang akan diambil, atau mungkin lebih dari satu?
  3. Apakah ini titik keputusan atau titik menunggu?

“Mengapa tidak bisa menggunakan XOR di titik di mana kita menunggu pembayaran?”

Ketika token tiba di titik menunggu pembayaran, data “apakah pembayaran sudah diterima” belum ada — proses sedang menunggu event di masa depan. XOR mengevaluasi kondisi berdasarkan data yang sudah ada; jika data belum ada, kondisi tidak bisa dievaluasi. Ini bukan masalah teknis — ini masalah semantik: kita menyatakan keputusan di titik di mana tidak ada keputusan yang bisa dibuat. Event-Based Gateway adalah solusinya: ia menyatakan “tunggu salah satu dari event ini terjadi.”


  • Setiap outgoing flow dari XOR split memiliki kondisi atau salah satunya ditandai sebagai default.
  • Kondisi-kondisi bersifat mutually exclusive (tidak ada dua kondisi yang bisa terpenuhi bersamaan) — atau ada mekanisme untuk menangani kasus itu.
  • Label gateway berupa pertanyaan yang bisa dijawab oleh kondisi pada outgoing flow.

Di Camunda 8, kondisi pada outgoing flow XOR ditulis dalam FEEL. Jika dua kondisi terpenuhi sekaligus, Camunda mengambil flow pertama dalam urutan definisi XML. Untuk menghindari ambiguitas, pastikan kondisi saling eksklusif atau gunakan default flow sebagai fallback.


Exclusive Gateway adalah titik keputusan yang memilih tepat satu dari beberapa jalur berdasarkan kondisi yang sudah dapat dievaluasi saat token tiba.