function关键字用于在规则文件中定义函数,就相当于java类中的方法一样。可以在规则体中调用定义的函数。使用函数的好处是可以将业务逻辑集中放置在一个地方,根据需要可以对函数进行修改。
语法结构如下:
function 返回值类型 函数名(可选参数){
//逻辑代码
}
编写测试文件
//定义一个函数
function String sayHello(String name){
return "hello I am" + name;
}
rule "rule_function"
when
$user:User(name != null)
then
//调用上面定义的函数
String ret = sayHello($user.getName());
System.out.println(ret);
end
测试代码
@Test
public void functionTest()
{
KieServices kieServices = KieServices.Factory.get();
KieContainer kieClasspathContainer = kieServices.getKieClasspathContainer();
KieSession kieSession = kieClasspathContainer.newKieSession("queryKS");
User user = new User();
user.setName("张三");
user.setLevel(12);
kieSession.insert(user);
kieSession.fireAllRules();
kieSession.dispose();
}