是否有任何快速方法以编程方式检查我们的Web应用程序中的drools库是否成功加载了DRL文件?顺便说一句,我正在使用流口水开发基于肥皂的Web服务。例如:列出特定时间存在于知识库中的所有规则名称,等等。 请帮忙。 这是我从centOS文件系统加载drl文件的工作:
String drlFile = "/tmp/conf/object.drl";
ks = KieServices.Factory.get();
KieFileSystem kfs = ks.newKieFileSystem();
FileInputStream fis = new FileInputStream( drlFile );
kfs.write("/Drools/Object.drl",ks.getResources().newInputStreamResource( fis ));
KieBuilder kieBuilder = ks.newKieBuilder( kfs ).buildAll();
答案 0 :(得分:0)
检测构建错误的最简单方法是从 buildAll() 的结果中提取消息。
kieBuilder.getResults().hasMessages(Message.Level.ERROR)
or
kieBuilder.getResults().getMessages()
作为旁注*
我有一个类似的问题,即 buildAll() 没有读取我在 kfs 中写入的文件。集合中没有包的情况相同。
为了解决这个问题,我必须向 inputStream 添加一个特定的资源类型。 例如
kfs.write("/Drools/Object.drl",ks.getResources().newInputStreamResource( fis ).setResourceType(ResourceType.DRL));
用于确定我一直使用的 ksession 中的包。
ksession.getKieBase().getKiePackages()
为了检测我的构建器知道并加载的文件,我使用了这个
((MemoryKieModule)kb.getKieModule()).getFileNames()