Drools 函数学习
2016-03-02 14:17
267 查看
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
函数是定义在规则文件当中一代码块,作用是将在规则文件当中若干个规则都会用到的
业务操作封装起来,实现业务代码的复用,减少规则编写的工作量。函数的编写位置可以是规则文件当中 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
相关文章推荐
- 华为oj 找出字符串中第一个只出现一次的字符
- Android开发优化之——对Bitmap的内存优化
- 特征值和特征向量的几何意义、计算及其性质
- JavaScript和jQuery实现定位导航功能
- iOS 3D touch的实现 从零开始
- 银行核心系统软件开发 转
- TFS 2013”无法移除仍为团队管理员身份的标识”
- Linux 5 下安装MySQL 5.6(RPM方式)
- Android studio 导入jar包
- 深入理解LayoutInflater.inflate()
- 将定制RPM包加入内部Yum Server
- hadoop数据分析
- nw.js node-webkit系列(13)Native UI API 其它
- 2015年大二上-数据结构-图-2-(5)-拓扑排序
- Drools 规则学习
- GsonFormat--将JSONObject格式的String 解析成实体
- [LeetCode]39 和的组合形式
- 46. Permutations
- Android-配置文件中设置“android:clickable="false"无效的原因及解决办法
- fieldset、legend、display html元素