gpt4 book ai didi

error-handling - 如何获得KieSession构建的结果(即规则编译器错误)?

转载 作者:行者123 更新时间:2023-12-02 10:46:11 26 4
gpt4 key购买 nike

我正在使用以下代码通过简单的测试规则集来测试DROOLS 7.0:

KieContainer kc = KieServices.Factory.get().getKieClasspathContainer();
KieSession ksession = kc.newKieSession("DroolsTestKS");
...

即使规则.drl文件中有错误,也将返回KieSession实例,并且不会引发任何异常。我想检查规则编译的结果。
Drools引用资料(请参阅4.2.2.4)说,可以通过以下方式获得构建结果:
KieServices kieServices = KieServices.Factory.get();
KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();
assertEquals( 0, kieBuilder.getResults().getMessages( Message.Level.ERROR ).size() );

其中kfs是一个KieFileSystem实例,但是手册前几页中有关如何构建这样的KieFileSystem的示例要复杂得多,恕我直言。
用我在本文开头显示的简单两行代码创建KieSession时,是否有办法获得Session buid结果(即访问KieBuilder)?

最佳答案

我正在回答我的问题,因为我刚刚找到了解决方案:

KieContainer kc = KieServices.Factory.get().getKieClasspathContainer();
Results rs = kc.verify("KBase");
if (rs.hasMessages(Level.ERROR)) {
System.out.println("ERRORI DROOLS: " + rs.getMessages());
... // handle this
}

我想知道通过此验证,实际规则编译是否执行了两次……但是无论如何,此方法似乎可行。

关于error-handling - 如何获得KieSession构建的结果(即规则编译器错误)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51028277/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com