Zen*_*nil 7 rule-engine drools
这就是我想做的事情.
我想把"规则"放在数据库表中.这有点像drools xls决策表格式,除了所有规则都是表格中的行.这样我就可以轻松修改规则.我需要把它放在一个表而不是xls中,因为我的规则可能经常变化.这可能与流口水有关吗?我是否可以使用从DB(而不是DRL或xls文件)检索的规则构建知识库,并且每次规则更改都可以从头开始重建知识库(或者可能只是知识库的一部分,实际上只更新那些已更改的规则..)
这取决于你想要的规则.如果您有许多具有相同结构的规则,并且只根据某些"参数"而有所不同,那么数据库支持的方法是有意义的.在这种情况下,您可以编写单个通用规则,并使用数据库存储所有适用的组合.例如,假设您有一个规则来计算订单的每个国家/地区的运费,例如
rule "Shipping rates to France"
when
$order : Order(country == 'fr')
then
$order.setShippingRate(10.0);
update(order);
end
// Similar rules for other countries…
Run Code Online (Sandbox Code Playgroud)
您可以从数据库中替换这些规则数据,其中每个规则CountryShippingRate指定一个国家/地区的费率.然后CountryShippingRate在规则会话中将所有行作为事实对象插入,并将单个规则插入,例如:
rule "Shipping rates"
when
$order : Order($country : country)
CountryShippingRate($rate : rate, country == $country)
then
$order.setShippingRate($rate);
update(order);
end
Run Code Online (Sandbox Code Playgroud)
实际上,事实证明,许多决策表类型规则都可以通过这种方式重写.
| 归档时间: |
|
| 查看次数: |
3566 次 |
| 最近记录: |