Java Drools 知识库已弃用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23784652/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Drools KnowledgeBase Deprecated
提问by Jacob Schoen
I am integrating the Drools Rules engine into my application. 99% of the examples I have found to get started look like:
我正在将 Drools 规则引擎集成到我的应用程序中。我发现 99% 的入门示例如下所示:
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add( ResourceFactory.newUrlResource( url ),
ResourceType.DRL );
if ( kbuilder.hasErrors() ) {
System.err.println( builder.getErrors().toString() );
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages( builder.getKnowledgePackages() );
StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession();
ksession.insert( new Fibonacci( 10 ) );
ksession.fireAllRules();
ksession.dispose();
I have something similar working, but my question is that KnowledgeBase
is marked as deprecated, which is a red flag to me that I am doing it wrong. Now KnowledgeBaseFactory.newKnowledgeBase()
is not marked deprecated, but it also returns a KnowledgeBase
type.
我有类似的工作,但我的问题是KnowledgeBase
被标记为已弃用,这对我来说是一个危险信号,我做错了。现在KnowledgeBaseFactory.newKnowledgeBase()
没有被标记为弃用,但它也返回一个KnowledgeBase
类型。
So what should I be using since KnowledgeBase is deprecated?
那么,由于不推荐使用知识库,我应该使用什么?
采纳答案by laune
This is the code I've found to work with 6.x:
这是我发现适用于 6.x 的代码:
KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
FileInputStream fis = new FileInputStream( pathToSomeDrl );
kfs.write( "src/main/resources/simple.drl",
kieServices.getResources().newInputStreamResource( fis ) );
KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();
Results results = kieBuilder.getResults();
if( results.hasMessages( Message.Level.ERROR ) ){
System.out.println( results.getMessages() );
throw new IllegalStateException( "### errors ###" );
}
KieContainer kieContainer =
kieServices.newKieContainer( kieServices.getRepository().getDefaultReleaseId() );
KieBase kieBase = kieContainer.getKieBase();
KieSession kieSession = kieContainer.newKieSession();
References to KnowledgeBase
have remained in the documentation, but it is indeed deprecated.
参考文献KnowledgeBase
保留在文档中,但它确实已被弃用。