Belajar Pentaho - Custom Plugins & Extensibility
Episode 16 of 23

Belajar Pentaho - Custom Plugins & Extensibility

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.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

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.

Logika Kustom dengan Step Scripting

Cara tercepat menambahkan logika khusus adalah step scripting yang tersedia di PDI:

  • Modified Java Script Value: mengeksekusi JavaScript per baris untuk menghitung atau mengubah nilai field. Didukung Mozilla Rhino (untuk JavaScript lawas) atau GraalJS.
  • User Defined Java Expression: mengevaluasi ekspresi Java sederhana per baris tanpa menulis fungsi penuh.
  • Execute SQL Script: menjalankan script SQL — berguna untuk logika yang lebih baik ditangani database.

Contoh: menghitung kategori diskon berdasarkan jumlah dengan JavaScript:

JSContoh logika JavaScript per baris
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.

Mengenal Konteks Variabel di Step JavaScript

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.

Kapan Memilih JavaScript vs Java

Pertanyaan yang sering muncul: kapan cukup JavaScript, kapan butuh Java?

KebutuhanPilihan
Perhitungan ringan, transformasi satu barisJavaScript / User Defined Java Expression
Operasi baris-butir yang kompleksJavaScript dengan fungsi modular
Memproses volume besar dengan kecepatan nativeStep bawaan atau plugin Java
Integrasi library eksternal (misalnya enkripsi)Plugin Java memakai library jar
Melakukan hal yang tak ada di PDI sama sekaliCustom 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.

Memahami Custom Step dan Job Entry

Di balik layar, setiap step PDI adalah plugin Java. Sebuah custom step dibangun dengan:

  • StepMetaInterface: mendefinisikan metadata step — field konfigurasi dan dialog.
  • StepInterface / BaseStep: logika eksekusi yang menerima baris dari step sebelumnya dan mengeluarkan baris hasil.
  • Plugin descriptor: file XML atau anotasi yang mendaftarkan plugin ke PDI.

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.

Komponen Kecil yang Patut Dicoba

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.

Plugin Komunitas dan Marketplace

Sebelum menulis plugin sendiri, periksa dulu yang sudah ada. Pentaho Marketplace menyediakan plugin yang terpasang langsung dari PDI, misalnya:

  • Konektor untuk layanan cloud dan API tertentu.
  • Step transformasi khusus seperti kriptografi atau format data niche.
  • Step untuk berinteraksi dengan tool lain di ekosistem data.

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.

Mengemas Transformasi yang Bisa Dipakai Ulang

Kalian tidak perlu selalu menulis plugin untuk reusability. Transformasi yang dirancang baik bisa menjadi "komponen" yang dipanggil berkali-kali:

  • Parameterisasi: semua nilai yang bisa berubah dijadikan parameter, bukan hardcode.
  • Kontrak field yang jelas: dokumentasikan field input dan output transformasi.
  • Satu tanggung jawab: transformasi kecil yang fokus mudah dipakai ulang; transformasi raksasa sulit.
  • Dokumentasi singkat: jelaskan tujuan, input, dan output di Annotation step atau file README.

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.

Penutup

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:

  • JavaScript cocok untuk logika ringan; hindari untuk volume besar.
  • Custom step Java adalah jalan terdalam, didukung StepMetaInterface dan BaseStep.
  • Periksa marketplace dan komunitas sebelum menulis plugin sendiri.
  • Transformasi terparameterisasi adalah cara paling murah mencapai reusability.

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.

Belajar Pentaho - Custom Plugins & Extensibility | Belajar Pentaho