Drools决策表的使用

简介: Drools决策表的使用

##Drools 决策表的使用

##决策表简介

引用官方的话


决策表是一个“精确而紧凑的”表示条件逻辑的方式,非常适合商业级别的规则。

目前决策表支持xls格式和csv格式。决策表与现有的drools drl文件使用可以无缝替换。


##什么时候使用决策表


规则能够被表达为模板+数据的格式,考虑使用决策表

很少量的规则不建议使用决策表

不是遵循一组规则模板的规则也不建议使用决策表

##决策表格式


image.png

image.pngRuleSet 和 drl 文件中的 package 是一样


RuleSet 和 drl 文件中的 package 是一样

Sequential 与 drl 文件中的属性优先级是一样的,只是这边为 true

Functions 与 drl 文件中的 function 是一样的

RuleTable 表示 rule name,必添

CONDITION ACTION 表示 rule 中的 LHS RHS 部分 至少要有一个

从CONDITION 下面两行则表示 LHS 部分 第三行则为注释行,不计为规则部分,从第

四行开始,每一行表示一条规则。

$param 表示占位符会替换下面每一行的值,生成一条规则。

决策表的语法


image.png

image.pngimage.png

决策表编译

首先需要引入maven的pom依赖:

<dependency>
  <groupId>org.drools</groupId>
  <artifactId>drools-decisiontables</artifactId>
  <version>7.0.0.Final</version>
</dependency>

可以通过以下两个方式来对决策表进行解析生成drl文件:

@Test
    public void checkDrl() throws FileNotFoundException {
        File file = new File("E:\\GitHub\\respo\\drools-lesson\\src\\main\\resources\\decision.xls");
        InputStream is = new FileInputStream(file);
        SpreadsheetCompiler compiler = new SpreadsheetCompiler();
        String drl = compiler.compile(is, InputType.XLS);
        System.out.println(drl);
    }
    @Test
    public void checkDrl2() throws FileNotFoundException {
        SpreadsheetCompiler compiler = new SpreadsheetCompiler();
        String drl = compiler.compile(ResourceFactory.newClassPathResource("com/decision/decision.xls"), InputType.XLS);
        System.out.println(drl);
    }

可以通过查看生成的drl内容确定决策表的语法及业务是预期的。


##与drl文件方式无缝结合

像配置drl文件格式的规则一样,我们要执行一个xls决策表操作非常简单,只用把drl文件替换为对应的xls文件即可。


具体配置如下:

kmodule.xml中配置xls所在的resource目录对应的session:


<kbase name="decision-kbase" packages="com.decision">

<ksession name="decision-rules"/>

</kbase>

1

2

3

同时将决策表的xls文件放置在com.decision包中,为了减少不必要的麻烦,决策表中定义的RuleSet值也应该是com.decision。


同样的,在代码中只需像正常调用代码一样获取KieSession进行后续业务处理即可:

@Test
    public void testDecision(){
        KieSession kieSession = this.getKieSessionBySessionName("decision-rules");
        kieSession.fireAllRules();
        kieSession.dispose();
    }

打印的结果与drl文件无二。

Drools技术视频

CSDN学院:《Drools7 规则引擎视频教程

CSDN学院:《Drools7系列优惠套餐》

CSDN学院:《Drools7规则引擎进阶教程》

CSDN学院:《Drools7规则引擎入门教程》

目录
相关文章
|
算法 IDE Java
《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
《Drools7.0.0.Final规则引擎教程》第1章 Drools简介
1302 0
|
6月前
|
数据可视化 Java
探索Drools:Java世界的规则引擎
探索Drools:Java世界的规则引擎
397 1
|
算法 Java
3、Drools规则引擎-为什么选择Drools
Drools 是用 Java 语言编写的具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎 ,其基于CHARLES FORGY’S的RETE算法 符合业内标准,速度快且效率高。 业务分析师人员或审核人员可以利用它轻松查看业务规则, 检验已编码的规则执行了所需的业务规则。
273 0
|
Java Spring
4、Drools规则引擎-Drools入门案例
Drools的实现并不难,关键是了解他的语法即可
293 0
4、Drools规则引擎-Drools入门案例
|
Java 应用服务中间件 Maven
【Java】-一文带你入门Drools规则引擎
【Java】-一文带你入门Drools规则引擎
1391 0
【Java】-一文带你入门Drools规则引擎
|
存储 Java API
【java规则引擎】drools6.5.0中kie的概论
什么是KIE? KIE是jBoss里面一些相关项目的统称,下图就是KIE代表的一些项目,其中我们比较熟悉的就有jBPM和Drools。 这些项目都有一定的关联关系,并且存在一些通用的API,比如说涉及到构建(building)、部署(deploying)和加载 (loading)等方面的,这些API就都会以KIE作为前缀来表示这些是通用的API。
2423 0
|
算法 IDE Java
Drools简介
Drools简介
1153 0
|
自然语言处理
Drools使用dsl语言
Drools使用dsl语言
564 0
|
Java API Maven
《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
319 0
《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
Drools规则引擎之决策表从入门到精通
Drools规则引擎之决策表从入门到精通
704 0