Lewati ke konten

A14 — Event Subprocess

KodeA14
Nama BPMNEvent Sub-Process
TierA (wajib dikuasai)
DiperkenalkanModul 9
SpesifikasiOMG BPMN 2.0.2 §10.3 TODO-VERIFY

A14 — Event Subprocess non-interrupting: kotak dengan border putus-putus, Start Event berisi Signal
Unduh .bpmn

Memuat diagram…

Dua varian visual:

  • Non-interrupting: kotak dengan border putus-putus. Proses utama tetap berjalan.
  • Interrupting: kotak dengan border solid tipis. Proses utama dihentikan.

Start Event di dalam Event Subprocess harus berupa event tertentu (bukan None) — bisa Message, Signal, Timer, Error, Escalation, dll.

Cara membuat di demo.bpmn.io: Klik kanan di dalam proses → “Event Sub-Process”. Ubah Start Event ke tipe yang sesuai. Centang/hapus centang “Interrupting” untuk mengubah perilaku.


Event Subprocess menyatakan: “Ada layanan tambahan yang dapat dipicu oleh event kapan saja selama proses berlangsung — tanpa memerlukan titik tunggu di alur utama.”

Berbeda dari Subprocess biasa, Event Subprocess tidak terhubung ke alur utama via Sequence Flow.


Menambahkan perilaku yang dapat dipicu oleh event kapan saja dalam scope proses, tanpa mengubah struktur alur utama. Cocok untuk layanan lintas-cutting seperti logging, notifikasi status, atau penanganan event global.


Event Subprocess berada dalam scope proses utama. Ketika event yang sesuai terjadi:

  • Non-interrupting: Event Subprocess dieksekusi paralel dengan proses utama. Proses utama tidak terpengaruh.
  • Interrupting: Proses utama dihentikan. Event Subprocess mengambil alih.

Setelah Event Subprocess selesai, token dalam Event Subprocess berakhir. Proses utama tidak menerima token dari Event Subprocess.

[PEDAGOGICAL SIMPLIFICATION] Non-interrupting Event Subprocess seperti “daemon process” yang berjalan di background — aktif setiap kali dipanggil tanpa mengganggu proses utama.


Non-interrupting untuk layanan yang:

  • Dapat dipanggil kapan saja tanpa mengganggu proses utama.
  • Berjalan paralel (status query, logging, notifikasi).
  • Tidak mengubah state proses utama.

Interrupting untuk event yang:

  • Mengharuskan proses utama berhenti dan beralih ke penanganan event tersebut.
  • Fundamental mengubah jalannya proses (misalnya: regulasi baru berlaku).

Jangan gunakan Event Subprocess jika event hanya bisa terjadi di satu titik tertentu dalam alur — gunakan Intermediate Catch Event di titik tersebut. Jangan gunakan Non-interrupting jika event harus menghentikan proses utama.


Dalam Modul 9:

  • Event Subprocess “Layanan Status Pesanan” (non-interrupting) dengan Signal Start Event.
  • Customer dapat mengirim signal “StatusPesananDiminta” kapan saja selama proses berlangsung.
  • Event Subprocess merespons dengan mengirim status → proses utama tidak terganggu.

Event Subprocess non-interrupting dengan Signal Start Event — berjalan paralel dengan proses utama
Unduh .bpmn

Memuat diagram…


  1. Temukan kotak yang tidak terhubung ke alur utama via Sequence Flow.
  2. Border putus-putus = non-interrupting; border solid tipis = interrupting.
  3. Start Event di dalam kotak menentukan event apa yang memicu subprocess ini.
  4. Event Subprocess berada dalam scope proses yang sama — tidak terlihat dari luar.

“Event Subprocess interrupting bisa dipakai untuk layanan yang tidak mengganggu.”

Interrupting menghentikan proses utama — menggunakannya untuk layanan status pesanan berarti proses utama berhenti setiap kali ada pertanyaan masuk. Gunakan non-interrupting untuk layanan yang harus berjalan paralel.


Anti-pattern: Intermediate Catch Event di tengah alur untuk layanan yang bisa dipanggil kapan saja.

Gejala: Ada Intermediate Message Catch Event di tengah alur utama untuk “permintaan status”. Proses hanya bisa merespons di titik itu.

Diagnosis: Proses menunggu permintaan status di satu titik tertentu — sebelum atau sesudah titik itu, permintaan tidak bisa diproses. Event Subprocess bisa dipicu kapan saja.


ElemenBedanya
Event Subprocess (A14)Dipicu kapan saja; tidak dalam alur utama
Intermediate Catch EventDi dalam alur utama; hanya aktif saat token ada di situ
Embedded Subprocess (A13)Dalam alur utama; dipanggil via Sequence Flow

  • Layanan yang bisa dipicu kapan saja paralel → Non-interrupting Event Subprocess.
  • Event yang mengharuskan proses berhenti dan beralih → Interrupting Event Subprocess.
  • Event yang hanya bisa terjadi di satu titik dalam alur → Intermediate Catch Event.

  • Dapatkah event ini terjadi kapan saja selama proses berlangsung? → Event Subprocess.
  • Harus proses utama berhenti ketika event ini terjadi? → Interrupting. Tidak? → Non-interrupting.
  • Event hanya mungkin di satu titik tertentu? → Intermediate Catch Event.

Dalam Modul 9, Event Subprocess non-interrupting dipilih karena permintaan status bisa datang kapan saja — sebelum pembayaran, setelah konfirmasi, selagi dikemas. Menggunakan Intermediate Catch Event di satu titik akan membatasi layanan hanya di titik itu, yang tidak sesuai requirement.


  • Start Event dalam Event Subprocess tidak boleh berupa None Start.
  • Event Subprocess tidak boleh memiliki incoming atau outgoing Sequence Flow dari/ke proses utama.
  • Non-interrupting Start Event harus ditandai dengan isInterrupting="false".

Di Camunda, Event Subprocess non-interrupting didukung. Signal Start Event memerlukan Signal definition yang terdefinisi di level Definitions. Perhatikan bahwa Signal bersifat broadcast — semua Event Subprocess yang mendengarkan signal yang sama akan dipicu.


Event Subprocess adalah subprocess yang dipicu oleh event kapan saja dalam scope proses — non-interrupting berjalan paralel tanpa mengganggu proses utama, interrupting menghentikan proses utama dan mengambil alih.