XOR Gateway Has Condition
Memastikan setiap cabang Exclusive Gateway memiliki kondisi yang bermakna, kecuali default flow.
| Atribut | Nilai |
|---|---|
| Rule ID | xor-gateway-has-condition |
| Severity | Error — wajib diperbaiki agar BPMN lolos linter |
| Elemen yang dicek | Sequence flow yang keluar dari Exclusive Gateway (XOR) yang bercabang |
| Sumber | Plugin linter AlurKerja (bpmnlint-plugin-alurkerja) |
Rule XOR Gateway Has Condition memeriksa Exclusive Gateway (XOR) yang memiliki dua cabang atau lebih. Setiap sequence flow yang keluar harus memiliki condition expression, kecuali satu cabang yang ditandai sebagai Default Flow. Rule ini juga menolak kondisi placeholder seperti ${true} yang selalu bernilai benar.
Pesan di Studio
Temuan rule ini tampil di panel Problems BPMN Editor dengan pesan berikut:
Sequence flow from XOR gateway is missing condition expression — every non-default branch must have a condition
Ada cabang tanpa kondisi dan cabang itu bukan Default Flow.Sequence flow uses placeholder condition "${true}" — replace with a meaningful condition (e.g. ${status == "approved"})
Kondisi cabang hanya berisi${true}atau#{true}.
Kenapa ini masalah
Exclusive Gateway hanya memilih satu cabang berdasarkan kondisi. Cabang tanpa kondisi membuat engine tidak bisa menentukan jalur mana yang diambil, dan kondisi ${true} membuat cabang itu selalu terpilih sehingga cabang lain tidak pernah berjalan.
Cara memperbaiki
- Klik setiap sequence flow yang keluar dari gateway, lalu isi Condition di Properties Panel, misalnya
${status == "approved"}. - Untuk cabang "selain itu", tandai sebagai Default Flow — cabang default tidak memerlukan kondisi.
- Ganti kondisi
${true}dengan kondisi yang benar-benar memeriksa nilai variabel proses. - Beri nama setiap cabang yang memiliki kondisi (misalnya Disetujui / Ditolak) — sequence flow berkondisi tanpa nama akan dilaporkan oleh Label Required.
Lihat juga Variabel dan Operator untuk penulisan kondisi.
Rule terkait
- Conditional Flows (
conditional-flows) - Label Required (
label-required) - No Implicit Split (
no-implicit-split)
