Lewati ke konten

G02 — Parallel Gateway (AND)

KodeG02
Nama BPMNParallel Gateway
TierA (wajib dikuasai)
DiperkenalkanModul 6
SpesifikasiOMG BPMN 2.0.2 §13.3 TODO-VERIFY

G02 — Parallel Gateway: belah ketupat dengan tanda + di dalam, digunakan sebagai AND split dan AND join
Unduh .bpmn

Memuat diagram…

Belah ketupat dengan tanda + (plus) di dalam. Tidak ada label kondisi di outgoing flow — semua jalur aktif.

Cara membuat di demo.bpmn.io: Klik Gateway → ubah tipe menjadi “Parallel Gateway” via context menu.


AND split (Parallel Gateway dengan banyak outgoing flow) menyatakan: “Token ini dibagi menjadi banyak token — satu per outgoing flow — dan semua berjalan bersamaan.”

AND join (Parallel Gateway dengan banyak incoming flow) menyatakan: “Saya menunggu di sini sampai semua token dari semua incoming flow tiba, lalu saya gabungkan menjadi satu token dan lanjutkan.”


Memodelkan pekerjaan yang harus atau bisa berjalan secara paralel, dan memastikan semua pekerjaan selesai sebelum proses berlanjut.


AND split:

  • Satu token masuk → satu token per outgoing flow keluar.
  • Semua outgoing flow aktif tanpa kondisi.
  • Tidak ada evaluasi — semua jalur selalu aktif.

AND join:

  • Menunggu sampai satu token tiba dari setiap incoming flow.
  • Ketika semua token tiba: satu token baru dikirim ke outgoing flow.
  • Ini adalah synchronization barrier.

Gunakan Parallel Gateway ketika:

  • Dua atau lebih aktivitas bisa atau harus berjalan bersamaan.
  • Semua aktivitas harus selesai sebelum proses berlanjut.
  • Tidak ada kondisi yang menentukan jalur mana yang aktif — semua selalu aktif.

Jangan gunakan Parallel Gateway ketika hanya satu jalur yang dipilih berdasarkan kondisi → XOR. Jangan gunakan Parallel Gateway ketika satu atau lebih jalur mungkin tidak aktif berdasarkan kondisi → Inclusive Gateway.


Dalam Modul 6, setelah konfirmasi pembayaran:

  • AND split memisahkan dua jalur: “Terbitkan invoice” (Tim CS) dan “Siapkan paket” (Tim Gudang).
  • Keduanya berjalan bersamaan.
  • AND join menunggu kedua jalur selesai sebelum mengirim konfirmasi ke customer.

AND split dan AND join dalam proses Merchant — dua jalur paralel
Unduh .bpmn

Memuat diagram…


  1. Temukan belah ketupat dengan tanda +.
  2. Hitung outgoing flow: jika banyak → ini adalah AND split.
  3. Hitung incoming flow: jika banyak → ini adalah AND join.
  4. AND split: semua outgoing flow aktif sekaligus.
  5. AND join: menunggu semua incoming flow selesai.

“AND split otomatis diikuti AND join — tidak perlu keduanya.”

Salah. AND split dan AND join adalah elemen terpisah yang harus dipasangkan secara eksplisit. Jika AND split tidak diikuti AND join, semua token berjalan bebas dan bisa menyebabkan task di hilir dieksekusi berkali-kali.


Anti-pattern #1: AND split tanpa AND join (hilir jalan dua kali).

Token dari AND split berjalan bebas. Ketika dua token mencapai task yang sama, task dieksekusi dua kali. Ini menyebabkan konfirmasi ganda, invoice ganda, atau anomali lainnya.

Anti-pattern #2: XOR join menggantikan AND join.

XOR join tidak menunggu — ia meneruskan setiap token yang tiba. Dua token dari AND split akan menghasilkan dua token di hilir XOR join, efeknya sama seperti tidak ada join.


ElemenBedanya
Exclusive Gateway / XOR (G01)Memilih satu jalur berdasarkan kondisi
Parallel Gateway / AND (G02)Aktifkan semua jalur sekaligus; tunggu semua selesai
Inclusive Gateway / OR (G03)Aktifkan satu atau lebih jalur berdasarkan kondisi

  • “Lakukan semua, lalu lanjutkan” → AND split + AND join.
  • “Lakukan salah satu” → XOR split.
  • “Lakukan yang relevan (bisa lebih dari satu), lalu lanjutkan” → OR split + OR join.

  • Apakah semua jalur harus aktif tanpa kondisi? → AND split.
  • Apakah proses harus menunggu semua jalur selesai? → AND join.
  • Apakah ada kemungkinan beberapa jalur tidak aktif? → Inclusive Gateway.

Mengapa AND join harus digunakan di Modul 6, bukan langsung melanjutkan ke task konfirmasi?

Jika tidak ada AND join, task “Kirim konfirmasi” akan menerima dua token (satu dari invoice, satu dari gudang) dan dieksekusi dua kali. Customer menerima dua konfirmasi. AND join adalah barrier yang memastikan hanya satu token yang melanjutkan — tepat satu konfirmasi dikirim.


  • AND split: semua outgoing flow tidak boleh memiliki kondisi (unconditional).
  • AND join: semua incoming flow harus dapat tiba — jika ada jalur yang tidak pernah mengirim token, AND join akan menunggu selamanya (deadlock).

Di Camunda, Parallel Gateway dieksekusi oleh execution engine. AND join menyimpan token yang sudah tiba dan menunggu yang belum. Jika ada incoming flow yang tidak pernah terpenuhi (karena proses lain dibatalkan), AND join perlu dikelola dengan Boundary Event atau Cancel.


Parallel Gateway (AND) membagi token ke semua jalur sekaligus saat split, dan menunggu semua token kembali saat join — memastikan semua pekerjaan paralel selesai sebelum proses berlanjut.