在流口水中维护单独的规则文件 [英] Maintain separate rule files in drools

查看:105
本文介绍了在流口水中维护单独的规则文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个用例,需要为单独的实体维护单独的 drl 文件。

例如,

实体1 有一组事实,应由 drl1

实体2 有一组事实,应由<$驱动c $ c> drl2

I have a use-case where I need to maintain separate drl file for separate entities.
For example,
entity 1 has a set of facts which should be driven by drl1
entity 2 has a set of facts which should be driven by drl2

我应该如何实现呢?


  1. 在单独的知识库和会话中加载drl和相应的事实

  2. 加载所有drl的事实在单个会话中。

我不知道如何实现2

推荐答案

如果按照下面的说明构建知识库,则可以重复向KieFileSystem添加另一个FileInputStream。

If you build your Knowledge Base along the lines given below, you can repeat adding another FileInputStream to the KieFileSystem.

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();

这篇关于在流口水中维护单独的规则文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆