16.4. DRL 中的查询


DRL 文件中的查询搜索决策引擎的工作内存,以查找与 DRL 文件中的规则相关的事实。您可以在 DRL 文件中添加查询定义,然后获取应用程序代码的匹配结果。查询搜索一组定义的条件,且不需要在或 随后 指定规格时使用。查询名称对于 KIE 基础是全局的,因此,在项目中的所有规则查询中必须是唯一的。要返回查询的结果,您可以使用 ksession.get QueryResults ("name") 来构建 QueryResults 定义,其中 "name" 是查询名称。这会返回一个查询结果列表,允许您检索与查询匹配的对象。您可以在 DRL 文件中定义规则之上的查询和查询结果参数。

以下示例是 DRL 文件中的 DRL 文件中的查询定义,其中包含了相关的应用程序代码:

DRL 文件中的查询定义示例

query "people under the age of 21"
    $person : Person( age < 21 )
end
Copy to Clipboard Toggle word wrap

获取查询结果的应用程序代码示例

QueryResults results = ksession.getQueryResults( "people under the age of 21" );
System.out.println( "we have " + results.size() + " people under the age  of 21" );
Copy to Clipboard Toggle word wrap

您还可以使用标准 for 循环迭代返回的 QueryResults。每个元素都是一个 QueryResultsRow,可用于访问 tuple 中的每个列。

获取和迭代查询结果的应用程序代码示例

QueryResults results = ksession.getQueryResults( "people under the age of 21" );
System.out.println( "we have " + results.size() + " people under the age of 21" );

System.out.println( "These people are under the age of 21:" );

for ( QueryResultsRow row : results ) {
    Person person = ( Person ) row.get( "person" );
    System.out.println( person.getName() + "\n" );
}
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat