Drools决策表的使用

##Drools 决策表的使用
##决策表简介
引用官方的话

决策表是一个“精确而紧凑的”表示条件逻辑的方式,非常适合商业级别的规则。
目前决策表支持xls格式和csv格式。决策表与现有的drools drl文件使用可以无缝替换。

##什么时候使用决策表

  • 规则能够被表达为模板+数据的格式,考虑使用决策表
  • 很少量的规则不建议使用决策表
  • 不是遵循一组规则模板的规则也不建议使用决策表
    ##决策表格式

这里写图片描述

RuleSet 和 drl 文件中的 package 是一样

  • RuleSet 和 drl 文件中的 package 是一样
  • Sequential 与 drl 文件中的属性优先级是一样的,只是这边为 true
  • Functions 与 drl 文件中的 function 是一样的
  • RuleTable 表示 rule name,必添
  • CONDITION ACTION 表示 rule 中的 LHS RHS 部分 至少要有一个
  • 从CONDITION 下面两行则表示 LHS 部分 第三行则为注释行,不计为规则部分,从第
    四行开始,每一行表示一条规则。
  • $param 表示占位符会替换下面每一行的值,生成一条规则。

决策表的语法

这里写图片描述
这里写图片描述

决策表编译

首先需要引入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>

同时将决策表的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规则引擎入门教程》


程序新视界

公众号“程序新视界”,一个让你软实力、硬技术同步提升的平台

csdn-微信公众号

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序新视界

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值