#spring-boot #drools #kie #drools-fusion
#spring-boot #drools #kie #drools-слияние
Вопрос:
В зависимости от расстояния и ночной доплаты у меня есть правила для оплаты проезда на такси.
Таблица решений excel sheet: rule_fare в пакете com.rules
Факты :
class TaxiRide {private Boolean isNightSurcharge;private Integer distanceInMile;}
class Fare {private Integer nightSurcharge;private Integer rideFare;}
Теперь, если одно правило выполняется сверху, тогда должно срабатывать только второе правило из таблицы решений снизу.
В зависимости от условия мы предоставим скидку клиенту.
Таблица решений excel sheet: rule_discount в пакете com.rules
Факт :
class TaxiRide {private Boolean isNightSurcharge;private Integer distanceInMile;}
class Discount {private Boolean isDiscount;Integer discount;}
kmodule.xml
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<kbase name="rules_xls" packages="com.rules">
<ksession name="rulesSession" />
</kbase>
</kmodule>
Фрагмент кода :
KieSession kieSession = KieServices.Factory.get().getKieClasspathContainer().newKieSession("rulesSession");
FactHandle rideFactHandle = kieSession.insert(taxiRide);
FactHandle discountFactHandle = kieSession.insert(discount);
Integer count = kieSession.fireAllRules();
получение ошибки :
o.d.c.kie.builder.impl.KieProject : Unable to build KieBaseModel:rules_xls
[10,16]: [ERR 102] Line 10:16 mismatched input '>=' in rule "Discount 1"
[21,16]: [ERR 102] Line 21:16 mismatched input '>=' in rule "Discount 2"
[32,16]: [ERR 102] Line 32:16 mismatched input '>' in rule "Discount 3"
[0,0]: Parser returned a null Package
Комментарии:
1. Очевидным ответом было бы запустить правила из таблицы решений 1, собрать результаты, а затем запустить правила из таблицы решений 2 (передав результаты таблицы 1). По какой-то причине это не работает для вас?
2. @Roddy of the Frozen Peas Спасибо за комментарий. Я пытаюсь выполнить правила из обеих таблиц решений только с одним ksession. Если я сделаю так, как вы предлагаете, мне придется использовать два разных сеанса, верно? Я новичок в drool, поэтому не имею большого представления о внутреннем механизме. Можем ли мы сделать это за один сеанс?
3. Почему так важно, сколько сеансов вы используете?
4. у вас есть какие-либо идеи по поводу вышеуказанной ошибки?
5. Теперь ваш вопрос касается этой синтаксической ошибки, а не о запуске нескольких таблиц решений??