drools规则体中复杂function的例子
时间: 2023-10-21 13:07:20 浏览: 97
以下是一个在Drools规则体中使用复杂function的例子:
```
package com.example.drools;
import java.util.ArrayList;
import java.util.List;
public class Person {
private String name;
private int age;
private List<String> hobbies;
// getters and setters
public boolean hasHobby(String hobby) {
return hobbies.contains(hobby);
}
}
// 定义Drools function
function boolean isAdult(Person person) {
return person.getAge() >= 18;
}
// 定义Drools规则
rule "Check Person's Hobbies and Age"
when
$person: Person(hasHobby("reading"), hasHobby("music"), isAdult(this))
then
System.out.println($person.getName() + " likes reading and music and is an adult.");
end
```
在这个例子中,我们定义了一个`Person`类,其中包含姓名、年龄和爱好(以列表形式存储)。我们还定义了一个Drools function `isAdult`,它接收一个`Person`实例并返回一个布尔值,表示这个人是否成年。
在Drools规则中,我们使用了这个function来检查一个`Person`实例是否满足一些条件:拥有`reading`和`music`这两个爱好,并且已经成年。如果满足这些条件,就打印出这个人的姓名、爱好和年龄。
注意,在规则体中使用function时,需要使用`this`关键字来引用当前规则的对象。此外,如果function接收的参数是一个对象,可以直接将它作为参数传递给规则体中的条件语句。
阅读全文