Lewati ke konten

A16 — Call Activity

KodeA16
Nama BPMNCall Activity
TierA (wajib dikuasai)
DiperkenalkanModul 7
SpesifikasiOMG BPMN 2.0.2 §10.3 TODO-VERIFY

A16 — Call Activity: kotak dengan border lebih tebal dari task biasa
Unduh .bpmn

Memuat diagram…

Kotak dengan border lebih tebal dibanding task biasa. Tidak memiliki tanda + (tidak ada isi di dalam diagram saat ini). Atribut calledElement merujuk ke ID proses yang dipanggil.

Cara membuat di demo.bpmn.io: Klik kanan pada task → “Change type” → “Call Activity”.


Call Activity menyatakan: “Di sini ada prosedur yang didefinisikan terpisah dan bisa dipanggil dari proses mana pun. Ketika dieksekusi, proses yang dirujuk dijalankan.”

Proses yang dipanggil memiliki definisi tersendiri dan dapat diperbarui secara independen.


Memungkinkan reuse prosedur di beberapa proses tanpa menduplikasi. Ketika prosedur berubah, semua pemanggil otomatis menggunakan versi terbaru.


Token masuk ke Call Activity → engine memanggil proses yang dirujuk (calledElement) → proses tersebut dieksekusi secara penuh → setelah selesai, token kembali ke Call Activity dan melanjutkan Sequence Flow utama.

[PEDAGOGICAL SIMPLIFICATION] Call Activity seperti memanggil subrutin dalam pemrograman — proses utama “memanggil” proses lain, menunggu selesai, lalu melanjutkan.


Gunakan Call Activity ketika:

  • Prosedur yang sama dipakai di dua atau lebih proses berbeda.
  • Perubahan prosedur harus tercermin di semua pemanggil secara otomatis.
  • Prosedur memiliki owner tersendiri dan dikelola secara independen.
  • Prosedur perlu diuji dan diverifikasi secara terpisah.

Jangan gunakan Call Activity jika prosedur hanya dipakai di satu proses — gunakan Embedded Subprocess. Jangan gunakan Call Activity jika prosedur sederhana (hanya beberapa task linear) — overhead reuse tidak sebanding dengan kompleksitasnya.


Dalam Modul 7:

  • “Verifikasi Alamat Pengiriman” digunakan oleh proses pesanan dan proses retur. Dimodelkan sebagai Call Activity agar perubahan di definisi prosedur hanya perlu dilakukan sekali.

Call Activity 'Verifikasi Alamat Pengiriman' dengan border tebal
Unduh .bpmn

Memuat diagram…


  1. Temukan kotak dengan border lebih tebal dari task biasa.
  2. Tidak ada tanda + di bagian bawah.
  3. Label menyebutkan nama prosedur yang dipanggil.
  4. Proses yang dipanggil (calledElement) ada di definisi terpisah.

“Call Activity punya isi di dalamnya seperti Subprocess.”

Tidak. Call Activity tidak memiliki elemen di dalam diagram saat ini. Menggambar task atau event di dalam Call Activity melanggar semantik BPMN — elemen-elemen itu tidak bisa didefinisikan di dalam Call Activity dalam diagram ini.


Anti-pattern: Menyalin prosedur ke beberapa proses secara manual.

Gejala: Prosedur “Verifikasi Alamat” ada di proses pesanan dan di proses retur sebagai task-task terpisah yang identik.

Diagnosis: Ketika prosedur berubah, harus diupdate di dua tempat. Risiko inkonsistensi tinggi. Call Activity memungkinkan single source of truth.


ElemenBedanya
Call Activity (A16)Memanggil proses terpisah; bisa dipakai ulang
Embedded Subprocess (A13)Disisipkan di proses ini; tidak bisa dipakai ulang
Task (A01)Satu langkah atomik; tidak ada sub-proses

  • Prosedur dipakai di satu proses saja → Embedded Subprocess.
  • Prosedur dipakai di beberapa proses → Call Activity.
  • Satu langkah sederhana → Task langsung.

  • Apakah prosedur ini dipakai di lebih dari satu proses? → Call Activity.
  • Apakah prosedur ini perlu dipelihara secara independen oleh tim lain? → Call Activity.
  • Apakah prosedur ini hanya relevan dalam konteks proses ini? → Embedded Subprocess.

Dalam Modul 7, Call Activity untuk verifikasi alamat dipilih karena prosedur yang sama digunakan oleh proses retur. Menggunakan Embedded Subprocess yang disalin ke dua proses akan menciptakan dua versi yang bisa divergen — risiko yang tidak perlu ketika Call Activity tersedia.


  • Call Activity harus memiliki atribut calledElement yang merujuk ke ID proses yang valid.
  • Call Activity tidak boleh memiliki elemen di dalamnya (tidak seperti Subprocess).
  • Proses yang dipanggil harus dapat ditemukan oleh engine pada saat eksekusi.

Di Camunda, Call Activity mendukung passing variabel ke proses yang dipanggil (in) dan menerima variabel kembali (out). Ini memungkinkan komunikasi data antara proses pemanggil dan proses yang dipanggil.


Call Activity adalah mekanisme reuse proses — ia memanggil prosedur yang didefinisikan terpisah sehingga perubahan prosedur cukup dilakukan sekali dan berlaku untuk semua pemanggil.