Drools规则引擎详解-常用的drl实例
package droolsDemo
//说明:每个 drl 都必须声明一个包名,这个包名与 Java 里面的不同,它不需要与文件夹的层次结构一致,
//主要用于可以根据kmodule.xml中不同的package属性来指定加载哪个.drl文件,
//packages="org.some.pkg"表示ksession2只会加载org.some.pkg下的规则文件,如果没写,则默认加载所有的规则文件。 //导入实体类
import com.qianxin.rulesengine.drools.User
import com.qianxin.rulesengine.drools.Pet
import com.qianxin.rulesengine.drools.Dog
import com.qianxin.rulesengine.drools.BoolTest rule "multiple condition"
// salience值越大越先匹配
salience 1
when
//多个条件测试:user中age在15-30 60-90之间并且 根据user的pet属性的color来处理不同的逻辑,
$user : User((age>15 && age<30)||(age>60 && age<90))
$pet : Pet() from $user.pet
if($pet.getColor()=="black") do[black]
// do 关键结束后,后续逻辑继续,break 关键字结束后结束程序
if($pet.getColor()=="white") break[white]
then
System.out.print("测试结束");
then [black]
System.out.println("pet color is balck");
then [white]
System.out.print("pet color is white");
end rule "BigInteger test"
salience 20
when
// 可以用BigInteger来解决大数(超过64位)的比较,支持直接用>= == =< 符号直接比较,十分方便
// 开发中可以用来解决IPv6 的比较
$dog : Dog(age=="21262780079976241822035969236715638783")
then
System.out.println("我等于21262780079976241822035969236715638783");
end
rule "string compare"
salience -20
when
/*字符串的数字也是可以比较的*/
$user : User((age>"15" && age<"40")||(age>"60"))
then
System.out.println("我的优先级是 -20");
//此规则匹配后不再匹配其他规则
drools.halt();
end
rule "test bool "
salience 100
when
//即使value为boolean类型,也可以这样比较
$bool : BoolTest(value=="true")
then
System.out.println("I am true");
end
rule "test contains and not contains"
salience 200
when
//contains 以及not contains 可以测试集合中内容
$user : User(set contains "360")
then
System.out.println("测试表明包含 360");
end rule "test not in"
salience 100
when
//测试not in 年龄不在15-30 60-90 之间的符合
$user : User(!((age>15 && age<30)||(age>60 && age<90)))
then
System.out.print("age不在 15-30,60-90之间");
end rule "number test"
when
$user : User(age>15 && age<60)
then
System.out.println("年龄符合条件");
end rule "String test"
when
$pet : Pet(name=="cat")
then
System.out.println("宠物名称符合条件"); end
更详细的语法请参考:http://www.1994july.club/seo/
Drools规则引擎详解-常用的drl实例的更多相关文章
- Drools 规则引擎应用
规则引擎-drools 1 .场景 1.1需求 商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分 .... ...
- Drools 规则引擎应用 看这一篇就够了
1 .场景 1.1需求 商城系统消费赠送积分 100元以下, 不加分 100元-500元 加100分 500元-1000元 加500分 1000元 以上 加1000分 ...... 1.2传统做法 1 ...
- Drools规则引擎入门指南(一)
最近项目需要增加风控系统,在经过一番调研以后决定使用Drools规则引擎.因为项目是基于SpringCloud的架构,所以此次学习使用了SpringBoot2.0版本结合Drools7.14.0.Fi ...
- Drools规则引擎实践直白总结
目录 1. 创建Drools环境(引入Drools相关依赖包.现在都流行spring boot,故最简单有效的依赖才是最好的,kie-spring内部自行依赖了drools相关核心的依赖包) 2. 了 ...
- MySQL数据库的各种存储引擎详解
原文来自:MySQL数据库的各种存储引擎详解 MySQL有多种存储引擎,每种存储引擎有各自的优缺点,大家可以择优选择使用: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB ...
- drools规则引擎初探
https://www.cnblogs.com/yuebintse/p/5767996.html 1.drools是什么 Drools是为Java量身定制的基于Charles Forgy的RETE算 ...
- String 字符串详解 / 常用API
String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 ...
- Drools 规则引擎环境搭建
一.关于 drools 规则引擎 前面写过一篇 Drools 规则引擎相关的文章,这篇文章主要记录一下规则引擎的环境搭建和简单示例.不熟悉 drools 的朋友可以看看这篇文章: 自己写个 Drool ...
- Drools规则引擎-判断集合(List)是否包含集合
问题场景 在使用Drools规则引擎时,有朋友会遇到这样的问题,就是在when部分判断的两个参数都是集合类型,比如两个List,此时要判断一个集合是否包含另外一个集合的内容. 拿一个具体的例子来说明, ...
随机推荐
- C语言:大数求和
点击获取题目 1410: [蓝桥杯]高精度加法 时间限制: 1 Sec 内存限制: 256 MB提交: 28 解决: 20[状态] [提交] [命题人:外部导入] 题目描述 输入两个整数a和b,输 ...
- Sqlserver 增删改查----增
注意我说的常见查询,可不是简单到一个表得增删改查,做过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操作的. 下面我就说一下我在实际开发中经常 ...
- 查询内核符号链接的信息的API
NtOpenSymbolicLinkObject和NtQuerySymbolicLinkObject获取指定符号链接的信息 版权声明:本文为博主原创文章,未经博主允许不得转载.
- ComboPooledDataSource连接mysql
Dbutils学习(介绍和入门) 一:Dbutils是什么?(当我们很难理解一个东西的官方解释的时候,就让我们记住它的作用) Dbutils:主要是封装了JDBC的代码,简化dao层 ...
- MySQL硬核干货:从磁盘读取数据页到缓冲池时,免费链表有什么用?
1.数据库启动的时候,是如何初始化Buffer Pool的? 现在我们已经搞明白一件事儿了,那就是数据库的Buffer Pool到底长成个什么样,大家想必都是理解了 其实说白了,里面就是会包含很多个缓 ...
- centos6-7 yum安装php的方法
1.检查当前安装的PHP包 yum list installed | grep php 如果有安装的PHP包,先删除他们 yum remove php.x86_64 php-cli.x86_64 ph ...
- 用Pandas Dataframe来架构起金融股票数据的内部形态
2. 金融股票数据的另一个形态,怎样在业务内部流动,同时怎样避免错误 前一篇讲解了股票的原始状态,那麽在业务过程中,数据会变成怎样的形态,来完成众多奇奇怪怪的业务呢,以下将会解答. 首先,任何股票都有 ...
- dac FDMemTable
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- 《打造扛得住的MySQL数据库架构》第3章 MySQL基准测试
3-1 什么是基准测试 测量系统性能,优化是否有效?MySQL基准测试. 定义:基准测试是一种测量和评估软件性能指标的活动,用于建立某个时刻的性能基准,以便当系统发生软硬件 变化时重新进行基准测试以评 ...
- SQL基础教程(第2版)第1章 数据库和SQL:练习题
CREATE TABLE Addressbook ( regist_no INTEGER NOT NULL, name ) NOT NULL, address ) NOT NULL, tel_no ) ...