已弃用的drools代码到6.2版

我有一个旧的和已删除的drools代码,这段代码可以读取容器外的规则文件(drl),并且可以使用任何Value Object和任何类。

CommandExecutor ksession; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); String file = System.getenv("DOMAIN_HOME")+"/mydrls/business.drl"; kbuilder.add(ResourceFactory.newFileResource(file), ResourceType.DRL); KnowledgeBase kbase = kbuilder.newKnowledgeBase(); ksession = kbase.newStatelessKnowledgeSession(); DataTest data = new DataTest(); data.setAge(25); List cmds = new ArrayList(); cmds.add( CommandFactory.newInsert( data ) ); ksession.execute(CommandFactory.newBatchExecution( cmds )); 

我怎么能用drools版本6.2做同样的事情?

您可以使用KieHelper类简化Laune的代码:

 KieHelper kieHelper = new KieHelper(); kieHelper.addResource(ResourceFactory.newInputStreamResource(new FileInputStream( "simple/simple.drl" )), ResourceType.DRL); Results results = kieHelper.verify(); if( results.hasMessages( Message.Level.ERROR ) ){ System.out.println( results.getMessages() ); throw new IllegalStateException( "### errors ###" ); } StatelessKieSession kieSession = kieHelper.build().newStatelessKieSession(); 

希望能帮助到你。

尝试这个:

 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(); 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(); StatelessKieSession kieSession = kieContainer.newStatelessKieSession(); }