Business Process/Linter Rules

Start Event Reachable

Memastikan setiap elemen terhubung dalam satu alur yang utuh dari Start Event sampai End Event.

AtributNilai
Rule IDstart-event-reachable
SeverityError — wajib diperbaiki agar BPMN lolos linter
Elemen yang dicekSeluruh elemen di dalam satu process (pool)
SumberPlugin linter AlurKerja (bpmnlint-plugin-alurkerja)

Rule Start Event Reachable menelusuri seluruh alur pada sebuah process, mulai dari setiap Start Event sampai setiap End Event. Rule ini memastikan tidak ada elemen yang terisolasi (tidak bisa dicapai dari Start Event), tidak ada jalur buntu (tidak pernah sampai ke End Event), dan tidak ada dua alur yang berdiri sendiri-sendiri di dalam satu pool.

Pesan di Studio

Temuan rule ini tampil di panel Problems BPMN Editor dengan pesan berikut:

  • Start event has no path leading to any end event
    Dari Start Event ini tidak ada jalur yang berakhir di End Event mana pun.
  • End event is not reachable from any start event
    End Event ini tidak bisa dicapai dari Start Event mana pun.
  • Element is not reachable from any start event (isolated)
    Elemen ini terputus: tidak ada jalur dari Start Event yang sampai ke elemen ini.
  • Element is on a path that never reaches an end event (dead-end)
    Elemen ini berada di jalur yang buntu: setelah elemen ini alur tidak pernah sampai ke End Event.
  • Process contains N disconnected flow paths — each independent flow should be in a separate pool
    Di dalam satu pool ada N alur yang tidak saling terhubung.

Kenapa ini masalah

Elemen yang tidak terjangkau dari Start Event tidak akan pernah dijalankan oleh engine. Jalur yang buntu membuat instance proses tertahan selamanya karena tidak pernah mencapai End Event. Dua alur terpisah di dalam satu pool juga membuat reading guide tidak bisa membacakan urutan langkah dengan benar.

Cara memperbaiki

  1. Isolated — sambungkan elemen tersebut ke alur dengan sequence flow dari langkah sebelumnya. Kalau elemen itu sisa desain yang tidak dipakai, hapus.
  2. Dead-end — tarik sequence flow dari elemen tersebut ke langkah berikutnya sampai alur berakhir di sebuah End Event.
  3. Start Event tanpa jalur ke End Event — pastikan dari Start Event tersebut ada setidaknya satu jalur yang sampai ke End Event.
  4. End Event tidak terjangkau — sambungkan End Event ke ujung salah satu jalur yang berasal dari Start Event, atau hapus jika tidak dipakai.
  5. Disconnected flow paths — kalau dua alur memang proses yang berbeda, pindahkan ke pool masing-masing dan hubungkan dengan message flow bila saling memicu. Kalau sebenarnya satu proses, sambungkan keduanya menjadi satu alur.
  6. Jalankan ulang linter dan pastikan temuan hilang.

Contoh

Diagram berikut diperiksa langsung dengan BPMN Linter yang sama seperti di Studio. Elemen yang bermasalah ditandai merah. Klik Unduh .bpmn untuk membuka contoh di BPMN Editor.

✗ Contoh salahUnduh .bpmn

Menjalankan linter…

Bila pengajuan ditolak, alur berputar di antara Revisi Pengajuan dan Periksa Revisi tanpa pernah kembali ke persetujuan. Kedua task itu buntu (dead-end) karena tidak ada jalan menuju End Event.

✓ Contoh benarUnduh .bpmn

Menjalankan linter…

Setelah direvisi, alur kembali ke Periksa Pengajuan, sehingga setiap jalur dapat mencapai End Event.

Catatan

Keterbatasan rule saat ini

Rule ini menghitung keterhubungan hanya dari sequence flow (dan boundary event ke task induknya). Beberapa elemen yang sah tetapi tidak memakai sequence flow dapat ikut dilaporkan sebagai isolated atau dead-end:

  • Data Store dan Data Object yang hanya terhubung lewat association (garis putus-putus).
  • Node Event Sub-Process, karena dipicu oleh event, bukan oleh sequence flow.
  • Alur yang dilanjutkan dengan pasangan Link Event (throw/catch).
  • Aktivitas kompensasi yang terhubung lewat association.

Kalau temuan muncul pada elemen jenis ini dan diagramnya sudah benar, catat sebagai temuan dan laporkan ke tim AlurKerja melalui Helpdesk.

Rule terkait