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.