Lewati ke konten

E06 — Error Event

KodeE06
Nama BPMNError Event
TierA (wajib dikuasai)
DiperkenalkanModul 8
SpesifikasiOMG BPMN 2.0.2 §10.4.4 TODO-VERIFY

E06 — Boundary Error Event (interrupting): lingkaran dengan simbol petir, border solid, menempel di tepi task
Unduh .bpmn

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”.


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.


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.


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.


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.


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.


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.

Boundary Error Event pada task pengiriman kurir — jalur error menuju Terminate End
Unduh .bpmn

Memuat diagram…


  1. Temukan lingkaran dengan simbol petir menempel di tepi task.
  2. Border solid → interrupting (task dihentikan ketika error terjadi).
  3. Ikuti Sequence Flow dari Boundary Error ke jalur penanganan error.
  4. Cari End Event di jalur error — None End atau Terminate End?

“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.


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.


ElemenBedanya
Boundary Error (E06)Exception selama task; always interrupting
Boundary Timer (E03)Batas waktu pada task; bisa non-interrupting
Error End EventMelempar error dari dalam Subprocess
XOR GatewayKeputusan berdasarkan kondisi yang sudah diketahui

  • Kondisi yang hanya bisa diketahui selama task → Boundary Error.
  • Kondisi yang bisa dievaluasi sebelum task → XOR Gateway.
  • Batas waktu yang harus ditegakkan → Boundary Timer.

  • 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.

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.


  • Boundary Error Event harus memiliki errorEventDefinition dengan errorRef yang valid.
  • Error definition harus memiliki errorCode yang cocok dengan yang dilempar task.
  • Boundary Error selalu interrupting — tidak ada varian non-interrupting.

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.


Boundary Error Event menangkap exception teknis yang terjadi selama eksekusi task, menginterrupt task, dan mengalihkan token ke jalur penanganan error.