Pengantar “Rule Engine”

Ferdinand Neman
Hyperjump Tech
Published in
5 min readJan 7, 2021

“Rule Engine” bahasa Indonesianya adalah “Mesin Peraturan”, hehe emang rada maksa sih terjemahannya, terdengar naif dan norak. Sebaiknya kita sebut “RE” biar saya gak semakin dikatain norak.

Bukan bukan. Walau terjemahan ngaco-nya terdengar “Mesin Peraturan”, bukan berarti RE ini adalah mesin pembuat peraturan, seperti halnya “mesin” pembuat pasal-pasal dalam KUHP. Buktinya RE ini gak pernah bekerja di Kemehum! Beneran… RE adalah sebuah mesin komputasi yang mana mesin ini menggunakan sekumpulan peraturan(atau aturan, yep! Rules) untuk bisa menganalisa fakta dan menyimpulkan sesuatu fakta baru.

Berbeda dibandingkan dengan mesin-mesin yang terdiri dari kode instruksi yang bersifat “imperative” yang mana didalamnya berisi tentang bagaimana analisa dilakukan; Dalam RE, ditentukan aturan main dalam menganalisa dan menyimpulkan data secara deklaratif.

Facts

Fakta gimana maksudnya? Fakta itu seperti gini…

“Kamu Jelek”. Naaah itu fakta. ha ha ha. Sabar ya, sabar boss. Ini hanya contoh, gak perlu dijiwai kejelekan seseorang atau pribadi.

Fakta adalah fakta, bisa dibilang suatu kebenaran yang tak terbantahkan. Fakta adalah data yang nyata tentang sesuatu. Contoh lain tentang fakta/data. Sebutlah sebuah benda “Kucing Rumah”, fakta-fakta binatang itu “Berkaki 4”, “Punya Cakar”, “Punya Taring”, “Berat Gak Lebih dari 12 KG”, dan “Mengeong”. Itu semua adalah sebuah fakta dari suatu mahluk hidup. Ada yang bilang, kalau dia “Mengeong” dia pasti bukan anjing.

Jadi kalau ada contoh fakta tak terbantahkan yang lain, “Penulis nya Ganteng” yah.. itulah faktanya. Penulis artikel Hyperjump ganteng-ganteng semua. he he. Halah, serius-serius.

Rules

Ngomongin “peraturan”, maksud penulis ganteng ini tentang “peraturan” itu apa sih ? Heh… simple aja broh, peraturan yang dimaksud adalah peraturan untuk menganalisa fakta sehingga bro bisa menyimpulkan suatu fakta baru.

Seperti sudah disebutkan sebelumnya, RE menggunakan sekumpulan peraturan untuk bisa menganalisa fakta (atau data) dan menyimpulkan suatu fakta (atau data) baru. Contohnya gini…

Ada sekumpulan peraturan,

PERATURAN 1.
“Jika orangnya jelek maka orangnya gak menarik”

PERATURAN 2.
“Jika orang tidak jelek (ganteng, ehem) maka orang itu menarik perhatian orang lain”

PERATURAN 3.
“Jika orang itu menarik perhatian maka orang itu gampang punya pacar”

PERATURAN 4.
“Jika orang itu banyak duit maka orang itu menarik perhatian orang”

Naaahh, dengan contoh ke-4 peraturan diatas, kita bisa menarik fakta baru dari sebuah fakta yang sudah ada. Seperti … Fakta “Pembaca pesek, dan bokek”, maka apakah pembaca “Punya Pacar” ? Heits !!! gak boleh BAPER.

Engine

Mesin ini bekerja dengan berdasarkan sekumpulan peraturan. Setelah peraturan-peraturannya masuk ke dalam mesin, barulah mesin ini bisa dipergunakan untuk menganalisa data/fakta.

Mari kita amati diagram di bawah

Konsep dasar Rule Engine

Mudah mudahan diagram diatas dengan mudah dipahami dan secara intuitif memberikan penjelasan mendasar yang cukup seputar mesin ini. Kata orang, “A Picture is worth a thousand words”.

Kenapa harus pakai “Mesin” beginian ?

Banyak keuntungan yang bisa didapat dengan menggunakan RE diantaranya :

  • Dengan menggunakan pendekatan RE dalam pembuatan perangkat lunak, akan lebih mudah untuk meng-ekspresikan sebuah solusi atas problem yang komplex. Cukup peraturan 1,2,3,4 dst. Dibandingkan if dalam if dalam if dalam if dalam if dalam if dalam if … abang/nona ngerti kan maksud saya.
  • Peraturan-peraturan ini adalah data juga. Ia terlepas dari logika program yang harus di coding, compile, test, release dan deploy. Rules/Peraturan adalah data yang bisa disimpan dalam database, file, url, apapun. Diambil dan dimuat dari tempat penyimpanan data, kemudian dimasukan kedalam mesin, dan mesin pun siap bekerja. Sangat fleksibel untuk keperluan bisnis yang dinamikanya tinggi dan sangat mudah berubah. Tidak ada lagi, “Hari ini diskon 10%” ehh baru 2 hari boss minta “Hari ini diskon 5% aja”. Coding lagi-coding lagi. Kalau telat diomelin. Gag telat di hadiahi senyum doang. You feel me gays ?!
  • Karena peraturan-peraturan ini disimpan dalam database, atau file, maka data yang merepresentasikan kebijakan/aturan main aplikasi akan terpusat dalam satu wadah. Tidak terpencar-pencar di beragam sistem yang bisa mengakibatkan inkonsistensi data.
  • Peraturan adalah peraturan, bukan codingan. Jadi orang-orang yang gak ngerti/bisa ngoding, bisa dengan mudah memahami sekumpulan “Peraturan” dibandingan sekumpulan file “Golang”. Ya gak brur ?

Trus, kapan dong kita JANGAN pakai “Mesin” beginian ?

Well, ada saatnya make RE justru malah menyusahkan. Walaupun RE itu sepertinya keren (seperti penulis, ehem), RE itu memang bukan untuk segala kondisi dan keperluan. Jangan pakai RE kalau:

  • Logika bisnis yang dipakai gak akan berubah atau sangat jarang berubah.
  • Ruang lingkup bisnis yang akan ditangani oleh RE terlalu luas. Jangan menggunakan RE untuk segala urusan sistem. Cukup di area-area spesifik saja. Seperti … RE untuk ngitung harga, RE untuk ngitung besar tagihan, RE untuk komposisi kimia dalam obat. Jangan seluruh akunting pakai RE, walaupun boleh aja, tapi bisa mabok ente.

Dipakai untuk apa aja “Mesin” ginian ?

  • Sistem Pakar (Expert System). Sistem ini membantu manusia untuk menyelesaikan banyak permasalah spesifik sesuai peruntukannya. Sistem pakar montir pesawat, sistem pakar memasak, sistem pakar kedokteran, dsb.
  • Dunia Perbankan. Untuk menentukan apakah seseorang boleh menerima pinjaman bank berdasarkan fakta pekerjaan, pendapatan, riwayat finansial, dsb. Untuk memberikan pertimbangan bagi manajemen perbankan untuk mengambil keputusan berdasarkan fakta situasi keuangan. dsb.
  • Dunia Medis. Untuk menentukan jenis penyakit dan tindakan berdasarkan fakta-fakta laboratorium. Untuk menentukan komposisi kimia obat berdasarkan jenis penyakit dan kondisi pasien. dsb.
  • Dan masih buanyak lagee.

Grule Rule Engine

“Grule-Rule-Engine” atau yang boleh kita panggil secara singkat “Grule” adalah sebuah pustaka perangkat lunak yang merupakan implementasi RE. Diinisialisasi oleh team Hyperjump dan bersama-sama dibangun oleh komunitas OpenSource di seluruh dunia.

https://github.com/hyperjumptech/grule-rule-engine

Artikel berikutnya akan membahas seputar pembuatan Grule. Kita akan membahas cara penggunaan dan cara kerja sebuah Rule Engine hingga bagaimana membuat DSL yang dipergunakan dalam Grule. Yup, Grule adalah Rule engine yang mempunyai bahasanya sendiri.

Finally !!! Some Rules !!!

To be continue …

Hyperjump is an open-source-first company providing engineering excellence service. We aim to build and commercialize open-source tools to help companies streamline, simplify, and secure the most important aspects of its modern DevOps practices.

--

--

Ferdinand Neman
Hyperjump Tech

A father at home, Solution Architect at work, IT thinker at large.