Drools 函数学习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Drools 函数学习相关的知识,希望对你有一定的参考价值。

Drools 函数学习

函数是定义在规则文件当中一代码块,作用是将在规则文件当中若干个规则都会用到的
业务操作封装起来,实现业务代码的复用,减少规则编写的工作量。函数的编写位置可以是规则文件当中 package 声明后的任何地方
具体语法如下:
function void/Object functionName(Type arg...) {
/*函数体的业务代码*/
}
示例代码:
import java.util.List;
import java.util.ArrayList;
/*
*一个测试函数
*用来向Customer对象当中添加指定数量的Order对象的函数
*/

function void setOrder(Customer customer,int orderSize) {
List ls=new ArrayList();
for(int i=0;i<orderSize;i++){
Order order=new Order();
ls.add(order);
}
customer.setOrders(ls);
}

 

调用方式:
1.函数写在规则文件里,规则文件直接调用
/*
测试规则
*/
rule "rule1"
when
$customer :Customer();
then
setOrder($customer,5);
System.out.println("rule 1 customer has order
size:"+$customer.getOrders().size());
end

/*
测试规则
*/
rule "rule2"
when
$customer :Customer();
then
setOrder($customer,10);
System.out.println("rule 2 customer has order size:"+$customer.getOrders().size());
end

2.使用java编写函数,规则文件调用(需要引入相关类和函数)
java代码:
package test;
public class RuleTools {
public static void printInfo(String name){
System.out.println("your name is :"+name);
}
}

规则文件代码:
package test
import function test.RuleTools.printInfo; //引入函数所在

/*
测试规则
*/
rule "rule1"
when
eval(true);
then
printInfo("高杰");
end



以上是关于Drools 函数学习的主要内容,如果未能解决你的问题,请参考以下文章

Drools学习教程-1.规则文件语法

如何快速学习 Drools 或其他规则引擎 [关闭]

drools属性能不能做成动态

Drools学习笔记2—Conditions / LHS 匹配模式&条件元素

规则引擎Drools介绍使用及SpringBoot整合Drools

Drools规则引擎入门指南