Drools规则引擎语法样例分析(二)

基本的匹配规则

1.1变量

drools使用匹配的方式对Fact进行对比

account: Account(credit>100)

找到credit值大于100的Account实例

$account Account($credit:Credit)
$account:Account(credit>100)
Cosumer(account==$account)

找到Cosumer ,使得属性值account满足credit>100

1.2类型

支持各种java数据类型
String

Cosumer(name="Keyu")

正则

Customer(name matches "[A-Z][a-z]+")  

Date:日期类型

Account(dateCreate > "01-Feb-2009")

Boolean:布尔类型

Transaction(isApprove == true)  

Enum:枚举类型

Account(type == Account.Type.STUDENT) 
1.3注释

与java相同 // # /* */

1.4包

与java相同

1.5导入

与java相同
注意“导入方法时之恩给你导入静态方法

1.6全局变量
global ReportFactory reportFactory;
1.7函数

规则文件中可以定义函数,也可以再外部类中定义static静态方法
java:

public static double calculateAccount(Account account) {

    return 100 + account.balance * 1.2;

}

drl:

import ****.Account
import ****.calculateAcccount
rule "validation account"

    when

        $account : Account(balance > 100)

    then

        Account(balance == calculateAccount($account));

end
1.8方言

使用方言简化表达式
方言默认的是java,drools也支持mvel,在package的后面声明该规则文件使用的方言

dialect "mvel" 

mvel
一种基于java应用程序的表达式,支持属性与方法的直接访问
Bean属性

$customer.address.postalCode = "123" 

等同于

$customer.getAddress().setPostalCode("123") 

访问List数据结构

$customer.accounts[3]

等同于

$customer.getAccounts(3) 

原文地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值