E06 — Error Event
1. Identitas
Section titled “1. Identitas”| Kode | E06 |
| Nama BPMN | Error Event |
| Tier | A (wajib dikuasai) |
| Diperkenalkan | Modul 8 |
| Spesifikasi | OMG BPMN 2.0.2 §10.4.4 TODO-VERIFY |
2. Gambar notasi
Section titled “2. Gambar notasi”Memuat diagram…
Simbol: lingkaran dengan simbol petir di dalamnya. Tiga varian:
- Boundary Error Event: menempel di tepi task. Border solid = interrupting (selalu).
- Error End Event: lingkaran tebal dengan petir.
- Error Intermediate Catch Event: bisa menangkap error yang dilempar dari Subprocess.
Cara membuat di demo.bpmn.io: Klik task → ikon “Append” → “Boundary Event” → ubah tipe ke “Error”.
3. Apa artinya
Section titled “3. Apa artinya”Boundary Error Event menyatakan: “Jika task ini melempar exception dengan kode error ini, hentikan task dan alihkan token ke jalur penanganan error.”
Error Event selalu terkait dengan kondisi yang terjadi selama eksekusi task — bukan sebelumnya.
4. Tujuan
Section titled “4. Tujuan”Menangkap exception teknis yang tidak dapat diketahui sebelum task dimulai, dan mengalihkan alur ke jalur penanganan yang tepat tanpa membiarkan proses berjalan seolah tidak terjadi apa-apa.
5. Semantik BPMN
Section titled “5. Semantik BPMN”Token tiba di task. Task mulai dieksekusi. Selama eksekusi, exception terjadi → Error dengan kode tertentu dilempar. Boundary Error Event mencocokkan kode error (errorCode). Jika cocok: task diinterrupt, token dialihkan ke outgoing Sequence Flow dari Boundary Error Event.
[PEDAGOGICAL SIMPLIFICATION] Bayangkan Boundary Error seperti “jaring pengaman” di bawah seorang akrobat — ia hanya aktif ketika ada yang jatuh, dan langsung mengarahkan ke prosedur penanganan.
6. Kapan digunakan
Section titled “6. Kapan digunakan”Gunakan Boundary Error Event ketika:
- Kondisi gagal hanya bisa diketahui selama eksekusi task (bukan sebelumnya).
- Kegagalan adalah exception yang tidak direncanakan di level desain bisnis.
- Task memiliki kemungkinan gagal secara teknis.
Gunakan XOR Gateway jika kondisi dapat dievaluasi sebelum task dimulai.
7. Kapan jangan digunakan
Section titled “7. Kapan jangan digunakan”Jangan gunakan Error Event untuk skenario bisnis yang direncanakan (misalnya “barang habis” — ini bisa dicek sebelum task mulai). Jangan gunakan Error untuk menggantikan XOR Gateway dalam keputusan bisnis normal.
8. Contoh penggunaan
Section titled “8. Contoh penggunaan”Dalam Modul 8:
- Task “Serahkan paket ke kurir” memiliki Boundary Error Event “Kurir menolak paket”.
- Kurir menolak paket selama task berlangsung — tidak bisa diprediksi sebelumnya.
- Ketika error terjadi: task diinterrupt → Task “Kirim pemberitahuan gagal” → Terminate End Event.
9. Diagram contoh
Section titled “9. Diagram contoh”Memuat diagram…
10. Cara membaca diagram
Section titled “10. Cara membaca diagram”- Temukan lingkaran dengan simbol petir menempel di tepi task.
- Border solid → interrupting (task dihentikan ketika error terjadi).
- Ikuti Sequence Flow dari Boundary Error ke jalur penanganan error.
- Cari End Event di jalur error — None End atau Terminate End?
11. Kesalahpahaman umum
Section titled “11. Kesalahpahaman umum”“Error dipakai untuk hasil bisnis normal.”
“Barang habis” adalah skenario bisnis yang direncanakan — bisa dicek di langkah verifikasi sebelum task dimulai. Error menyatakan bahwa kondisi ini adalah sesuatu yang “tidak direncanakan sistem”, yang tidak akurat untuk skenario bisnis normal.
12. Anti-pattern
Section titled “12. Anti-pattern”Anti-pattern: XOR Gateway untuk kondisi yang hanya bisa diketahui selama task berlangsung.
Gejala: XOR Gateway “kurir menerima?” sebelum task pengiriman.
Diagnosis: Pada saat token tiba di XOR, task belum dimulai — kurir belum melihat paket. Evaluasi kondisi tidak mungkin dilakukan. XOR menyatakan bahwa hasil sudah diketahui sebelum mencoba.
13. Notasi yang sering tertukar
Section titled “13. Notasi yang sering tertukar”| Elemen | Bedanya |
|---|---|
| Boundary Error (E06) | Exception selama task; always interrupting |
| Boundary Timer (E03) | Batas waktu pada task; bisa non-interrupting |
| Error End Event | Melempar error dari dalam Subprocess |
| XOR Gateway | Keputusan berdasarkan kondisi yang sudah diketahui |
14. Aturan pemilihan
Section titled “14. Aturan pemilihan”- Kondisi yang hanya bisa diketahui selama task → Boundary Error.
- Kondisi yang bisa dievaluasi sebelum task → XOR Gateway.
- Batas waktu yang harus ditegakkan → Boundary Timer.
15. Pertanyaan diagnostik
Section titled “15. Pertanyaan diagnostik”- Pada saat token tiba, apakah kita sudah bisa mengevaluasi kondisi gagal ini? → Jika tidak, gunakan Boundary Error.
- Apakah kondisi ini adalah exception teknis (tidak direncanakan)? → Boundary Error.
- Apakah kondisi ini adalah skenario bisnis yang direncanakan? → XOR Gateway.
16. Argumentasi pemodelan
Section titled “16. Argumentasi pemodelan”Dalam Modul 8, Boundary Error dipilih karena penolakan kurir terjadi selama task berlangsung. Kurir mengukur paket di lokasi — hasilnya tidak bisa diketahui sebelum task mulai. XOR sebelum task pengiriman akan menyatakan bahwa kita sudah tahu hasilnya sebelum mencoba, yang tidak sesuai kenyataan.
17. Validity check
Section titled “17. Validity check”- Boundary Error Event harus memiliki
errorEventDefinitiondenganerrorRefyang valid. - Error definition harus memiliki
errorCodeyang cocok dengan yang dilempar task. - Boundary Error selalu interrupting — tidak ada varian non-interrupting.
18. Catatan Camunda
Section titled “18. Catatan Camunda”Di Camunda, Error dilempar dari Service Task via Java exception dengan kode error yang didaftarkan. Boundary Error Event mencocokkan errorCode. Pastikan kode error di Boundary Event cocok dengan yang dilempar di kode Java/Expression Language.
19. Ringkasan satu kalimat
Section titled “19. Ringkasan satu kalimat”Boundary Error Event menangkap exception teknis yang terjadi selama eksekusi task, menginterrupt task, dan mengalihkan token ke jalur penanganan error.