Java 简单的Drools 6和Spring示例

Java 简单的Drools 6和Spring示例,java,spring,drools,Java,Spring,Drools,我想在我的项目中使用drools,但尽可能保持通用性。我想做的是,给定一个drools文件(它的路径)和一组对象,我想根据给定对象列表执行给定文件中的所有规则。到目前为止,我看到的所有示例都在某些配置中硬编码了drool的文件,有没有办法使其更通用?这适用于各种资源,而不仅仅是DRL KieServices kieServices = KieServices.Factory.get(); KieFileSystem kfs = kieServices.newKieFileSystem(); Fi

我想在我的项目中使用drools,但尽可能保持通用性。我想做的是,给定一个drools文件(它的路径)和一组对象,我想根据给定对象列表执行给定文件中的所有规则。到目前为止,我看到的所有示例都在某些配置中硬编码了drool的文件,有没有办法使其更通用?

这适用于各种资源,而不仅仅是DRL

KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
FileInputStream fis = new FileInputStream( "simple/simple.drl" );
kfs.write( "src/main/resources/simple.drl", 
           kieServices.getResources().newInputStreamResource( fis ) );
KieBuilder kieBuilder = kieServices.newKieBuilder( kfs ).buildAll();
// check there have been no errors for rule setup
Results results = kieBuilder.getResults();
if( results.hasMessages( Message.Level.ERROR ) ){
    System.out.println( results.getMessages() );
    throw new IllegalStateException( "### errors ###" );
}
KieContainer kieContainer =
    kieServices.newKieContainer( kieBuilder.getKieModule().getReleaseId() );
KieSession kieSession = kieContainer.newKieSession();

您可以指向某个目录,列出它,然后添加它:
KnowledgeBuilder kbuilder=KnowledgeBuilderFactory.newKnowledgeBuilder();对于(字符串drlFileRules:getDroolsFileRules()){kbuilder.add(ResourceFactory.newFileResource(drlFileRules),ResourceType.DRL);}
我认为
KnowledgeBuilder
很快就会被弃用,取而代之的是KIE Classes您现在如何加载drool文件?我一直在寻找加载drool文件的方法,但到目前为止还没有luckLook标准示例:以下两行插入并计算特定对象:
kieSession.insert(事实);kieSession.fireAllRules()
对于无状态会话,请使用以下代码
StatelessKieSession kSession=kieContainer.newStatelessKieSession();执行(事实)