Drools - Penulisan Aturan
Jika Anda melihat aturan default yang tertulis di proyek Hello World (Sample.drl), ada banyak kata kunci yang digunakan yang akan kami jelaskan sekarang.
Sample.drl
Package- Setiap Aturan dimulai dengan nama paket. Paket bertindak sebagai namespace untuk Rules. Nama aturan dalam sebuah paket harus unik. Paket dalam Rules mirip dengan paket di Java.
Import statement- Fakta apa pun yang ingin Anda terapkan aturannya, fakta tersebut perlu diimpor. Misalnya, com.sample.DroolsTest.Message; pada contoh di atas.
Rule Definition- Ini terdiri dari Nama Aturan, kondisi, dan Konsekuensi. Kata kunci ngiler adalahrule, when, then, dan end. Dalam contoh di atas, nama aturannya adalah "Hello World" dan "GoodBye". Ituwhen bagian adalah kondisi baik dalam aturan maupun thenbagian adalah konsekuensinya. Dalam terminologi aturan, filewhen bagian juga disebut sebagai LHS (sisi kiri) dan then bagian sebagai RHS (sisi kanan) aturan.
Sekarang mari kita telusuri istilah yang digunakan dalam file Java yang digunakan untuk memuat Drools dan menjalankan aturan.
Dasar pengetahuan
Basis Pengetahuan adalah antarmuka yang mengelola kumpulan aturan, proses, dan tipe internal. Itu terkandung di dalam paketorg.drools.KnowledgeBase. Di Drools, ini biasanya disebut sebagaiknowledge definitions atau knowledge. Definisi pengetahuan dikelompokkan menjadiknowledge packages. Definisi pengetahuan dapat ditambahkan atau dihapus. Tujuan utama Basis Pengetahuan adalah untuk menyimpan dan menggunakannya kembali karena pembuatannya mahal. Basis Pengetahuan menyediakan metode untuk membuat sesi pengetahuan.
Sesi Pengetahuan
Sesi pengetahuan diambil dari basis pengetahuan. Ini adalah antarmuka utama untuk berinteraksi dengan Drools Engine. Sesi pengetahuan dapat terdiri dari dua jenis -
Sesi Pengetahuan Tanpa Kewarganegaraan
Sesi Pengetahuan Negara
Sesi Pengetahuan Tanpa Kewarganegaraan
Stateless Knowledge Session adalah sesi stateless yang membentuk kasus penggunaan paling sederhana, tidak menggunakan inferensi. Sesi stateless dapat disebut seperti fungsi, meneruskan beberapa data dan kemudian menerima beberapa hasil kembali. Contoh umum dari sesi tanpa kewarganegaraan meliputi -
Validation
Apakah orang ini memenuhi syarat untuk mendapatkan hipotek?
Calculation
Hitung premi hipotek.
Routing and Filtering
Filter pesan masuk, seperti email, ke dalam folder.
Mengirim pesan masuk ke suatu tujuan
Sesi Pengetahuan Negara
Sesi stateful berumur lebih lama dan memungkinkan perubahan berulang dari waktu ke waktu. Beberapa kasus penggunaan umum untuk sesi stateful meliputi -
Monitoring
Pemantauan dan analisis pasar saham untuk pembelian semi-otomatis.
Diagnostics
Penemuan kesalahan, diagnosa medis
Logistics
Pelacakan paket dan penyediaan pengiriman
Pembangun Pengetahuan
Antarmuka KnoledgeBuilder bertanggung jawab untuk membangun KnowledgePackage dari definisi pengetahuan (aturan, proses, jenis). Itu terkandung di dalam paketorg.drools.builder.KnowledgeBuilder. Definisi pengetahuan bisa dalam berbagai format. Jika ada masalah dengan pembuatan, KnowledgeBuilder akan melaporkan kesalahan melalui dua metode ini:hasErrors dan getError.
Diagram berikut menjelaskan prosesnya
Dalam contoh di atas, saat kita mengambil contoh sederhana dari sesi pengetahuan stateless, kita telah memasukkan fakta dalam sesi tersebut, dan kemudian metode fireAllRules () dipanggil dan Anda melihat hasilnya.
Dalam kasus sesi pengetahuan stateful, setelah aturan diaktifkan, objek sesi pengetahuan stateful harus memanggil metode tersebut dispose() untuk melepaskan sesi dan menghindari kebocoran memori.