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.
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.

Tidak ada komentar:
Posting Komentar