Lewati ke konten utama

Gateway

Gateway mengontrol bagaimana alur proses bercabang dan bergabung kembali. Gateway adalah "persimpangan jalan" dalam sebuah proses — ia menentukan jalur mana yang diambil dan bagaimana jalur-jalur itu bertemu kembali.

Bentuk: Belah ketupat (diamond)


Konsep Penting: Diverging vs. Converging

Setiap Gateway bisa berperan dalam dua arah:

PeranNamaArtinya
Membagi alurDiverging (Split)Satu alur masuk → beberapa alur keluar
Menggabungkan alurConverging (Join)Beberapa alur masuk → satu alur keluar

Aturan penting: Gateway yang digunakan untuk membagi harus menggunakan jenis yang sama untuk menggabungkan kembali. Jangan campurkan jenis gateway yang berbeda untuk split dan join dari alur yang sama — ini adalah sumber bug proses yang paling umum.


Exclusive Gateway (XOR)

Simbol: Belah ketupat dengan tanda X di tengah (atau kosong tanpa simbol)
Dibaca sebagai: "Salah satu dari..."

Exclusive Split (Diverging)

Hanya satu jalur keluar yang diaktifkan, berdasarkan kondisi yang dievaluasi.

Cara kerja:

  • Setiap jalur keluar memiliki kondisi (disebut condition expression)
  • Kondisi dievaluasi secara berurutan
  • Jalur pertama yang kondisinya terpenuhi adalah jalur yang diambil
  • Biasanya ada satu jalur default jika tidak ada kondisi yang terpenuhi

Analoginya: Persimpangan jalan dengan rambu "Belok kiri jika pergi ke kantor, belok kanan jika pergi ke rumah" — Anda hanya memilih satu.

Contoh:
"Gateway: Status Pengajuan?"

  • → "Lengkap" → Task "Proses Pengajuan"
  • → "Tidak Lengkap" → Task "Minta Kelengkapan Dokumen"
  • → [Default] → Task "Catat sebagai Error"

Exclusive Join (Converging)

Menunggu satu alur masuk yang tiba, lalu langsung melanjutkan. Tidak menunggu alur lain.

Contoh:
Dua jalur (disetujui / direvisi) keduanya menuju ke satu Exclusive Join sebelum Task "Arsip Dokumen". Whichever jalur yang selesai, langsung melanjutkan ke pengarsipan.

Kesalahan umum:
Menggunakan Exclusive Join untuk menggabungkan jalur Parallel Split — ini menyebabkan proses berjalan dua kali (sekali untuk setiap jalur yang masuk).


Inclusive Gateway (OR)

Simbol: Belah ketupat dengan lingkaran di tengah
Dibaca sebagai: "Satu atau lebih dari..."

Inclusive Split (Diverging)

Satu atau lebih jalur keluar bisa diaktifkan secara bersamaan, berdasarkan kondisi.

Perbedaan dengan Exclusive:

  • Exclusive (XOR): tepat satu jalur
  • Inclusive (OR): bisa satu, bisa beberapa, bisa semua jalur

Contoh:
"Gateway: Jenis Verifikasi yang Diperlukan?"

  • → [Jika pinjaman > Rp 500 juta] → "Verifikasi Aset"
  • → [Jika pemohon baru] → "Verifikasi Identitas"
  • → [Selalu] → "Verifikasi Pekerjaan"

Pemohon baru dengan pinjaman > 500 juta akan melalui ketiga jalur secara paralel. Pemohon lama dengan pinjaman kecil hanya melalui satu jalur.

Inclusive Join (Converging)

Menunggu semua jalur yang aktif selesai, kemudian melanjutkan.

Ini yang membuat Inclusive Gateway kompleks: Join-nya "tahu" jalur mana saja yang diaktifkan oleh Split-nya, dan hanya menunggu jalur-jalur tersebut.

Kesalahan umum:
Menggunakan Inclusive Join tanpa Inclusive Split yang berpasangan. Engine BPMS tidak bisa mengetahui jalur mana yang harus ditunggu jika tidak ada split yang sesuai.


Parallel Gateway (AND)

Simbol: Belah ketupat dengan tanda + di tengah
Dibaca sebagai: "Semua..."

Parallel Split (Diverging)

Semua jalur keluar diaktifkan secara bersamaan — tidak ada kondisi, tidak ada pilihan.

Analoginya: Manajer yang mengirim email ke tiga tim sekaligus — ketiganya menerima pesan dan mulai bekerja bersamaan.

Contoh:
"Proses Onboarding Karyawan Baru" setelah offer diterima, tiga jalur berjalan paralel:

  1. IT mempersiapkan laptop dan akun
  2. HRD menyiapkan kontrak dan administrasi
  3. Manajer menyiapkan rencana orientasi

Parallel Join (Converging)

Menunggu semua jalur masuk selesai sebelum melanjutkan.

Ini adalah gateway yang paling "aman": ia akan selalu menunggu semua jalur, tidak peduli berapa lama.

Contoh (melanjutkan dari atas):
Setelah ketiga tim selesai (IT, HRD, Manajer), Parallel Join menggabungkan alur dan melanjutkan ke Task "Sambut Karyawan Baru".

Kesalahan umum:

  • Deadlock: jika jalur yang menuju Parallel Join tidak bisa selesai (misalnya karena ada kondisi yang mencegah aktivitas sebelumnya berjalan), proses akan terhenti selamanya
  • Lupa pasang join: setelah Parallel Split, selalu pastikan ada Parallel Join yang berpasangan

Event-Based Gateway

Simbol: Belah ketupat dengan lingkaran berisi bintang segi enam
Dibaca sebagai: "Tergantung event mana yang terjadi lebih dulu..."

Cara Kerja

Event-Based Gateway berbeda dari gateway lain — ia tidak mengevaluasi kondisi data, melainkan menunggu event mana yang terjadi lebih dahulu.

Setelah gateway ini, setiap jalur keluar harus diawali oleh sebuah Event (bukan Task atau Gateway).

Analoginya: Menunggu di persimpangan dan akan bergerak ke arah mana pun berdasarkan "berita" mana yang datang lebih dulu.

Contoh:
"Proses Menunggu Konfirmasi Pembayaran":

[Event-Based Gateway]
→ ◎ Timer (24 jam) → [Kirim Pengingat]
→ ✉ Receive "Konfirmasi Pembayaran" → [Proses Pesanan]
→ ✉ Receive "Pembatalan" → [Batalkan Pesanan]

Proses akan mengambil jalur sesuai event mana yang pertama kali terjadi. Jika pembayaran dikonfirmasi sebelum 24 jam, jalur konfirmasi yang aktif. Jika 24 jam berlalu tanpa konfirmasi, jalur timer yang aktif.

Event yang valid setelah Event-Based Gateway:

  • Message Catching Event
  • Timer Catching Event
  • Signal Catching Event
  • Conditional Catching Event
  • Receive Task

Kesalahan umum: Menempatkan Task atau kondisi data setelah Event-Based Gateway (hanya Event yang valid).


Complex Gateway

Simbol: Belah ketupat dengan tanda * (asterisk) di tengah
Dibaca sebagai: "Kondisi yang didefinisikan secara custom..."

Complex Gateway digunakan untuk kondisi percabangan atau penggabungan yang tidak bisa diekspresikan dengan gateway lain.

Kapan digunakan:
Sangat jarang. Jika Anda perlu Complex Gateway, pertimbangkan dulu apakah:

  • Desain proses bisa disederhanakan
  • Kombinasi gateway lain bisa mencapai tujuan yang sama

Contoh:
"Gateway: Minimal 3 dari 5 persetujuan anggota komite telah diterima" — ini tidak bisa direpresentasikan oleh XOR, OR, atau AND biasa.


Perbandingan Antar Gateway

AspekExclusive (XOR)Inclusive (OR)Parallel (AND)Event-Based
Berapa jalur yang aktif?Tepat 11 atau lebihSemua1 (tergantung event)
BerdasarkanKondisi dataKondisi dataTidak ada kondisiEvent yang terjadi
Join menunggu1 jalurSemua jalur aktifSemua jalur1 event
KompleksitasRendahSedangRendahSedang
Frekuensi⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

Panduan Memilih Gateway

Gunakan pertanyaan berikut:

Apakah alur ditentukan oleh event yang terjadi?
→ Ya → Event-Based Gateway
→ Tidak ↓

Berapa jalur yang bisa aktif sekaligus?
→ Tepat satu → Exclusive Gateway (XOR)
→ Semua → Parallel Gateway (AND)
→ Satu atau lebih (tergantung kondisi) → Inclusive Gateway (OR)

Aturan Penting tentang Gateway

  1. Selalu pasangkan jenis yang sama: Parallel Split → Parallel Join. Jangan campurkan.
  2. Beri label kondisi: Setiap jalur keluar dari Exclusive/Inclusive Gateway harus memiliki label kondisi yang jelas.
  3. Selalu ada jalur default: Pada Exclusive Gateway, tandai satu jalur sebagai default (garis dengan tanda slash) untuk menghindari dead end.
  4. Hindari gateway yang tidak perlu: Jika hanya ada satu jalur keluar, tidak perlu gateway.

Selanjutnya: Pool dan Lane →