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,此时要判断一个集合是否包含另外一个集合的内容. 拿一个具体的例子来说明, ...
随机推荐
- ssm搭建,maven,javaConfig
基于java配置SSM,eclipse 新建maven,web项目 .... 项目结构: jar包 pom.xml spring和DispatcherServlet上下文,相当于web.xml pub ...
- Django——URL详解/Django中URL是如何与urls文件匹配的
URL标准语法 protocol://hostname[:port]/path/[:parameters][?query]#fragment https://i.cnblogs.com/EditPos ...
- Jquery获取html标签,包含该标签本身
$(".test").prop("outerHTML"); 原生JS DOM里有一个内置属性 outerHTML,用来获取当前节点的html代码(包含当前节点) ...
- java课程之团队开发冲刺阶段1.8
一.总结昨天进度 1.实现预装sqlite数据库,将数据库放在app的assets目录下,该目录在打包的时候不会压缩,所以数据库文件可以在安装之后继续使用,然后APP安装之后检测外部存储空间是否有这个 ...
- viewer.js插件简单使用说明
不需要依赖jQuery.js,只需要导入viewer.js和viewer.css文件即可. 插件GitHub地址:https://github.com/fengyuanchen/viewerjs 示例 ...
- Mysql数据库忘记密码找回方法
Mysql数据库忘记密码找回 a 停止mysql服务 /etc/init.d/mysql stop b 使用--skip-grant-tables启动mysql,忽略授权登录验证 mysqld_saf ...
- docker---Dockerfile编写
前言:镜像的定制实际上就是定制每一层所添加的配置文件,如果我们可以把每一层的修改.安装.构建.操作的命令都写入一个脚本,然后用这个脚本来构建.定制镜像,那么镜像构建透明性的问题.体积的问题就会得到解决 ...
- 怎么调出原生态launcher
adb shell am start -n com.android.launcher3/.Launcher
- Ka/ Ks|同义替换的三种路径|kaks_Calculator|
生命组学 研究old gene 和 young gene CAI选择信号:CGmutation信号 Neutrality plot:CG3与GC1.GC2的关系:平:mutation:正相关:sele ...
- 0CTF-2016-piapiapia-PHP反序列化长度变化尾部字符串逃逸
0X00 扫描一下网站目录,得到网站源码,这里说下工具使用的是dirmap,亲测御剑不好用... 0x01 审计源码: index.php <?php require_once('class.p ...