这就是我想做的事情。
我想把“规则”放在数据库表中。这有点像 drools xls 决策表格式,只是所有规则都是表中的行。这样我可以轻松地修改规则。我需要把它放在一个表格而不是 xls 中,因为我的规则可能会经常改变。流口水可以吗?我是否可以使用从数据库(而不是 DRL 或 xls 文件)检索的规则构建知识库,并且每次规则更改时,我都可以从头开始重建知识库(或者可能只是知识库的一部分,基本上只更新那些已更改的规则..)
这就是我想做的事情。
我想把“规则”放在数据库表中。这有点像 drools xls 决策表格式,只是所有规则都是表中的行。这样我可以轻松地修改规则。我需要把它放在一个表格而不是 xls 中,因为我的规则可能会经常改变。流口水可以吗?我是否可以使用从数据库(而不是 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…
您可以从数据库中替换这些规则数据,其中每个数据都CountryShippingRate
指定一个国家/地区的费率。然后在规则会话中插入所有CountryShippingRate
行作为事实对象,并插入一条规则,例如:
rule "Shipping rates"
when
$order : Order($country : country)
CountryShippingRate($rate : rate, country == $country)
then
$order.setShippingRate($rate);
update(order);
end
在实践中,事实证明许多决策表类型的规则都可以通过这种方式重写。