Drools入门之function
function函数写法与JavaScript中的函数相似,规则函数是Java类方法的一种变形,它的参数是非必填信息,返回值也是非必填的。一个规则使用函数的好处是可以在同一个地方保持所有的逻辑,同一个逻辑路径下的函数是一个全局的函数。当然规则函数发生变化,则意味着所有调用该函数的规则体都将发生变化。
规则中的函数有两种形式:一种是import,可以引用Java静态方法;另一种需要在规则中添加关键字function。
静态方法
public class RulesFunction {
public static void main(String[] args) {
KieServices kieService = KieServices.Factory.get();
KieContainer kieContainer = kieService.getKieClasspathContainer();
KieSession kieSession = kieContainer.newKieSession("testFunction");
kieSession.fireAllRules();
kieSession.dispose();
}
}
public class FunctionStatic {
public static void testStatic1() {
System.out.println("输出一个无参数无返回值的静态方法");
}
public static String testStatic2() {
System.out.println("输出一个无参数有返回值的静态方法");
return "Hello";
}
public static void testStatic3(String name) {
System.out.println("输出一个有参数无返回值的静态方法:" + name);
}
public static String testStatic4(String name) {
System.out.println("输出一个有参数有返回值的静态方法:" + name);
return name;
}
}
import function com.domain.FunctionStatic.testStatic1;
import function com.domain.FunctionStatic.testStatic2;
import function com.domain.FunctionStatic.testStatic3;
import function com.domain.FunctionStatic.testStatic4;
rule "function"
when
eval(true)
then
testStatic1();
System.out.println("函数function02()的返回值"+testStatic2());
testStatic3("张小三");
System.out.println("函数function04()的返回值"+testStatic4("李小四"));
end
输出一个无参数无返回值的静态方法
输出一个无参数有返回值的静态方法
函数function02()的返回值Hello
输出一个有参数无返回值的静态方法:张小三
输出一个有参数有返回值的静态方法:李小四
函数function04()的返回值李小四
方法中创建
rule "function2"
when
eval(true)
then
function1();
System.out.println("函数function02()的返回值"+function2());
function3("张小三");
System.out.println("函数function04()的返回值"+function4("李小四"));
end
function void function1() {
System.out.println("输出一个无参数无返回值的静态方法");
}
function String function2() {
System.out.println("输出一个无参数有返回值的静态方法");
return "Hello";
}
function void function3(String name) {
System.out.println("输出一个有参数无返回值的静态方法:" + name);
}
function String function4(String name) {
System.out.println("输出一个有参数有返回值的静态方法:" + name);
return name;
}
注意:不同逻辑路径下的函数不可使用
Drools入门之function
https://www.zhaojun.inkhttps://www.zhaojun.ink/archives/drools-function