在drools中维护单独的规则文件

时间:2014-07-01 07:30:12

标签: java drools

我有一个用例,我需要为单独的实体维护单独的drl文件 例如,
entity 1有一组facts,应该由drl1来驱动 entity 2有一组facts,应该由drl2

驱动

我该如何实现?

  1. 将drl和相应的事实加载到单独的知识库和会话中
  2. 在单个会话中加载所有drl&fact和事实。
  3. 我不知道如何实现2

1 个答案:

答案 0 :(得分:0)

如果您按照下面给出的方式构建知识库,则可以重复向KieFileSystem添加另一个FileInputStream。

KieServices kieServices = KieServices.Factory.get();
KieFileSystem kfs = kieServices.newKieFileSystem();
// repeat
FileInputStream fis = new FileInputStream( "simple/simple.drl" );
kfs.write( "src/main/resources/simple.drl",
                kieServices.getResources().newInputStreamResource( fis ) );
// end
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 = kieContainer.newKieSession();