如何在没有eclipse或任何其他IDE的情况下配置drools

时间:2016-09-15 06:54:11

标签: java drools rule-engine

我正在举例说明如何在eclipse或其他IDE中安装drools插件。但是如何在不使用像eclipse这样的IDE的情况下配置drools。

2 个答案:

答案 0 :(得分:1)

  1. 创建Maven项目(使用您喜欢的IDE或命令行)

  2. 将Drools编译器依赖项和一些日志记录兼容库添加到您的pom.xml(主Maven项目文件):

    <dependencies>
        <dependency>
            <groupId>org.drools</groupId>
            <artifactId>drools-compiler</artifactId>
            <version>6.3.0.Final</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.1.5</version>
       </dependency>
    </dependencies>
    
  3. 使用以下内容创建src / main / resources / META-INF / kmodule.xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule" />
    
  4. 创建您的DRL文件,如src / main / resources / myrules.drl

    rule "hello"
        when
            $name : String()
        then
            System.out.println("Hello "+$name);      
    end
    
  5. 创建基于KieService的代码:

    import org.kie.api.KieServices;
    import org.kie.api.runtime.KieContainer;
    import org.kie.api.runtime.KieSession;
    
    public class Main {
    
        public static void main(String[] args) {
    
            KieServices ks = KieServices.Factory.get();
            KieContainer kcontainer = ks.getKieClasspathContainer();                
            KieSession ksession = kcontainer.newKieSession();
    
            String name="Xeetu";      
            ksession.insert(name);
    
            ksession.fireAllRules();                
        }
    }
    

答案 1 :(得分:0)

您可以使用Drools API编译DRL和其他Drools格式以进行规则创作,您可以使用已编译的KieBase来创建执行规则的会话。下面是一个例子,但你必须出于各种原因进行调整。

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();
kieSession = kieBase.newKieSession();
// ... insert facts ...
kieSession.fireAllRules();

配置KieBase和/或KieSession可能需要额外的调用。有关详细信息,请参阅API和Drools文档。