Lewati ke konten utama

Service Task

Simbol Service Task dalam BPMN 2.0

Service Task adalah task yang dieksekusi sepenuhnya otomatis oleh sistem — tanpa intervensi manusia sama sekali. Ketika BPMS mencapai Service Task, ia langsung menjalankan logika yang sudah dikonfigurasi, menunggu hasilnya, lalu melanjutkan ke step berikutnya.

Simbol: Ikon roda gigi di sudut kiri atas persegi panjang sudut membulat


Definisi yang Tepat

Service Task menjawab: "Apa yang dilakukan sistem secara otomatis di titik ini?"

Kata kunci untuk mengenali Service Task:

  • Sistem mengirim email otomatis
  • Sistem memanggil API pihak ketiga
  • Sistem menyimpan data ke database
  • Sistem menghasilkan dokumen (PDF, laporan)
  • Sistem mengintegrasikan data antar aplikasi

Mekanisme Implementasi

Cara Service Task diimplementasikan bergantung pada BPMS yang digunakan, namun secara konseptual ada tiga pendekatan:

1. Java Delegate / Delegate Expression (Camunda, Flowable)

Kode Java yang dijalankan langsung oleh engine:

@Component
public class KirimEmailDelegate implements JavaDelegate {
@Override
public void execute(DelegateExecution execution) {
String email = (String) execution.getVariable("emailPelanggan");
String nama = (String) execution.getVariable("namaPelanggan");
emailService.kirim(email, "Permohonan Anda Diterima", buildTemplate(nama));
}
}

Dikonfigurasi di properti Service Task:

Implementation: Delegate Expression
Value: ${kirimEmailDelegate}

2. External Task Pattern (Camunda 7+, Camunda 8)

Service Task tidak dieksekusi di dalam engine, melainkan oleh external worker yang polling ke engine. Ideal untuk integrasi dengan sistem non-Java.

Berikut adalah diagram alur pola tugas eksternal (External Task Pattern):

External Task Pattern

Keunggulan:

  • Bisa ditulis dalam bahasa apapun (Python, Node.js, Go, dll.)
  • Lebih tahan terhadap kegagalan (engine tidak menunggu sinkron)
  • Mudah di-scale secara independen

3. Connector (Camunda, Flowable)

Konfigurasi deklaratif untuk integrasi umum tanpa kode:

<serviceTask id="kirimEmail" name="Kirim Notifikasi">
<extensionElements>
<camunda:connector>
<camunda:connectorId>mail-send</camunda:connectorId>
<camunda:inputOutput>
<camunda:inputParameter name="to">${emailPelanggan}</camunda:inputParameter>
<camunda:inputParameter name="subject">Permohonan Diproses</camunda:inputParameter>
</camunda:inputOutput>
</camunda:connector>
</extensionElements>
</serviceTask>

Jenis-Jenis Service Task Berdasarkan Fungsi

Integrasi API Eksternal

Memanggil layanan pihak ketiga. Ini adalah penggunaan Service Task yang paling umum.

ContohAPI yang Dipanggil
Validasi NIKAPI Dukcapil
Cek kreditAPI SLIK OJK / BI Checking
Kirim SMS OTPAPI Telco / SMS Gateway
Verifikasi rekeningAPI bank tujuan
Geocoding alamatGoogle Maps API
Konversi mata uangAPI kurs Bank Indonesia

Contoh dalam diagram:

  • Aktor/Lane: Sistem
  • Nama Task: Validasi NIK via API Dukcapil
  • Input: ${nik}, ${namaLengkap}, ${tanggalLahir}
  • Output: ${validasiNIK} (valid/invalid), ${detailKTP}
  • Timeout: 30 detik
  • Retry: 3 kali

Pengiriman Notifikasi

Mengirim komunikasi otomatis ke pengguna atau sistem.

JenisContoh
EmailKonfirmasi pendaftaran, notifikasi persetujuan
SMSOTP, status pengiriman, reminder
Push NotificationUpdate aplikasi mobile
WhatsApp BusinessNotifikasi transaksi, pengingat
WebhookMemberi tahu sistem lain via HTTP POST

Operasi Database

Membaca atau menulis data tanpa interaksi pengguna.

  1. Simpan Data Permohonan ke Database (Service Task)
  2. Ambil Riwayat Kredit dari Core Banking (Service Task)
  3. Update Status di Tabel Transaksi (Service Task)

Pembuatan Dokumen

Menghasilkan dokumen output secara otomatis.

  1. Generate Surat Keputusan Kredit (PDF) (Service Task)
  2. Buat Laporan Rekonsiliasi (Excel) (Service Task)
  3. Generate Nomor Rekening (Service Task)

Kalkulasi dan Transformasi Data

Melakukan komputasi yang hasilnya disimpan sebagai variabel proses.

  • Nama Task: Hitung Angsuran Kredit
  • Input: ${pokokPinjaman}, ${sukuBunga}, ${tenorBulan}
  • Output: ${angsuranPerBulan}, ${totalBunga}, ${jadwalAngsuran}

Penanganan Error di Service Task

Service Task yang memanggil sistem eksternal harus mempertimbangkan kegagalan. Pendekatan yang direkomendasikan:

Retry Otomatis

Konfigurasi retry untuk kegagalan sementara (network timeout, service unavailable):

Retries: 3
Retry Time Cycle: R3/PT10M (3 kali, setiap 10 menit)

Error Boundary Event

Untuk kegagalan yang tidak bisa di-retry, gunakan Error Boundary Event:

  • Proses Pembayaran (Service Task) $\rightarrow$ Jika terjadi error Boundary Event "Kartu Ditolak" $\rightarrow$ Alihkan ke Pilih Metode Pembayaran Lain (User Task).

Timeout

Selalu definisikan batas waktu agar proses tidak stuck jika service eksternal tidak merespons:

  • Validasi Data (Service Task) $\rightarrow$ Jika terjadi Timer Boundary (30 detik) $\rightarrow$ Alihkan ke Catat Timeout, Lanjutkan Default (Service Task).

Contoh Lengkap: Proses Pembukaan Rekening Online

  1. Isi Formulir Pendaftaran (User Task)
  2. Validasi NIK via Dukcapil (Service Task) $\rightarrow$ Jika error $\rightarrow$ Kirim Notif NIK Tidak Valid
  3. Cek Daftar Hitam OJK (Service Task) $\rightarrow$ Jika error $\rightarrow$ Kirim Notif Ditolak
  4. Generate Nomor Rekening (Service Task)
  5. Simpan ke Core Banking (Service Task)
  6. Kirim Email Selamat Datang (Service Task)
  7. Kirim SMS Nomor Rekening (Service Task)
  8. Selesai (End Event)

Kesalahan Umum

1. Service Task untuk Pekerjaan Manusia

Jika ada manusia yang mengklik, mengisi, atau memutuskan — itu User Task, bukan Service Task.

2. Tidak Ada Penanganan Error

Service Task yang memanggil API eksternal tanpa Error Boundary Event adalah bom waktu. Sistem eksternal pasti akan gagal suatu saat.

3. Logic Bisnis di Dalam Service Task

Jika Service Task memutuskan jalur proses berdasarkan aturan bisnis yang kompleks — pisahkan ke Business Rule Task. Service Task seharusnya hanya eksekutor, bukan pengambil keputusan.

4. Transaksi yang Terlalu Panjang

Jika satu Service Task melakukan terlalu banyak hal (validasi + simpan + kirim email), pecah menjadi beberapa Service Task. Ini memudahkan penanganan error dan retry.


Selanjutnya: Script Task →

Artikel Terkait

💡

Sudah memahami konsep BPMN?

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