Lewati ke konten utama

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 →