Это зависит от того, какие правила вы имеете в виду.Подход на основе базы данных имеет смысл, если у вас есть много правил, имеющих одинаковую структуру и изменяющихся только в зависимости от определенных «параметров».В этом случае вы можете написать одно общее правило и использовать базу данных для хранения всех применимых комбинаций.Например, предположим, что у вас есть правила для расчета стоимости доставки для каждой страны, например,
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
На практике оказывается, что множество правил типа таблиц решений можно переписатьвот так.