Query 利用了 Drools 强大的模式匹配特性,从会话中获取信息。结构上,Query 只有 LHS 没有 RHS,支持使用参数来控制 LHS 条件。
Query 提供了两种查询方式:
数据模型 Java 代码:
public class Person { private String name; private String sex; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }}
DRL:
query "girls" (Integer $age) $girl: Person(sex == "female", age > $age)end
按需查询 Java 代码:
QueryResults queryResults = ksession.getQueryResults("girls", 18); for (QueryResultsRow row: queryResults) { Person girl = (Person) row.get("$girl"); System.out.println(girl.getName());}
实时查询 Java 代码:
ksession.openLiveQuery("girls", new Object[]{18}, new ViewChangedEventListener() { public void rowInserted(Row row) { Person girl = (Person) row.get("$girl"); System.out.println(girl.getName()); } public void rowDeleted(Row row) {} public void rowUpdated(Row row) {}});ksession.fireAllRules();
联系客服