Drools - Kural Sözdizimi
.Drl'nin (kural dosyası) kendi sözdizimi olduğunu gördüğünüz gibi, bu bölümde Kural sözdiziminin bazı kısımlarını ele alalım.
Kurallardaki Koşullar
Bir kural, aşağıdakiler gibi birçok koşul ve kalıp içerebilir:
- Hesap (bakiye == 200)
- Müşteri (name == "Vivek")
Yukarıdaki koşullar Hesap bakiyesinin 200 olup olmadığını veya Müşteri adının "Vivek" olup olmadığını kontrol eder.
Kurallardaki Değişkenler
Drools'daki değişken adı Dolar ($) sembolü ile başlar.
- $ hesap - Hesap ()
- $ hesap, Account () sınıfı için değişkendir
Drools, tüm yerel Java türleri ve hatta Enum ile çalışabilir.
Kurallardaki Yorumlar
Özel karakterler, # veya //, tek satırlı açıklamaları işaretlemek için kullanılabilir.
Çok satırlı yorumlar için aşağıdaki biçimi kullanın:
/*
Another line
.........
.........
*/
Global Değişkenler
Global değişkenler, bir oturuma atanan değişkenlerdir. Aşağıdaki gibi çeşitli nedenlerle kullanılabilirler -
Giriş parametreleri için (örneğin, oturumdan oturuma özelleştirilebilen sabit değerler).
Çıktı parametreleri için (örneğin, raporlama - bir kural genel rapor değişkenine bazı mesajlar yazabilir).
Kurallar dahilinde kullanılabilen, günlük kaydı gibi hizmetler için giriş noktaları.
Kurallardaki İşlevler
İşlevler, kullanışlı bir özelliktir. Koşullarda ve sonuçlarda kullanılabilirler. Fonksiyonlar, yardımcı program / yardımcı sınıflara bir alternatifi temsil eder. Örneğin,
function double calculateSquare (double value) {
return value * value;
}
Lehçe
Bir lehçe, bir koşulda veya sonuçta bulunan herhangi bir kod ifadesinde kullanılan sözdizimini belirtir. Dönen değerleri, evalleri, satır içi değerlendirmeleri, yüklemleri, belirgin ifadeleri, sonuçları vb. İçerir. Varsayılan değerJava. Drools şu anda adında bir lehçeyi daha destekliyorMVEL. Varsayılan lehçe, paket düzeyinde aşağıdaki şekilde belirtilebilir -
package org.mycompany.somePackage
dialect "mvel"
MVEL Lehçesi
MVEL, Java tabanlı uygulamalar için bir ifade dilidir. Alan ve yöntem / alıcı erişimini destekler. Java sözdizimine dayanmaktadır.
Dikkat
Dikkat Çekme, Kural Sözdiziminin çok önemli bir özelliğidir. Belirginlik, hangi kuralın önce ateşleneceğine karar vermek için çatışma çözme stratejisi tarafından kullanılır. Varsayılan olarak, ana kriter budur.
Atış kurallarının sırasını tanımlamak için çıkıntıyı kullanabiliriz. Salience'ın bir özniteliği vardır ve bir dizi int türü döndüren herhangi bir ifadeyi alır (hem pozitif hem de negatif sayılar geçerlidir). Değer ne kadar yüksekse, uyuşmazlık çözme stratejisi tarafından bir kuralın tetiklenme olasılığı o kadar yüksektir.
salience ($account.balance * 5)
Varsayılan belirginlik değeri 0'dır. Yalnızca bazı kurallara belirginlik değerleri atarken bunu aklımızda tutmalıyız.
Kural Sözdiziminde birçok başka özellik / parametre vardır, ancak burada yalnızca önemli olanları ele aldık.
Kural Sonuç Anahtar Kelimeleri
Kural Sonucu Anahtar Kelimeler, "then"Kuralın bir parçası.
Modify - Gerçeğin öznitelikleri, then Kuralın bir parçası.
Insert - Bazı koşullara bağlı olarak, eğer doğruysa, Kural Motorunun mevcut oturumuna yeni bir olgu eklenebilir.
Retract - Bir Kuralda belirli bir koşul doğruysa ve bu gerçeğe göre başka bir şey yapmak istemiyorsanız, belirli gerçeği Kural Motorundan geri çekebilirsiniz.
Note- Bir kural sonucu içinde koşullu bir mantığa (eğer ifadeler) sahip olmak çok kötü bir uygulama olarak kabul edilir. Çoğu zaman yeni bir kural oluşturulmalıdır.