Minggu, 01 Mei 2016

Sekilas Tentang Drools

Apa sih Drools itu?

 Drools merupakan Business Logic integration Platform(BLiP). Cara kerja Drools sendiri itu dengan memisahkan data dan logic. 

Saat ini Drools dikembangkan dalam bahasa Java dan masih Open Source Project. Drools didukung oleh JBOSS & Red Hat,Inc.


Contoh rules dalam Drools

Stateful Knowledge Session

Stateful Knowledge Session




Apa itu Session dalam Drools?



Di dalam Drools, session berfungsi untuk menyimpan semua fakta atau objek. Kemudian fakta tersebut akan dicocokan terhadap semua rules yang ada.




Proses pembuatan sebuah knowledge session dalam Drools cukup panjang. Berikut representasi proses tersebut:


Proses pembuatan sebuah knowledge session



1. Proses pertama diawali dengan pembuatan object KnowledgeBuilder oleh         KnowledgeBuilderFactory.
2. File yang berisikan rules (.drl) dibaca oleh KnowledgeBuilder.
3. Object KnowledgeBase membaca KnowledgePackage dari KnowledgeBuilder.
4. KnowledgeBase dapat digunakan untuk mebuat knowledge session.

Stateful vs Stateless

Apa sih perbedaan Stateful dan Stateless?

Fakta akan di-insert ke dalam KnowledgeBaseSession sebelum firing rule. Maka perbedaan yang terjadi adalah:

1. Stateful: perubahan pada fakta selama eksekusi rules tidak membuat rule engine mengetahui akan adanya perubahan value.

2. Stateless: perubahan pada fakta selama eksekusi rules membuat rule engine tahu akan adanya perubahan nilai tersebut.

Pada stateful session, ketika ada perubahan pada fakta,maka rule dipanggil secara iterative.

Jika fakta A dimodifikasi pada rule terakhir,maka perubahan ini akan membuat aktif kembali semua rule. Setelah mengeksekusi rules (fire rule) diharuskan memanggil method dispose(), hal ini dilakukan untuk menghindari memory leaks.

Stateful session sangat berguna ketika kita ingin memanggil rule beberapa kali selama periode waktu tertentu. 

Kasus lainnya adalah jika kita ingin mengeksekusi sekumpulan rule yang sama terhadap fakta yang sama yang tidak sering berubah. Akan sangat menjadi pemborosan computer resource untuk melakukan insert semua fakta lagi dan lagi. 

Lebih baik dengan menggunakan stateful session dan memberitahu mengenai perubahan fakta semenjak eksekusi terakhir.