1

我正在使用 kie 工作台。当从引导决策表引导规则 Tamplet创建规则时。它抛出错误“变量的重复声明”。但是,如果使用 DRL 文件创建相同的规则,它就可以正常工作。

规则.drl

package in.drooltest.test2;
import in.drooltest.coupon.model.Order;

rule "rulesdrl22_0"
    dialect "mvel"
    when
        ooorrr : Order( customerId == 1 )
    then
        ooorrr.setAmount( 232323232 );
end 

在java项目中调用它。

KieServices kieServices = KieServices.Factory.get();
ReleaseId releaseId = kieServices.newReleaseId("in.drooltest", "test2", "1.0");
KieContainer kieContainer = kieServices.newKieContainer(releaseId);
KieScanner kScanner = kieServices.newKieScanner(kieContainer);
kScanner.start( 10000L );


KieSession kSession = kieContainer.newKieSession();
Order order = new Order();
order.setCustomerId(100000000);
kSession.insert(order);

kSession.fireAllRules();
kSession.dispose();

该规则是从引导决策模板生成的。它引发运行时错误..无法构建 KieBaseModel:defaultKieBase [4,0]: Duplicate rule name: rulesdrl22_0 Duplicate declaration for variable 'ooorrr'

但是在删除模板并将其粘贴到 rules.drl 文件后,它按预期工作。

尝试删除 jar 文件并重新生成它,但没有帮助。

4

0 回答 0