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:
- Ketika trigger terpenuhi, Activity langsung dihentikan
- Proses berpindah ke jalur Boundary Event
- 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:
- Ketika trigger terpenuhi, jalur Boundary Event dijalankan secara paralel
- Activity tetap berjalan seperti biasa
- 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 jamP3D— 3 hariP1W— 1 mingguR/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:
| Pertanyaan | Jika 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
-
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.
-
Lupa pasang jalur dari Boundary Event — Setiap Boundary Event harus memiliki Sequence Flow keluar. Boundary Event tanpa kelanjutan adalah diagram yang tidak lengkap.
-
Menggunakan Interrupting padahal seharusnya Non-Interrupting — Jika proses utama harus tetap berjalan, gunakan Non-Interrupting (garis putus-putus).
-
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 →