Lewati ke konten utama

Boundary Event

Boundary Event adalah Intermediate Event yang menempel pada tepi (boundary) sebuah Activity — baik Task maupun Sub-Process. Ini adalah cara BPMN memodelkan pengecualian dan interupsi yang terjadi saat sebuah aktivitas sedang berjalan.

Bentuk: Lingkaran ganda yang menempel di pinggir Activity, dengan sebagian lingkaran berada di luar area Activity


Konsep Dasar: Mengapa Boundary Event?

Bayangkan sebuah Task "Menunggu Persetujuan Atasan". Pertanyaannya: apa yang terjadi jika atasan tidak merespons dalam 3 hari? Atau jika ada situasi darurat yang membatalkan seluruh permintaan?

Inilah yang dijawab oleh Boundary Event. Ia memberikan "pintu keluar alternatif" dari sebuah Activity ketika kondisi tertentu terjadi — tanpa harus mengubah alur normal.

┌──────────────────────────────┐
│ Task: Menunggu Persetujuan │
└──────────────────────────────┘
│ ◎ ← Boundary Timer Event (3 hari)
↓ │
[Disetujui] [Ingatkan Atasan]

Interrupting vs. Non-Interrupting

Ini adalah dimensi paling penting dalam Boundary Event:

Interrupting Boundary Event (Garis Solid)

Simbol: Lingkaran ganda dengan garis solid

Perilaku:

  1. Ketika trigger terpenuhi, Activity langsung dihentikan
  2. Proses berpindah ke jalur Boundary Event
  3. Activity tidak bisa dilanjutkan setelah ini

Analoginya: Alarm kebakaran di kantor — semua pekerjaan langsung dihentikan, semua orang harus keluar.

Kapan digunakan: Ketika kondisi yang terjadi membuat tidak mungkin atau tidak perlu melanjutkan Activity.


Non-Interrupting Boundary Event (Garis Putus-Putus)

Simbol: Lingkaran ganda dengan garis putus-putus

Perilaku:

  1. Ketika trigger terpenuhi, jalur Boundary Event dijalankan secara paralel
  2. Activity tetap berjalan seperti biasa
  3. Kedua jalur bisa berjalan bersamaan

Analoginya: Notifikasi di ponsel — Anda mendapat pengingat, tapi pekerjaan yang sedang dilakukan tidak berhenti.

Kapan digunakan: Ketika kondisi yang terjadi perlu ditangani, tapi tidak harus menghentikan aktivitas utama.


Jenis-Jenis Boundary Event

Message Boundary Event

Simbol: Amplop di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting ✅ | Non-Interrupting ✅

Artinya: Saat Activity berjalan, jika pesan tertentu diterima dari pihak luar, maka...

  • Interrupting: Activity dihentikan dan dialihkan ke jalur penanganan pesan
  • Non-Interrupting: Pesan ditangani di jalur terpisah, Activity tetap lanjut

Contoh Interrupting:
Task "Proses Penilaian Kredit" memiliki Message Boundary Event "Terima Pembatalan Pengajuan". Jika pemohon membatalkan pengajuannya di tengah proses penilaian, penilaian dihentikan dan dialihkan ke proses pembatalan.

Contoh Non-Interrupting:
Task "Tunggu Pembayaran" memiliki Non-Interrupting Message Boundary Event "Terima Pertanyaan Pelanggan". Jika pelanggan menanyakan status tagihan, pertanyaan ditangani secara paralel tanpa menghentikan proses tunggu pembayaran.


Timer Boundary Event

Simbol: Ikon jam di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting ✅ | Non-Interrupting ✅

Artinya: Jika Activity berjalan melebihi waktu yang ditentukan, trigger timer aktif.

Ini adalah Boundary Event yang paling sering digunakan dalam praktik.

Contoh Interrupting:
Task "Verifikasi Data Pelanggan" harus selesai dalam 1 hari kerja. Jika melewati batas waktu, Interrupting Timer Boundary Event menghentikan task dan mengalihkan ke proses eskalasi ke supervisor.

Contoh Non-Interrupting:
Task "Menunggu Konfirmasi Vendor" memiliki Non-Interrupting Timer Boundary Event setiap 2 jam. Setiap 2 jam, sistem mengirim pengingat otomatis ke vendor — sementara proses menunggu tetap aktif.

Tipe durasi yang umum digunakan:

  • PT24H — 24 jam
  • P3D — 3 hari
  • P1W — 1 minggu
  • R/P1D — berulang setiap hari (untuk non-interrupting)

Error Boundary Event

Simbol: Petir di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting ✅ | Non-Interrupting ❌ (selalu interrupting)

Artinya: Jika Activity atau Sub-Process melempar Error Event, Boundary Event ini menangkapnya dan mengalihkan ke jalur penanganan error.

Penting: Error Boundary Event selalu interrupting — tidak ada versi non-interrupting untuk Error karena error selalu dianggap kondisi serius.

Kapan digunakan:

  • Sub-Process yang mungkin melempar Error End Event
  • Memanggil sistem eksternal yang bisa gagal
  • Transaksi yang bisa berakhir dengan kondisi abnormal

Contoh:
Sub-Process "Proses Pembayaran via Payment Gateway" mungkin menghasilkan error "Koneksi Gagal" atau "Kartu Ditolak". Error Boundary Event menangkap kondisi ini dan mengarahkan ke jalur penanganan: coba metode pembayaran lain atau batalkan transaksi.

Best practice: Selalu pasangkan Error End Event di dalam Sub-Process dengan Error Boundary Event di luarnya. Tentukan nama error yang spesifik agar bisa membedakan jenis error yang berbeda.


Signal Boundary Event

Simbol: Segitiga di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting ✅ | Non-Interrupting ✅

Artinya: Jika sinyal tertentu diterima selama Activity berjalan, trigger aktif.

Contoh Non-Interrupting:
Task "Siapkan Laporan Bulanan" sedang berjalan. Jika ada sinyal "Data Sumber Diperbarui" (misalnya data transaksi akhir bulan baru masuk), Non-Interrupting Signal Boundary Event memicu pengambilan data terbaru secara paralel tanpa menghentikan pembuatan laporan.


Conditional Boundary Event

Simbol: Dokumen bergaris di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting ✅ | Non-Interrupting ✅

Artinya: Jika kondisi bisnis tertentu menjadi benar selama Activity berjalan.

Contoh Interrupting:
Task "Analisis Portofolio Investasi" sedang berjalan. Jika kondisi "Indeks Pasar Turun >10% dalam Sehari" menjadi benar, seluruh analisis dihentikan dan dialihkan ke prosedur keadaan darurat.


Escalation Boundary Event

Simbol: Tanda seru di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting ✅ | Non-Interrupting ✅

Artinya: Menangkap eskalasi yang dilempar dari dalam Sub-Process.

Perbedaan dengan Error Boundary Event:

  • Error: kondisi abnormal yang harus ditangani segera
  • Escalation: situasi yang membutuhkan perhatian level lebih tinggi, tapi proses bisa berlanjut

Contoh Non-Interrupting:
Sub-Process "Layanan Pelanggan Level 1" bisa melempar Escalation Event "Butuh Intervensi Supervisor". Non-Interrupting Escalation Boundary Event di proses induk menangkap ini dan memulai penugasan supervisor, sementara layanan level 1 tetap mendampingi pelanggan.


Cancel Boundary Event

Simbol: X di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting ✅ | Non-Interrupting ❌
Hanya valid pada: Transaction Sub-Process

Artinya: Menangkap Cancel End Event dari Transaction Sub-Process dan memicu kompensasi.

Contoh:
Transaction Sub-Process "Proses Transfer Bank" mungkin dibatalkan di tengah jalan. Cancel Boundary Event menangkap pembatalan ini dan memulai proses kompensasi (pengembalian dana, pembatalan reservasi, dll.).


Compensation Boundary Event

Simbol: Ikon mundur di lingkaran ganda pada tepi Activity
Tersedia sebagai: Interrupting (berbeda dari boundary lain — tidak memiliki Sequence Flow biasa)

Artinya: Menandai bahwa sebuah Activity memiliki prosedur kompensasi. Jika aktivitas ini perlu "diurungkan", alur kompensasi akan dijalankan.

Cara kerja khusus: Compensation Boundary Event tidak dihubungkan dengan Sequence Flow biasa, melainkan dengan Association ke Compensation Task yang mendefinisikan cara mengurungkan aktivitas tersebut.

Contoh:
Task "Reservasi Hotel" memiliki Compensation Boundary Event yang terhubung ke Task "Batalkan Reservasi Hotel". Ketika kompensasi diperlukan (misalnya karena perjalanan dibatalkan), Task pembatalan ini yang akan dijalankan.


Panduan Praktis: Kapan Pakai Boundary Event?

Tanyakan pertanyaan ini ketika memodelkan sebuah Task atau Sub-Process:

PertanyaanJika Ya → Gunakan
Apakah ada batas waktu yang harus ditegakkan?Timer Boundary Event
Apakah task bisa diinterupsi oleh pesan dari luar?Message Boundary Event
Apakah task bisa menghasilkan kondisi error?Error Boundary Event
Apakah ada kondisi bisnis yang bisa menginterupsi task?Conditional Boundary Event
Apakah task perlu bereaksi terhadap sinyal dari luar?Signal Boundary Event
Apakah task bisa meminta eskalasi ke level lebih tinggi?Escalation Boundary Event
Apakah task merupakan bagian dari transaksi yang bisa dibatalkan?Cancel/Compensation Boundary Event

Kesalahan Umum dengan Boundary Event

  1. Memodelkan penanganan error sebagai Gateway — Gateway digunakan untuk kondisi yang diketahui sebelumnya sebagai bagian dari alur normal. Error adalah kondisi tidak terduga; gunakan Error Boundary Event.

  2. Lupa pasang jalur dari Boundary Event — Setiap Boundary Event harus memiliki Sequence Flow keluar. Boundary Event tanpa kelanjutan adalah diagram yang tidak lengkap.

  3. Menggunakan Interrupting padahal seharusnya Non-Interrupting — Jika proses utama harus tetap berjalan, gunakan Non-Interrupting (garis putus-putus).

  4. Timer Boundary Event sebagai pengganti SLA — Timer Boundary Event bisa memodelkan SLA (Service Level Agreement), tapi ingat bahwa nilai timer harus dikonfigurasi di level sistem, bukan hanya di diagram.


Kembali ke: Gambaran Umum Event →