🚧 THIS PAGE IS BEING TRANSLATED 🚧
👷 Contributors are invited. Please read CONTRIBUTING and CONTRIBUTING TRANSLATION guidelines.
🖖 Please remove this note once you're done translating.
Tentang Grule | Tutorial | Rule Engine | GRL | GRL JSON | Algoritma RETE | Fungsi-fungsi | FAQ | Benchmark
import "github.com/hyperjumptech/grule-rule-engine"
Grule adalah sebuah pustaka perangkat lunak berupa Rule Engine untuk bahasa pemrograman Golang. Di-inspirasi dari JBOSS Drools yang terkenal, tapi dibuat dengan lebih sederhana.
Seperti halnya Drools, Grule memiliki DSL-nya sendiri yang perbandingannya seperti berikut.
DRL dari Drools seperti :
rule "SpeedUp"
salience 10
when
$TestCar : TestCarClass( speedUp == true && speed < maxSpeed )
$DistanceRecord : DistanceRecordClass()
then
$TestCar.setSpeed($TestCar.Speed + $TestCar.SpeedIncrement);
update($TestCar);
$DistanceRecord.setTotalDistance($DistanceRecord.getTotalDistance() + $TestCar.Speed)
update($DistanceRecord)
end
Dan DRL dari Grule akan seperti :
rule SpeedUp "When testcar is speeding up we keep increase the speed." salience 10 {
when
TestCar.SpeedUp == true && TestCar.Speed < TestCar.MaxSpeed
then
TestCar.Speed = TestCar.Speed + TestCar.SpeedIncrement;
DistanceRecord.TotalDistance = DistanceRecord.TotalDistance + TestCar.Speed;
}
Tidak ada penjelasan yang lebih baik dari sebuah artikel yang ditulis oleh Martin Fowler. Anda dapat membaca artikelnya disini (RulesEngine by Martin Fowler).
Diambil dari situs TutorialsPoint (dengan sedikit modifikasi),
Grule Rule Engine adalah sebuah Production Rule System yang menggunakan pendekatan berbasis rule untuk membuat sebuah System Pakar. System Pakar menggunakan sebuah system berdasarkan pengetahuan dimana sistem ini akan memproses sebua representasi pengetahuan dan menambahkannya kedalam kumpulan basis pengetahuan didalamnya. Basis pengetahuan ini dapat dipergunakan untuk membuat reasoning.
Sebuah sistem Production Rule adalah Turing Complete yang ber-fokus pada representasi pengetahuan untuk menggambarkan logika yang proporsional dan logika first-order secara lengkap, jelas dan deklaratif.
Otak dari sebuah sistem Production Rules adalah sebuah mesin Inference yang dapat terbentuk dari sejumlah besar rule dan fakta. Mesin Inference akan mencocokan fakta dan data terhadap sekumpul rule untuk menentukan tidakan apa yang akan dilakukan berikutnya.
Production Rule adalah sebuah struktur yang terdiri dari dua bagian yang menggunakan logika first-order untuk mekanisme penentuan didalam representasi pengetahuan. Sebuah business rule engine adalah perangkat lunak yang menjalan satu atau lebih business rule dalam sebuah lingkungan production.
Rule Engine mengizinkan anda untuk mendefinisikan “Apa yang harus dilakukan” dan bukan “Bagaimana melakukannya.”
(juga diambil dari TutorialsPoint)
Rules adalah sebuah pengetahuan yang ditulis dalam bentuk "Saat (when) sebuah kondisi terjadi, Maka (then) lakukan sesuatu"
When
<Condition is true>
Then
<Take desired Action>
Bagian terpenting dalam sebuah Rule adalah pada bagian when nya. Jika bagian when terpenuhi, maka pagian then akan dieksekusi.
rule <rule_name> <rule_description>
<attribute> <value> {
when
<conditions>
then
<actions>
}
Rules mempermudah untuk mengekspresikan sebuah solusi untuk permasalahan uyang sulit dan juga mendapakan verifikasinya. Berbeda dengan kode program, Rule ditulis menggunakan bahasa yang sederhana; Bisnis analis dapat dengan mudah membaca dan memverifikasi sekumpulan Rule
Data berada didalam Domain Object sementara logika bisnis akan berada didalam sekumpulan Rule. Tergantung dari jenis proyeknya, pemisahan ini akan sangat menguntungkan.
Dengan menggunakan Rule, anda membuat sebuah penyimpanan pengetahuan (knowledge base). Penyimpanan ini menjadi sumber kebenaran atas aturan-aturan bisnis. Idealnya, aturan ini sangat mudah dibaca dan menjadikannya sebagai dokumentasi tersendiri.
Karea aturan bisnis ini sebenarnya diperlakukan sebagai data. Mengubah aturan untuk menyusaikan dinamika bisnis menjadi mudah. Tidak perlu membangun ulang kode program atau melakukan deployment sebagaimana proses pembangunan perangkat lunak biasanya, yang perlu anda lakukan hanya melepas sekumpulan aturan dan memasukannya kedalam penyimpanan Rule.