Lewati ke konten utama

Sub-Process vs. Call Activity

Perbandingan Sub-Process vs Call Activity

Ini adalah salah satu pertanyaan yang paling sering ditanyakan oleh praktisi BPMN:

"Kapan saya harus menggunakan Sub-Process, dan kapan Call Activity?"

Keduanya mengelompokkan sekumpulan aktivitas ke dalam satu unit yang bisa dikelola — tapi tujuan, perilaku, dan implikasinya sangat berbeda. Halaman ini membahas perbedaan secara mendalam dengan panduan keputusan yang praktis.


Perbandingan Langsung

AspekSub-ProcessCall Activity
Di mana definisinya?Di dalam proses indukDi luar, sebagai proses terpisah
Bisa dipanggil dari banyak proses?
Deployment terpisah?❌ (satu file dengan induk)✅ (file/deployment sendiri)
Berbagi variabel dengan induk?✅ Otomatis❌ Harus di-mapping eksplisit
Bisa versi sendiri?
OverheadSangat rendahLebih tinggi (child instance)
Cocok untukStruktur lokal, exception handlingReuse, modularisasi
MonitoringBagian dari instance indukInstance terpisah yang bisa dilacak

Kapan Memilih Sub-Process

1. Kelompok Aktivitas yang Hanya Ada di Satu Proses

Jika sekelompok aktivitas hanya relevan untuk satu proses dan tidak akan digunakan di tempat lain — gunakan Sub-Process.

  • Proses Induk (Pengajuan Kredit): Terima Berkas $\rightarrow$ Sub-Process: Verifikasi Berkas Kredit $\rightarrow$ Analisis.
  • Aktivitas di dalam Sub-Process:
    1. Cek Kelengkapan Berkas
    2. Legalisir Dokumen
    3. Input ke Sistem

"Verifikasi Berkas Kredit" adalah proses yang sangat spesifik untuk pengajuan kredit — tidak akan dipakai di proses lain.

2. Penanganan Exception Kolektif

Ketika Anda ingin satu Boundary Event melindungi beberapa aktivitas sekaligus:

  • Scope Sub-Process: Panggil API A $\rightarrow$ Panggil API B $\rightarrow$ Panggil API C.
  • Error Handling: Jika salah satu API di atas memicu error Boundary Event "Koneksi Gagal", alur dialihkan secara kolektif ke Aktifkan Mode Fallback.

Daripada pasang Error Boundary Event di tiga API Task secara terpisah — cukup satu di Sub-Process.

3. Menjaga Scope Variabel Tetap Bersih

Sub-Process bisa memiliki variabel lokal yang tidak terlihat dari proses induk. Berguna untuk menghindari "pencemaran" variabel proses.

  • Variabel Lokal (dalam Sub-Process): skorMentah, faktorPenyesuaian, skorSementara.
  • Variabel Global (diteruskan ke proses induk): skorFinal.

4. Proses yang Dideploy Bersama

Jika perubahan pada kelompok aktivitas ini selalu bersamaan dengan perubahan pada proses induk — Sub-Process adalah pilihan alami. Tidak ada overhead versioning terpisah.

5. Event Sub-Process

Ketika Anda butuh handler yang dipicu oleh event (bukan dari Sequence Flow), gunakan Event Sub-Process — ini tidak ada padanannya di Call Activity.

  • Pemicu: Message Start Event "Terima Pembatalan".
  • Aksi: Batalkan Semua Reservasi $\rightarrow$ Proses Refund.

Kapan Memilih Call Activity

1. Proses yang Digunakan di Banyak Tempat

Ini adalah alasan utama Call Activity ada. Jika sekelompok aktivitas sama akan muncul di lebih dari satu proses — buat sebagai proses global dan panggil via Call Activity.

  • Proses A (Pembukaan Rekening) $\rightarrow$ memanggil Proses KYC (Call Activity)
  • Proses B (Pengajuan Kredit) $\rightarrow$ memanggil Proses KYC (Call Activity)
  • Proses C (Upgrade Kartu Kredit) $\rightarrow$ memanggil Proses KYC (Call Activity)
  • Proses D (Pembaruan Data) $\rightarrow$ memanggil Proses KYC (Call Activity)

2. Tim yang Berbeda Mengelola Proses yang Berbeda

Jika tim Compliance mengelola proses KYC, dan tim Retail mengelola proses pembukaan rekening — mereka bisa bekerja secara independen jika KYC adalah Call Activity (proses terpisah yang bisa dideploy sendiri).

3. Proses yang Membutuhkan Versioning Sendiri

Regulasi OJK mengubah prosedur KYC — dengan Call Activity, tim Compliance bisa update dan deploy versi baru KYC tanpa harus menyentuh proses pembukaan rekening, pengajuan kredit, dll.

  • Awal: Proses Pembukaan Rekening v1.0 $\rightarrow$ memanggil Proses KYC v1.0
  • Setelah Perubahan Regulasi: Proses Pembukaan Rekening v1.0 $\rightarrow$ memanggil Proses KYC v2.0 (tanpa perlu melakukan deployment ulang pada proses Pembukaan Rekening induk).

4. Monitoring yang Lebih Granular

Call Activity menghasilkan child process instance — Anda bisa memantau proses KYC secara terpisah di dashboard BPMS, melihat SLA-nya, berapa yang gagal, berapa yang slow.

5. Proses yang Kompleks dan Berdiri Sendiri

Jika "sekelompok aktivitas" tersebut sebenarnya sudah sangat kompleks — punya sub-process sendiri, banyak gateway, lane yang berbeda — lebih baik ia menjadi proses mandiri yang dipanggil via Call Activity.


Diagram Keputusan

Kriteria / PertanyaanHasil "YA"Hasil "TIDAK"
Apakah kelompok aktivitas akan digunakan di lebih dari satu proses?Call ActivityLanjut ke pertanyaan berikutnya
Apakah tim berbeda yang mengelola masing-masing proses?Call ActivityLanjut ke pertanyaan berikutnya
Apakah membutuhkan monitoring atau versioning yang independen?Call ActivityLanjut ke pertanyaan berikutnya
Apakah dipicu oleh event (bukan sequence flow)?Event Sub-ProcessLanjut ke pertanyaan berikutnya
Apakah membutuhkan exception handling secara kolektif?Embedded Sub-ProcessLanjut ke pertanyaan berikutnya
Apakah hanya untuk pengorganisasian struktur / keterbacaan?Embedded Sub-Process (collapsed)Task biasa mungkin sudah cukup

Analogi yang Mudah Diingat

Sub-Process = Prosedur internal di dalam dokumen SOP yang sama

"Lihat Lampiran B: Prosedur Verifikasi Berkas" — masih bagian dari dokumen SOP yang sama, tidak bisa dipakai terpisah

Call Activity = Dokumen SOP terpisah yang direferensikan

"Laksanakan sesuai SOP-KYC-001 versi terbaru" — dokumen SOP terpisah yang bisa diupdate sendiri dan direferensikan dari banyak SOP lain


Contoh Arsitektur: Sistem Perbankan

Bayangkan sebuah bank dengan 12 proses berbeda yang semua memiliki beberapa prosedur standar:

  • Proses-Proses Utama:
    • Pembukaan Rekening
    • Pengajuan KPR
    • Pengajuan KKB
    • Pembuatan Kartu Kredit
    • Pinjaman Multiguna
    • ... (7 proses lainnya)
  • Proses Global (dipanggil via Call Activity):
    • KYC Standard (dipanggil oleh semua 12 proses)
    • Verifikasi Pembayaran (dipanggil oleh 8 proses)
    • Approval 3-Level (dipanggil oleh 6 proses)
    • Notifikasi Nasabah (dipanggil oleh semua 12 proses)
    • Proses Pelaporan OJK (dipanggil oleh 4 proses)

Setiap proses utama menggunakan Sub-Process untuk mengelola bagian yang unik:

  • Alur Proses Pengajuan KPR:
    1. Start $\rightarrow$ Input Data (User Task)
    2. KYC Standard (Call Activity) $\rightarrow$ memanggil proses global
    3. Penilaian Agunan KPR (Sub-Process) $\rightarrow$ spesifik untuk KPR saja:
      • Appraisal Properti
      • Cek Sertifikat
      • Verifikasi NJOP
    4. Approval 3-Level (Call Activity) $\rightarrow$ memanggil proses global
    5. Pencairan KPR (Sub-Process) $\rightarrow$ spesifik untuk KPR saja:
      • Akad Kredit
      • Notaris
      • Transfer ke Developer
    6. Notifikasi Nasabah (Call Activity) $\rightarrow$ memanggil proses global
    7. End

Dampak pada Organisasi

DimensiSub-ProcessCall Activity
OwnershipSatu tim (pemilik proses induk)Bisa tim berbeda
Change ManagementPerubahan dalam satu deploymentPerubahan independen
TestingTest bersama proses indukTest terpisah, mocking lebih mudah
DokumentasiBagian dari satu diagramDiagram mandiri yang terdokumentasi sendiri
AuditInstance tunggalAudit trail per child instance

Kembali ke: Gambaran Umum Activity →

[!TIP] Seri Cara Membaca BPMN: Pelajari perbedaan keduanya dari sudut pandang pembaca di Cara Membaca Sub-process dan Call Activity.

Artikel Terkait

💡

Sudah memahami konsep BPMN?

Wujudkan diagram Anda menjadi workflow automation nyata tanpa coding - dengan AlurKerja, platform BPM buatan Indonesia.