Drools5.0.1使用excel实例

该博客介绍了如何在Drools 5.0.1中利用Excel文件创建决策表。通过提供一个包含`excelDrools.drt`、`excelDrools.xls`(决策表)、`ExcelDroolsUtil.java`(执行类)和`SysConfig.properties`(配置文件)的示例,作者展示了如何将规则以Excel形式进行管理和执行。读者可以下载相关资源并运行示例代码,以理解和学习Drools 5.0.1的这一特性。
摘要由CSDN通过智能技术生成

本文中所有文件在同一Package下:

excelDrools.drt//规则编译模板

template header
space
chageNum
gainFlag
MaxNum
from
remark

package com.cheng_xy.drools.excel.util

import com.cheng_xy.drools.excel.bean.ExcelDrollsInputParam;
import com.cheng_xy.drools.excel.bean.ExcelDroolsOutputParam;

global ExcelDroolsOutputParam output;

template "Excel规则模板"

rule " Drools_@{remark}"
	when
		ExcelDrollsInputParam(space == "@{space}",starting  matches "@{from}",betweenNum <= @{MaxNum})
	then
	 output.setChageNum("@{chageNum}");
	 output.setGainFlag("@{gainFlag}");
	 output.setRemark("==说明==" + "@{remark}");
end

end template

excelDrools.drt//简单描述

1 template header
2 space
3 chageNum
4 gainFlag
5 MaxNum
6 from
7 remark
8 
9 package com.cheng_xy.drools.excel.util
10 
11 import com.cheng_xy.drools.excel.bean.ExcelDrollsInputParam;
12 import com.cheng_xy.drools.excel.bean.ExcelDroolsOutputParam;
13 
14 global ExcelDroolsOutputParam output;
15 
16 template "Excel规则模板"
17 
18 rule " Drools_@{remark}"
19 	when
20 		ExcelDrollsInputParam(space == "@{space}",starting  matches "@{from}",betweenNum <= @{MaxNum})
21 	then
22 	 output.setChageNum("@{chageNum}");
23 	 output.setGainFlag("@{gainFlag}");
24 	 output.setRemark("==说明==" + "@{remark}");
25 end
26 
27 end template

第1行:所有规则模板以template header开始。
第2-7行:在标题之后是按照它们在excel表中数据顺序排列的列名。
第8行:空行表示excel数据中列定义的结束。
第9-15行:标准规则标题文本。这是DRL的标准规则,将出现在生成的DRL的顶部。将package语句和任何导入以及全局和函数定义放入本节。
第9行:package:对一个规则文件而言,package是必须定义的,必须放在规则文件第一行。特别的是,package的名字是随意的,不必必须对应物理路径,跟java的package的概念不同,
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 Drools 使用实例,假设我们有一个规则:如果购买金额大于 1000 元,则享受 10% 的折扣,否则不享受折扣。 1. 创建一个规则文件,例如 `discount.drl`: ``` package com.example.rules import com.example.model.Order rule "discount rule" when $order : Order(amount > 1000) then $order.setDiscount(0.1); update($order); end ``` 2. 创建一个订单类 `Order.java`: ``` package com.example.model; public class Order { private int amount; private double discount; public Order(int amount) { this.amount = amount; this.discount = 0; } public int getAmount() { return amount; } public void setAmount(int amount) { this.amount = amount; } public double getDiscount() { return discount; } public void setDiscount(double discount) { this.discount = discount; } } ``` 3. 创建一个规则引擎并加载规则文件: ``` KieServices ks = KieServices.Factory.get(); KieContainer kContainer = ks.getKieClasspathContainer(); KieSession kSession = kContainer.newKieSession("discountKS"); Order order1 = new Order(800); Order order2 = new Order(1200); kSession.insert(order1); kSession.insert(order2); kSession.fireAllRules(); ``` 4. 运行程序,输出订单的折扣信息: ``` System.out.println("order1 discount: " + order1.getDiscount()); System.out.println("order2 discount: " + order2.getDiscount()); ``` 输出结果为: ``` order1 discount: 0.0 order2 discount: 0.1 ``` 可以看到,第一个订单金额不足 1000 元,没有享受折扣;第二个订单金额超过 1000 元,享受了 10% 的折扣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值