2010-06-14 13 views
7

Yapmak istediklerim.Drools uzmanını dinamik karar tablolarıyla birlikte kullanarak

"Kurallar" bir veritabanı tablosuna koymak istedim. Bu, tüm kuralların bir tablodaki satırlar olması haricinde, drools xls karar tablosu biçimine benzer. Bu şekilde kuralları kolayca değiştirebilirim. Bunu bir masaya koymam gerekiyor, xls değil çünkü kurallarım sık sık değişiyor olabilir. Bu droollerle mümkün mü? Bir DB'den (bir DRL veya bir xls dosyası yerine) alınan kurallarla bir bilgi bankası oluşturabilirim ve her zaman kural değişikliği, bilgi tabanını sıfırdan yeniden oluşturabilir (ya da belki sadece bilgi bankasının bazı bölümlerini, temelde yalnızca değiştirilen kuralları güncelleyebilir) ..)

cevap

6

Bu, göz önünde bulundurduğunuz kurallara bağlıdır. Veri tabanı destekli bir yaklaşım, aynı yapıya sahip ve yalnızca belirli 'parametrelere' göre değişen birçok kurala sahipseniz anlamlıdır. Bu durumda, tek bir genel kural yazabilir ve geçerli olan tüm bileşimleri saklamak için veritabanını kullanabilirsiniz. Örneğin, ülke başına gönderim bedellerini hesaplamak için bir kuralınız olduğunu varsayalım. Örneğin; Her CountryShippingRate bir ülke için hızını belirler nerede

rule "Shipping rates to France" 
when 
    $order : Order(country == 'fr') 
then 
    $order.setShippingRate(10.0); 
    update(order); 
end 

// Similar rules for other countries… 

Sen veritabanından bu kurallar verilerini yerini alabilir. Sonra gibi aslında kural oturumda nesneler ve tek bir kural olarak CountryShippingRate tüm satırları, insert: Uygulamada

rule "Shipping rates" 
when 
    $order : Order($country : country) 
    CountryShippingRate($rate : rate, country == $country) 
then 
    $order.setShippingRate($rate); 
    update(order); 
end 

, bu karar tablosu tipi kuralları çok bu şekilde tekrar yazılabilir çıkıyor.

+1

Keşke 10 kez daha kazanabilirim :) –

+0

@Peter Hilton Lütfen bu soruya bakın. Teşekkürler http://stackoverflow.com/questions/26322576/stop-rules-on-update-facts-drools – Kumar

İlgili konular