Call Activity
Call Activity memanggil sebuah proses yang sudah terdefinisi secara global dan berdiri sendiri (reusable process). Berbeda dari Sub-Process yang definisinya ada di dalam proses induk, proses yang dipanggil oleh Call Activity adalah proses independen yang bisa dipanggil dari mana saja.
Simbol: Persegi panjang sudut membulat dengan garis tebal (bold border)
Konsep Inti: Reusability
Call Activity adalah jawaban BPMN untuk prinsip Don't Repeat Yourself (DRY) dalam pemodelan proses.
Bayangkan sebuah Bank yang memiliki prosedur KYC (Know Your Customer) yang sama persis untuk:
- Pembukaan rekening tabungan
- Pengajuan kredit
- Pembuatan kartu kredit
- Perubahan data nasabah
Tanpa Call Activity: Prosedur KYC digambar berulang di setiap proses → 4 salinan, jika ada perubahan regulasi KYC harus update di 4 tempat.
Dengan Call Activity: Prosedur KYC didefinisikan sekali sebagai proses global → 4 proses memanggil KYC via Call Activity → perubahan KYC cukup di satu tempat, langsung berlaku di semua proses.
Anatomy Call Activity
Proses: Pembukaan Rekening
[Start] → [User Task: Input Data Nasabah]
→ [Call Activity: Proses KYC] ← memanggil proses global
→ [Service Task: Buka Rekening]
→ [End]
↓ memanggil ↓
Proses Global: Proses KYC (berdiri sendiri, bisa dipanggil dari mana saja)
[Start] → [Service Task: Validasi NIK]
→ [Service Task: Cek Daftar Hitam]
→ [Service Task: Verifikasi Wajah]
→ [End]
Parameter Mapping: Input dan Output
Karena Called Process berjalan dalam scope-nya sendiri, variabel perlu di-mapping secara eksplisit:
Input Mapping
Nilai dari variabel proses pemanggil dikirim ke proses yang dipanggil:
Call Activity: Proses KYC
Input Mapping:
- namaLengkap (proses pemanggil) → nama (proses KYC)
- nomorKTP (proses pemanggil) → nik (proses KYC)
- tanggalLahir (proses pemanggil) → tgl_lahir (proses KYC)
Output Mapping
Hasil dari proses yang dipanggil dikembalikan ke proses pemanggil:
Output Mapping:
- statusKYC (proses KYC) → hasilKYC (proses pemanggil)
- skorVerifikasi (proses KYC) → skorKYC (proses pemanggil)
Business Key
Identifier yang menghubungkan instance proses induk dengan instance proses yang dipanggil — berguna untuk pelacakan dan audit.
Mode Eksekusi
Synchronous (Default)
Proses induk menunggu sampai Called Process selesai, baru melanjutkan.
[Proses Pembukaan Rekening — menunggu]
↕
[Proses KYC — berjalan sampai selesai]
↓
[Proses Pembukaan Rekening — melanjutkan dengan hasil KYC]
Ini adalah mode yang paling umum. Gunakan ketika hasil dari Called Process dibutuhkan untuk langkah berikutnya.
Asynchronous (Loose Coupling)
Proses induk tidak menunggu — ia mengirimkan pemanggilan dan langsung melanjutkan (atau selesai). Biasanya diimplementasikan via Message, bukan Call Activity langsung.
Contoh Penggunaan di Berbagai Proses
Contoh 1: KYC sebagai Reusable Process
Proses yang memanggil KYC:
Pembukaan Rekening: ... → [Call: Proses KYC] → ...
Pengajuan Kredit: ... → [Call: Proses KYC] → ...
Kartu Kredit: ... → [Call: Proses KYC] → ...
Proses KYC (dipanggil oleh ketiganya):
[Start] → [Validasi NIK] → [Cek BI Checking] → [Verifikasi Alamat] → [End]
Contoh 2: Proses Persetujuan Standar
Banyak organisasi memiliki prosedur approval yang sama untuk berbagai jenis permintaan:
Pengajuan Cuti: ... → [Call: Proses Approval 2-Level] → ...
Permintaan Anggaran: ... → [Call: Proses Approval 2-Level] → ...
Pengadaan Aset: ... → [Call: Proses Approval 2-Level] → ...
Proses Approval 2-Level (parameter-driven):
[Start]
→ [User Task: Persetujuan Level 1] ← assignee dari input parameter
→ [User Task: Persetujuan Level 2] ← assignee dari input parameter
→ [End]
Output: hasilPersetujuan (DISETUJUI / DITOLAK), komentar
Contoh 3: Verifikasi Pembayaran
Pembayaran Transfer: ... → [Call: Verifikasi Pembayaran] → ...
Pembayaran Kartu: ... → [Call: Verifikasi Pembayaran] → ...
Pembayaran Via Dompet Digital: ... → [Call: Verifikasi Pembayaran] → ...
Boundary Events pada Call Activity
Call Activity bisa memiliki Boundary Event seperti Activity lain:
[Call Activity: Proses KYC]
◎ Timer Boundary "5 menit"
↓
[Service Task: Log Timeout, Eskalasi]
[Call Activity: Proses Pembayaran Eksternal]
◎ Error Boundary "Pembayaran Gagal"
↓
[User Task: Pilih Metode Pembayaran Alternatif]
Boundary Event pada Call Activity berlaku untuk seluruh called process — jika timer habis sebelum called process selesai, called process dibatalkan dan alur pindah ke Boundary Event.
Versioning
Ketika proses yang dipanggil berubah, Call Activity bisa dikonfigurasi untuk:
- Selalu memanggil versi terbaru (latest version)
- Memanggil versi spesifik (misalnya v2.1)
Ini penting untuk kontrol perubahan — proses yang sedang berjalan tidak terganggu oleh update proses yang dipanggil.
Hal yang Perlu Diperhatikan
Coupling yang Tepat
Call Activity menciptakan tight coupling antara proses pemanggil dan yang dipanggil. Perubahan interface (input/output) pada Called Process bisa berdampak ke semua pemanggil.
Monitoring
Instance Call Activity menghasilkan child instance di BPMS — Anda bisa melacak instance induk dan semua child-nya secara terpisah.
Rekursi
Secara teknis Call Activity bisa memanggil dirinya sendiri (rekursif), tapi ini sangat jarang dan harus dirancang dengan hati-hati untuk menghindari infinite loop.
Selanjutnya: Sub-Process vs. Call Activity →