简单的 Drools 6 和 Spring 示例

Simple Drools 6 and Spring Example

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

这适用于各种资源,而不仅仅是 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();