16.4. DRL 中的查询
DRL 文件中的查询搜索决策引擎的工作内存,以查找与 DRL 文件中的规则相关的事实。您可以在 DRL 文件中添加查询定义,然后获取应用程序代码的匹配结果。查询搜索一组定义的条件,且不需要在或 随后 指定规格时使用。查询名称对于 KIE 基础是全局的,因此,在项目中的所有规则查询中必须是唯一的。要返回查询的结果,您可以使用 ksession.get 来构建 QueryResults 定义,其中 QueryResults ("name")"name" 是查询名称。这会返回一个查询结果列表,允许您检索与查询匹配的对象。您可以在 DRL 文件中定义规则之上的查询和查询结果参数。
以下示例是 DRL 文件中的 DRL 文件中的查询定义,其中包含了相关的应用程序代码:
DRL 文件中的查询定义示例
query "people under the age of 21"
$person : Person( age < 21 )
end
query "people under the age of 21"
$person : Person( age < 21 )
end
获取查询结果的应用程序代码示例
QueryResults results = ksession.getQueryResults( "people under the age of 21" ); System.out.println( "we have " + results.size() + " people under the age of 21" );
QueryResults results = ksession.getQueryResults( "people under the age of 21" );
System.out.println( "we have " + results.size() + " people under the age of 21" );
您还可以使用标准 for 循环迭代返回的 QueryResults。每个元素都是一个 QueryResultsRow,可用于访问 tuple 中的每个列。
获取和迭代查询结果的应用程序代码示例