Service Task
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):
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.
| Contoh | API yang Dipanggil |
|---|---|
| Validasi NIK | API Dukcapil |
| Cek kredit | API SLIK OJK / BI Checking |
| Kirim SMS OTP | API Telco / SMS Gateway |
| Verifikasi rekening | API bank tujuan |
| Geocoding alamat | Google Maps API |
| Konversi mata uang | API 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.
| Jenis | Contoh |
|---|---|
| Konfirmasi pendaftaran, notifikasi persetujuan | |
| SMS | OTP, status pengiriman, reminder |
| Push Notification | Update aplikasi mobile |
| WhatsApp Business | Notifikasi transaksi, pengingat |
| Webhook | Memberi tahu sistem lain via HTTP POST |
Operasi Database
Membaca atau menulis data tanpa interaksi pengguna.
- Simpan Data Permohonan ke Database (Service Task)
- Ambil Riwayat Kredit dari Core Banking (Service Task)
- Update Status di Tabel Transaksi (Service Task)
Pembuatan Dokumen
Menghasilkan dokumen output secara otomatis.
- Generate Surat Keputusan Kredit (PDF) (Service Task)
- Buat Laporan Rekonsiliasi (Excel) (Service Task)
- 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
- Isi Formulir Pendaftaran (User Task)
- Validasi NIK via Dukcapil (Service Task) $\rightarrow$ Jika error $\rightarrow$ Kirim Notif NIK Tidak Valid
- Cek Daftar Hitam OJK (Service Task) $\rightarrow$ Jika error $\rightarrow$ Kirim Notif Ditolak
- Generate Nomor Rekening (Service Task)
- Simpan ke Core Banking (Service Task)
- Kirim Email Selamat Datang (Service Task)
- Kirim SMS Nomor Rekening (Service Task)
- 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.