java 规则引擎实例_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"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://docs.jboss.org/drools/release/6.5.0.Final/drools-docs/html_single/index.html#d0e4235*/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值