这就是我想要做的。

我想在数据库表中放入“规则”。这类似于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行插入为规则 session 中的事实对象,并插入一条规则,例如:
rule "Shipping rates"
when
    $order : Order($country : country)
    CountryShippingRate($rate : rate, country == $country)
then
    $order.setShippingRate($rate);
    update(order);
end

实际上,事实证明,可以用这种方式重写许多决策表类型规则。

09-27 20:24