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
| Aspek | Sub-Process | Call Activity |
|---|---|---|
| Di mana definisinya? | Di dalam proses induk | Di 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? | ❌ | ✅ |
| Overhead | Sangat rendah | Lebih tinggi (child instance) |
| Cocok untuk | Struktur lokal, exception handling | Reuse, modularisasi |
| Monitoring | Bagian dari instance induk | Instance 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:
- Cek Kelengkapan Berkas
- Legalisir Dokumen
- 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 / Pertanyaan | Hasil "YA" | Hasil "TIDAK" |
|---|---|---|
| Apakah kelompok aktivitas akan digunakan di lebih dari satu proses? | Call Activity | Lanjut ke pertanyaan berikutnya |
| Apakah tim berbeda yang mengelola masing-masing proses? | Call Activity | Lanjut ke pertanyaan berikutnya |
| Apakah membutuhkan monitoring atau versioning yang independen? | Call Activity | Lanjut ke pertanyaan berikutnya |
| Apakah dipicu oleh event (bukan sequence flow)? | Event Sub-Process | Lanjut ke pertanyaan berikutnya |
| Apakah membutuhkan exception handling secara kolektif? | Embedded Sub-Process | Lanjut 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:
- Start $\rightarrow$ Input Data (User Task)
- KYC Standard (Call Activity) $\rightarrow$ memanggil proses global
- Penilaian Agunan KPR (Sub-Process) $\rightarrow$ spesifik untuk KPR saja:
- Appraisal Properti
- Cek Sertifikat
- Verifikasi NJOP
- Approval 3-Level (Call Activity) $\rightarrow$ memanggil proses global
- Pencairan KPR (Sub-Process) $\rightarrow$ spesifik untuk KPR saja:
- Akad Kredit
- Notaris
- Transfer ke Developer
- Notifikasi Nasabah (Call Activity) $\rightarrow$ memanggil proses global
- End
Dampak pada Organisasi
| Dimensi | Sub-Process | Call Activity |
|---|---|---|
| Ownership | Satu tim (pemilik proses induk) | Bisa tim berbeda |
| Change Management | Perubahan dalam satu deployment | Perubahan independen |
| Testing | Test bersama proses induk | Test terpisah, mocking lebih mudah |
| Dokumentasi | Bagian dari satu diagram | Diagram mandiri yang terdokumentasi sendiri |
| Audit | Instance tunggal | Audit 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.