《Drools7.0.0.Final规则引擎教程》第4章 Function函数
程序员文章站
2022-05-07 21:55:52
...
Function函数
首先来看一下function函数的语法结构图:
函数是将语义代码放置在规则文件中的一种方式,就相当于java类中的方法一样。函数并不会比辅助类做更多的事情,实际上,编译器会在幕后生成助手类。使用函数的好处是可以将业务逻辑集中放置在一个地方,根据需要可以对函数进行修改。但它既有好处也有坏处。函数对于调用规则的后果部分操作是最有用处的,特别是只有参数变化但执行的操作完全相同时。这里的函数可以对照java中方法的抽取封装来理解。
典型的函数声明如下所示:
function String hello(String name) {
return "Hello "+name+"!";
}
实例规则代码如下:
package com.rules
function String hello(String name){
return "Hello " + name + "!";
}
rule helloSomeone
agenda-group "function-group"
when
eval(true);
then
System.out.println(hello("Tom"));
end
测试代码如下:
@Test
public void testFunction(){
KieSession kieSession = this.getKieSession("function-group");
int count = kieSession.fireAllRules();
kieSession.dispose();
System.out.println("Fire " + count + " rule(s)!");
}
执行结果:
Hello Tom!
Fire 1 rule(s)!
需要注意的是,function虽然不是java的一部分,但是依然可以在这里使用。函数的参数根据需要可以有一个,也可以有多个,也可以没有。返回结果的类型定义和正常的java语法没有区别。
前面我们已经讲过如何引入java中的静态方法,此处的function也可以用静态方法来代替,具体使用参考相关章节,这里就不再赘述。
后语
此系列课程持续更新中,QQ群:593177274(可扫描左上侧栏目二维码),欢迎大家加入讨论。点击链接关注《Drools博客专栏》 。目前国内第一套关于Drools(7)的入门教程《Drools 7 规则引擎入门教程》正在火热录制中,其他更多关于Drools的系列教程也在筹划中,希望大家多多支持。
上一篇: 根据输入的日期展示当前月份的日历
下一篇: 周视图日历计算方法
推荐阅读
-
《Drools7.0.0.Final规则引擎教程》第4章 4.4 LHS简介&Pattern
-
《Drools7.0.0.Final规则引擎教程》第4章 注释&错误信息
-
《Drools7.0.0.Final规则引擎教程》第4章 4.6 结果条件
-
《Drools7.0.0.Final规则引擎教程》第4章 global全局变量
-
《Drools7.0.0.Final规则引擎教程》第4章 Function函数
-
《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
-
《Drools7.0.0.Final规则引擎教程》第4章 Query查询之基础
-
《Drools7.0.0.Final规则引擎教程》第4章 4.2 lock-on-active
-
《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
-
《Drools7.0.0.Final规则引擎教程》第4章 4.3 定时器