Mendorong PDI melampaui step bawaan: menulis logika khusus dengan step JavaScript dan Java, memahami cara membuat custom step dan job entry, memanfaatkan plugin komunitas dan marketplace, serta mengemas transformasi menjadi aset yang bisa dipakai ulang di banyak project.

Meskipun PDI punya ratusan step bawaan, kadang kalian butuh logika yang tidak tersedia. Episode 16 membuka jalan keluar: extensibility. Kalian akan belajar tiga tingkat perluasan — mulai dari yang paling sederhana (JavaScript dalam step) sampai yang paling dalam (plugin Java dan custom step).
Tujuannya bukan membuat kalian langsung menjadi pengembang plugin, tapi memahami peta kemampuan: kapan cukup pakai step bawaan, kapan tulis JavaScript, dan kapan benar-benar butuh plugin Java atau komunitas.
Cara tercepat menambahkan logika khusus adalah step scripting yang tersedia di PDI:
Contoh: menghitung kategori diskon berdasarkan jumlah dengan JavaScript:
var jumlah = row.jumlah;
var kategori = jumlah >= 1000000 ? "VIP" : jumlah >= 100000 ? "REGULER" : "BASIC";
row.kategori = kategori;Perhatikan bahwa kode di atas memakai gaya script per baris yang umum di PDI: membaca field dari variabel row, lalu menetapkan field baru. Variabel seperti row adalah konteks yang disediakan oleh step itu.
Step JavaScript menyediakan beberapa objek bantu yang jarang dijelaskan di menu: row untuk membaca field baris, getVariable() untuk membaca variabel job/transformasi, dan fungsi putRow() untuk mengirim baris keluar. Bagi kalian yang baru mulai, cukup kenali dua hal: membaca field lewat row.namafield, dan menetapkan field baru dengan row.fieldBaru = nilai — sisanya akan menyusul saat kebutuhan muncul. Dokumentasi resmi dan contoh di komunitas memakai pola yang sama, jadi membiasakan diri dengan konvensi ini memudahkan kalian membaca contoh orang lain.
Info
Step JavaScript hanya boleh dipakai untuk logika ringan dan sebaiknya dihindari untuk manipulasi data besar — tiap baris dieksekusi interpreter yang jauh lebih lambat daripada step native. Untuk volume besar, lebih baik transformasi di database atau transformasi native.
Pertanyaan yang sering muncul: kapan cukup JavaScript, kapan butuh Java?
| Kebutuhan | Pilihan |
|---|---|
| Perhitungan ringan, transformasi satu baris | JavaScript / User Defined Java Expression |
| Operasi baris-butir yang kompleks | JavaScript dengan fungsi modular |
| Memproses volume besar dengan kecepatan native | Step bawaan atau plugin Java |
| Integrasi library eksternal (misalnya enkripsi) | Plugin Java memakai library jar |
| Melakukan hal yang tak ada di PDI sama sekali | Custom step / plugin Java |
Aturan emas: gunakan solusi teringan yang memenuhi kebutuhan. JavaScript untuk prototipe dan logika bisnis kecil; Java hanya saat performa atau library pihak ketiga benar-benar dibutuhkan.
Di balik layar, setiap step PDI adalah plugin Java. Sebuah custom step dibangun dengan:
Ketika plugin diletakkan di folder plugins/ dan PDI di-restart, step baru muncul di palet seperti step bawaan. Meski membangun plugin dari nol butuh pemahaman Java dan API PDI yang dalam, imbalannya besar: step yang sangat spesifik untuk bisnis kalian bisa dipakai ulang di banyak transformasi.
Bagi kalian yang baru mulai, disarankan memakai SDK plugin yang disediakan komunitas, atau meniru plugin open-source yang sudah ada sebagai template.
Sebelum membangun plugin utuh, ada komponen yang lebih kecil tapi sering cukup: step User Defined Java Class (UDJC) memungkinkan menulis Java singkat langsung di dalam transformasi tanpa membangun plugin terpisah — cocok untuk logika yang butuh performa native namun hanya dipakai di satu tempat. Ini jembatan yang bagus untuk merasakan API PDI sebelum berkomitmen membuat plugin penuh.
Sebelum menulis plugin sendiri, periksa dulu yang sudah ada. Pentaho Marketplace menyediakan plugin yang terpasang langsung dari PDI, misalnya:
Alur pemasangan dari Marketplace: buka menu Tools > Marketplace, cari plugin, klik install, lalu restart Spoon. Pastikan runtime Java mendukung plugin tersebut dengan java -version sebelum memilih versi. Banyak plugin lain juga tersedia di repositori komunitas seperti GitHub — pastikan kompatibilitas versi dengan PDI kalian.
Danger
Hati-hati dengan plugin pihak ketiga: periksa reputasi dan kode sumbernya, terutama jika plugin menangani data sensitif. Plugin yang buruk bisa membocorkan data atau mengganggu performa PDI. Untuk data sensitif, review kode atau gunakan plugin resmi.
Kalian tidak perlu selalu menulis plugin untuk reusability. Transformasi yang dirancang baik bisa menjadi "komponen" yang dipanggil berkali-kali:
Transformasi seperti normalisasi_nama.ktr yang menerima field apa pun lewat parameter dan mengembalikan versi bersih, adalah contoh komponen yang bisa dipakai ulang di mana saja. Pola ini jauh lebih murah daripada plugin Java dan cukup untuk sebagian besar kebutuhan.
Success
Urutan yang bijak: pakai step bawaan, lalu JavaScript, lalu plugin komunitas, dan terakhir barulah menulis plugin Java sendiri. Setiap level menaikkan biaya pembuatan dan perawatan — jangan membangun roket jika sepeda cukup.
Di episode 16 ini kalian memahami perluasan PDI: menulis logika kustom dengan JavaScript dan ekspresi Java, mengenal struktur custom step dan job entry berbasis Java, memanfaatkan plugin komunitas dan marketplace, serta mengemas transformasi menjadi komponen yang bisa dipakai ulang.
Inti yang harus dibawa pulang:
Di episode 17, kita membuka cakrawala data besar: big data integration — menghubungkan Pentaho dengan Hadoop, Spark, dan data lake cloud, memahami format Parquet, Avro, dan ORC, pola streaming ingestion near real-time, serta dukungan data lakehouse.