我正在使用 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 文件并重新生成它,但没有帮助。