这取决于你想要什么样的规则。数据库支持的方法是有意义的,如果你有很多具有相同结构的规则,并且只根据某些“参数”而有所不同。在这种情况下,您可以编写单个通用规则,并使用数据库来存储所有适用的组合。例如,假设您有一个规则来计算每个国家/地区的运费,例如订单
rule "Shipping rates to France"
when
$order : Order(country == 'fr')
then
$order.setShippingRate(10.0);
update(order);
end
// Similar rules for other countries…
其中每个CountryShippingRate
指定一个国家的房价可能会取代从数据库中这些规则的数据。然后,你插入所有CountryShippingRate
行作为规则会话事实对象,单一规则,如:
rule "Shipping rates"
when
$order : Order($country : country)
CountryShippingRate($rate : rate, country == $country)
then
$order.setShippingRate($rate);
update(order);
end
在实践中,事实证明,很多的决策表型规则可以写成这样。
我希望我可以upvote 10次:) – 2011-06-30 04:27:59
@Peter Hilton请看看这个问题。谢谢 http://stackoverflow.com/questions/26322576/stop-rules-on-update-facts-drools – Kumar 2014-10-12 07:35:03