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