Использование эксперта drools с динамическими таблицами решений - PullRequest
7 голосов
/ 15 июня 2010

Вот что я хотел сделать.

Я хотел поместить «правила» в таблицу базы данных. Это похоже на формат таблицы решений drools xls, за исключением того, что все правила будут строками в таблице. Таким образом, я могу легко изменить правила. Мне нужно поместить это в таблицу, а не в xls, потому что мои правила часто меняются. Это возможно с слюни? Могу ли я создать базу знаний с правилами, полученными из БД (вместо DRL или файла xls), и каждый раз, когда меняются правила, могу ли я перестраивать базу знаний с нуля (или, может быть, просто части базы знаний, по сути, обновлять только те правила, которые были изменены ..)

1 Ответ

6 голосов
/ 09 августа 2010

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

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

На практике оказывается, что множество правил типа таблиц решений можно переписатьвот так.

...