Drools学习教程 - 1. 万年HelloWorld

Drools的规则引擎文件种类

  • drl/drls:最常见的格式,普通的决策文件
  • xls/xlsx:用于决策表

开始编写-drl文件

1. 先来创建一个规则文件:helloworld.drl


package hello.world
   rule "Hello-World"
      when
         eval(true);
      then
        System.out.println("HelloWorld");
   end

  • package:包,和java 的包一样,与kbase中的package一一对应
  • rule: 规则,一个规则文件中可以有多个规则 但是Id不能一致
  • import: 导入,和Java的包导入是一样
  • when: 和Java中的if一样的,用于判断
  • then: 当when中条件为真则会执行then
  • end:和rule一对,表示规则结束

2. 创建Drools配置文件:META-INF/kmodule.xml

drools会默认从META-INF下读取对应的kmodule.xml,来进行初始化drools

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
    <kbase name="rules" packages="hello.world">
        <ksession name="helloWorld"/>
    </kbase>
</kmodule>

3. 编写Java代码执行引擎

package cn.lonecloud.drools.chp1;

import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

public class HelloWorldMain {
    public static void main(String[] args) {
        //创建kieService
        KieServices kieServices = KieServices.Factory.get();
        //获取Kie容器
        KieContainer kieClasspathContainer = kieServices.getKieClasspathContainer();
        //从容器中获取ksession ->ksession里面的name
        KieSession helloWorld = kieClasspathContainer.newKieSession("helloWorld");
        //运行该kieSession下的所有规则
        int i = helloWorld.fireAllRules();
        System.out.println("一共运行了"+i+"条规则");
        helloWorld.dispose();
    }
}

  1. 运行结果:
HelloWorld

总结:

通过本次学习,从零开始学习drools,并对其基本概念进行了解

posted @ 2020-02-19 21:30  lonecloud  阅读(1145)  评论(0编辑  收藏  举报
我的博客即将同步至 OSCHINA 社区,这是我的 OSCHINA ID:lonecloud,邀请大家一同入驻:https://www.oschina.net/sharing-plan/apply