查询生成器是 Teamcenter 中经常使用的模块之一,用于创建基于对象的搜索查询。Query Builder 是一款功能强大的完整工具,用于快速配置 Teamcenter,以基于属性条件进行基于对象的搜索查询。它还在报告生成器中用于根据查询输出创建报告。我在我的Report Builder 博客中详细介绍了它。在这篇博客中,我将详细解释本地查询生成器配置以及创建或修改查询的基本概念。
查询生成器的基础知识:
Teamcenter Query 基于 Teamcenter 持久性数据模型,我在Teamcenter 数据模型中对此进行了介绍。以下是 Teamcenter 中查询的基本特征。
查询是针对任何 Teamcenter 持久性类创建的。
查询条件可以根据目标对象的属性定义,也可以针对通过 GRM 关系或引用与搜索类相关的相关对象定义。
通过将使用输入字段设为空,可以使标准对最终用户不可见 。
预定义的关键字变量可用于某些属性。这些变量值在运行时执行。例如,当执行查询时,关键字变量 $USERID 将解析为会话用户 ID。
Teamcenter 还支持关键字查询,允许搜索包含特定关键字或关键字组合的数据集文件内容。
还可以通过 Teamcenter 使用出口自定义查询。
查询结果始终显示在查询生成器中定义为搜索类的类的对象列表。
创建查询的步骤:
下面的描述显示了通过查询生成器在 Teamcenter 中定义新查询所需完成的任务列表。
定义查询:在创建查询之前,您必须首先定义到底需要搜索什么以及在什么上下文中进行搜索。上下文是指用户在执行搜索时可以提供的一些条件或标准,或者定义为搜索本身的基本标准。例如,如果您想创建仅查找特定数据类型的查询,则您定义的对象类型是查询生成器并使字段不可见。
映射到数据模型:定义搜索需求后,将其映射到 Teamcenter 的持久数据模型。这将成为您在查询生成器中的搜索类。基本上,仅针对此类的实例显示输出。假设将构建查询的管理员用户将了解 Teamcenter 的基本数据模型。我在我的Teamcenter 数据模型博客中对此进行了介绍。选择搜索类后,其属性和 GRM 关系会自动显示在属性显示区域中。可以对属性进行过滤,以仅显示类特定属性或从所有父类继承的所有属性。
定义搜索上下文:然后定义搜索条件或需要进行搜索的上下文。例如,如果您想获得仅包含特定数据集附件的项目修订版。在这种情况下,您必须通过 属性 显示区域中显示的预定义 GRM 关系或通过从 imanrelation 对象到 数据集(主要对象到次要对象)的引用,从搜索类(即项目修订)遍历到数据集。
使用搜索条件字段:最后,您定义了要向用户公开用于执行搜索的条件。此定义的属性列表向用户显示,用户可以在查询执行之前设置其值。该属性可以是搜索类或相关类。
查询生成器对话框部分
查询生成器模块具有三个重要部分,如下图所示

搜索类:这是将执行搜索的目标类。搜索结果将是此类的实例列表。正如上面部分所定义的,这将是查询的基类。您可以从显示 Teamcenter 层次结构数据模型的类选择对话框中导航所需的类。

属性选择:这提供搜索类的属性列表。提供选项仅查看给定类的显示属性或其从所有父类层次结构继承的所有属性。此部分帮助选择用于搜索条件的属性
搜索条件: 这定义了上下文搜索条件以及用户搜索条件字段。以下是搜索条件部分的字段
布尔规则:通过 AndOR 条件连接搜索条件中的多个搜索子句。AND 条件要求的相关子句应满足,而 OR 条件表示其中任何一个。
UserEntry Name :显示查询中显示的显示名称。它是指查询语言环境文件以获取属性搜索对话框的实际显示名称。如果您想隐藏某些子句,请将其留空。
逻辑运算符:这是搜索字段中最重要的字段,定义了实际需要执行的查询条件。它基本上定义了根据为执行提供的值来评估属性的规则。例如,对于日期属性,您可以定义大于或小于运算符来执行之前或之后日期子句的查询。查询生成器支持几乎所有 SQL 运算符子句。下图显示了 Teamcenter 中所有支持操作的情况。

查询生成器的限制:
虽然Query Builder是Teamcenter用于配置基于对象的查询的非常强大的工具,但由于Teamcenter数据模型设计,它也有一些限制。
只能为持久性数据对象配置查询。
只能为数据模型中定义的相关对象上下文中的对象构建查询。 这意味着无法创建针对不通过某种关系或引用相关的两个独立对象的查询。
无法根据特定的过滤规则来过滤搜索结果。例如,如果我想获取项目的最新修订版,则无法通过配置的查询生成器搜索来实现。结果将显示该项目的所有修订。原因是项目的所有项目修订仅与具有参考关系的项目相关,并且没有定义过滤旧修订的搜索条件。
不能像 SQL 语句中定义的那样为联合查询或一组 and /OR 子句构建查询规则。例如,在 SQL 中,您可以通过将子句分组在不同的括号 () 下,基于 and/or 子句集构建 where 子句 。
查询结果仅显示搜索类实例的列表。您无法在查询结果对话框中看到相关对象和搜索对象。