使用EXISTS语句创建复杂的文本模式筛选器
Workfront中的对象关系概述
所有对象都链接到Workfront数据库中的其他对象。
了解对象的层次和相互依赖关系有助于您了解哪些对象可以在报表中引用。
有关Workfront中的对象及其层次结构和相互依赖性的信息,请参阅Adobe Workfront对象概述。
构建过滤器时,您可以使用标准报表界面在最多2个级别的关系中引用连接到过滤器对象的其他对象。
例如,您可以使用标准界面在问题筛选器中引用PortfolioID以仅显示与特定项目组合相关联的项目中的问题。 在这种情况下,项目组合与问题相差2级。
但是,您不能使用标准界面在问题过滤器中引用Portfolio所有者,以仅显示与所有者为特定用户的项目组合相关联的项目中的问题。 您必须使用文本模式来访问“Portfolio所有者名称”字段,该字段与问题相差三个级别。
有关Workfront中对象的完整列表,请参阅API资源管理器。
有关如何导航API资源管理器并查找对象的信息,请参阅使用API资源管理器。
构建过滤器时,必须在文本模式界面中构建复杂的语句以引用这些类型的对象。
有关生成复杂过滤器的信息,请参阅本文的使用EXISTS语句的复杂文本模式过滤器概述部分。
使用EXISTS语句的复杂文本模式过滤器概述 overview-of-complex-text-mode-filters-that-use-exists-statements
创建跨越对象层次结构中多个级别的过滤器或过滤缺少的对象时,请考虑以下事项:
-
如果要引用未直接连接到滤镜对象的对象,则必须创建复杂的滤镜。
-
必须使用EXISTS语句执行以下操作:
- 创建跨多个级别的过滤器。
- 创建筛选器以查找缺少的对象。
例如,在构建用户报告时,您可以筛选在特定时间段内未记录时间的用户。
在过滤器中使用EXISTS语句时,请考虑以下规则:
-
在EXISTS过滤器中,您可以引用三个对象:
- 滤镜的对象(原始对象)。
- 要引用其字段的对象(目标对象)。
- 连接“原始”对象和“目标”对象的对象(链接对象),以防它们彼此不直接连接。
-
使用EXISTS的过滤器包含两个由等号链接的单独语句:
- 等号之前的语句是指您引用的对象(链接对象或目标对象)。
- 等号后面的语句是指您引用的对象(原始对象)。
-
必须使用链接对象的对象代码来连接语句。
您可以在API Explorer中找到所有对象的对象代码。
有关API Explorer的信息,请参阅API Explorer。 -
当由于原始对象和目标对象直接连接而缺少链接对象时,您可以使用目标对象的对象代码而不是链接对象。
-
您可以引用同一对象(目标对象)上的多个字段(目标字段),在这种情况下,必须通过AND连接引用这些字段的行。
有关筛选属于Target对象的多个字段的示例,请参阅本文中的示例4:按多个字段筛选:按Portfolio所有者名称和Portfolio对齐记分卡ID筛选任务部分。 -
EXISTS语句唯一支持的修饰符是NOTEXISTS。
访问要求
您必须具有以下权限才能执行本文中的步骤:
table 0-row-2 1-row-2 2-row-2 3-row-2 layout-auto html-authored no-header | |
---|---|
Adobe Workfront计划 | 任何 |
Adobe Workfront许可证 |
新增:标准 或 当前:计划 |
访问级别配置* |
编辑对筛选器、视图、分组的访问权限 编辑对报告、功能板、日历的访问权限以编辑报告中的筛选器 |
对象权限 |
管理对报告的权限以编辑报告中的筛选器 管理筛选器权限以编辑它 |
有关此表中信息的更多详细信息,请参阅Workfront文档中的访问要求。
创建跨对象层次结构中多个级别的复杂文本模式筛选器
您可以构建一个筛选器,该筛选器在对象层次结构的多个级别中引用对象,筛选器对象存在于对象层次结构中。 例如,您可以为与特定Portfolio所有者无关联的项目上的问题构建问题过滤器。
必须始终使用EXISTS语句和文本模式界面来构建此筛选器。
有关筛选器的示例,请参阅本文中的示例1:按Portfolio所有者名称筛选问题部分。
要创建跨越对象层次结构中多个级别的过滤器,请执行以下操作:
-
标识筛选器的对象。 我们将此对象称为“原始对象”。
例如,问题。 -
标识要作为筛选依据的字段。 我们将此对象称为属于目标对象的目标字段。
例如,所有者ID字段(目标字段),它属于Portfolio(目标对象)。 -
(视情况而定)如果原始对象(问题)和目标字段(所有者ID)未直接相连,则必须找到第三个对象,即连接它们的链接对象(项目)。 链接对象必须至少有一个从原始对象的“字段”或“引用”选项卡(链接字段显示在原始对象上)中引用的字段,并且链接对象的“字段”或“引用”选项卡中还必须有一个指向目标对象的链接字段。 链接字段至链接对象上显示的目标对象(或链接对象上显示的链接字段)必须与目标字段匹配。
例如,(项目) ID(原始对象上显示的链接字段)是从“问题”(原始对象)中引用的。 (Portfolio)ownerID(将字段链接到目标对象)显示在项目(链接对象)的“字段”选项卡中。 PortfolioownerID也是目标对象(Portfolio)中的字段。 链接对象上的链接字段与目标字段匹配。
-
使用API资源管理器标识链接对象(项目)的 对象代码。
例如,项目的对象代码为PROJ。
-
为原始对象创建滤镜。
例如,创建问题过滤器。
有关创建筛选器的信息,请参阅筛选器概述。 -
单击 切换到文本模式。
-
将以下公式示例粘贴到新过滤器的文本模式界面中,并用正确的对象和字段替换示例文本:
EXISTS:A:$$OBJCODE=<Object code of the Linking Object>
EXISTS:A:<Linking Field on the Linking Object>=FIELD:<Linking Field displayed on the Original Object>
EXISTS:A:<Target Object>:<Target Field>=<Your value for the Target Field>
有关使用上面标识的字段的示例,请参阅本文中的示例1:按Portfolio所有者名称筛选问题部分。
-
单击 保存筛选器。
为缺少的对象创建复杂文本模式筛选器
您可以构建一个过滤器来引用缺少的对象。 例如,您可以构建一个用户过滤器,以显示哪些用户尚未在Workfront中记录小时数。
必须始终使用 EXISTS 语句和文本模式界面来构建此筛选器。
有关缺少对象的筛选器的示例,请参阅本文中的以下部分:
要创建引用缺少对象的筛选器:
-
标识筛选器的对象。 我们将此对象称为“原始对象”。
例如,参数或自定义字段。 -
标识要作为筛选依据的字段。 我们将此对象称为属于目标对象的目标字段。
例如,类别ID字段(目标字段),它属于类别(目标对象)。 -
由于原始对象(参数)和目标字段(categoryID)之间没有直接连接,因此您必须找到第三个对象,即连接它们的链接对象(类别参数)。 链接对象必须至少有一个从原始对象的“字段”或“引用”选项卡(链接字段显示在原始对象上)中引用的字段,并且链接对象的“字段”或“引用”选项卡中还必须有一个指向目标对象的链接字段。 链接字段至链接对象上显示的目标对象(或链接对象上显示的链接字段)必须与目标字段匹配。
例如,类别参数(显示在原始对象上的链接字段)的ID是从参数(原始对象)中引用的。 parameterID(将字段链接到目标对象)显示在类别参数(链接对象)的“字段”选项卡中。 链接对象上显示的指向目标对象的链接字段与目标字段匹配。
-
使用API资源管理器标识链接对象的 对象代码(类别参数)。
例如,类别参数的对象代码为CTGYPA。
-
为原始对象创建滤镜。
例如,创建一个“参数”筛选器。
有关创建筛选器的信息,请参阅筛选器概述。 -
单击 切换到文本模式。
-
(视情况而定)如果要过滤缺少的对象,请将以下公式示例粘贴到新过滤器的文本模式界面中,并用正确的对象和字段替换示例文本:
EXISTS:A:$$OBJCODE=<Object code of the Linking Object>
EXISTS:A:<Linking Field displayed on the Linking Object>=FIELD:<Linking Field displayed on the Original Object><br>EXISTS:A:$$EXISTSMOD=NOTEXISTS
有关未与自定义Forms关联的自定义字段的报表示例,请参阅本文中的示例2:筛选缺少的对象:未出现在任何自定义表单中的自定义字段部分。
-
单击 保存筛选器。
跨对象层次结构中多个级别的文本模式筛选器的示例
使用这些示例使用EXISTS语句构建文本模式过滤器。
示例1:按Portfolio所有者名称筛选问题 example-1-filter-for-issues-by-portfolio-owner-name
使用文本模式界面,您可以构建问题列表的过滤器,以仅显示与项目组合(其所有者为特定用户)相关的项目上的问题。
要按Portfolio所有者名称筛选问题,请执行以下操作:
-
创建问题过滤器。
有关创建筛选器的信息,请参阅筛选器概述。 -
单击 切换到文本模式。
-
请参阅以下通用代码:
EXISTS:A:$$OBJCODE=<Object code of the Linking Object>
EXISTS:A:<Linking Field on the Linking Object>=FIELD:<Linking Field displayed on the Original Object>
EXISTS:A:<Target Object>:<Target Field>=<Your value for the Target Field>
-
将以下代码粘贴到 为报表 设置筛选规则区域以替换上面的通用代码:
EXISTS:A:$$OBJCODE=PROJ
EXISTS:A:ID=FIELD:projectID
EXISTS:A:portfolio:ownerID=4d94d7da001699b19edf50de15682221
note note NOTE - 原始对象是报告的对象:问题
- 目标对象Portfolio。
- 链接对象为“项目”。
- 目标字段和链接到从链接对象引用的目标对象的链接字段是ownerID。
- 此处链接对象的对象代码为PROJ。
- 原始对象上显示的链接字段为projectID,链接字段为ID。
-
将上一语句中目标字段(ownerID)的值替换为您环境中的用户ID。
-
单击 保存筛选器。
示例2:筛选缺少的对象:未在任何自定义表单中显示的自定义字段 example-2-filter-for-missing-objects-custom-fields-that-do-not-appear-in-any-custom-forms
利用文本模式界面,您可以构建过滤器以查看与自定义Forms(类别)无关联的自定义字段(参数)。 此过滤器将参数链接到通过另一个对象“类别参数”连接的类别。 由于这两个字段之间没有直接连接,并且您正在过滤缺少的信息,因此您必须使用EXISTS语句。
要筛选未与自定义表单关联的自定义字段,请执行以下操作:
-
创建参数或自定义字段过滤器。
有关创建筛选器的信息,请参阅筛选器概述。 -
单击 切换到文本模式。
-
请参阅以下通用代码:
EXISTS:A:$$OBJCODE=<Object code of the Linking Object>
EXISTS:A:<Linking Field displayed on the Linking Object>=FIELD:<Linking Field displayed on the Original Object><br>EXISTS:A:$$EXISTSMOD=NOTEXISTS
-
将以下代码粘贴到 为报表 设置筛选规则区域以替换上面的通用代码:
EXISTS:A:$$OBJCODE=CTGYPA
EXISTS:A:parameterID=FIELD:ID
EXISTS:A:$$EXISTSMOD=NOTEXISTS
note note NOTE - 原始对象是报表的对象:参数。
- 目标对象为“类别”。
- 链接对象是类别参数。
- 链接对象的对象代码为CTGYPA。
- 与目标对象的链接字段为parameterID,因为parameterID同时存在于链接对象表和目标对象表中。
- 在原始对象上显示的链接字段是(类别参数的)ID。
-
单击 保存筛选器。
示例3:筛选缺少的对象:在特定时间段内未记录时间的用户 example-3-filter-for-missing-objects-users-who-did-not-log-time-for-a-certain-period-of-time
使用文本模式界面,您可以构建过滤器以查看在特定时间段内未记录时间的用户。 此过滤器将用户链接到小时,这些小时彼此直接相连。 但是,必须使用EXISTS语句和文本模式界面才能过滤缺少的信息。
要筛选上周未记录时间的用户,请执行以下操作:
-
创建用户过滤器。
有关创建筛选器的信息,请参阅筛选器概述。 -
单击 切换到文本模式。
-
请参阅以下通用代码:
EXISTS:A:$$OBJCODE=<Object code of the Linking Object>
EXISTS:A:<Linking Field displayed on the Linking Object>=FIELD:<Linking Field displayed on the Original Object><br>EXISTS:A:$$EXISTSMOD=NOTEXISTS
-
将以下代码粘贴到 为报表 设置筛选规则区域以替换上面的通用代码:
EXISTS:A:$$OBJCODE=HOUR<br>EXISTS:A:ownerID=FIELD:ID<br>EXISTS:A:entryDate=$$TODAYb-1w<br>EXISTS:A:entryDate_Range=$$TODAYe-1w<br>EXISTS:A:entryDate_Mod=between<br>EXISTS:A:$$EXISTSMOD=NOTEXISTS
note note NOTE - 原始对象是报表的对象:用户。
- 目标对象是小时。
- 在本例中,您不需要链接对象,因为“用户”和“小时”直接连接到Workfront数据库。
- 由于没有链接对象,因此必须使用目标对象的对象代码:HOUR。
- 目标对象的链接字段是ownerID(显示在原始对象上;缺少链接对象)。
- 在原始对象上显示的链接字段是ID(小时)(显示在目标对象上;缺少链接对象)。
- EXISTSentryDate语句引用定义Target对象(Hour)的字段,并使用与常规筛选语句相同的语法。 这样可以确保只显示那些在特定时间段(在本例中是上一周)未记录时间的用户。
- NOTEXISTS修饰符指示我们正在查找报表对象(用户)不存在的项目(小时)。
-
单击 保存筛选器。
示例4:按多个字段筛选:按Portfolio所有者名称和Portfolio对齐记分卡ID列出的任务 example-4-filter-by-multiple-fields-tasks-by-portfolio-owner-name-and-portfolio-alignment-scorecard-id
使用文本模式界面,您可以构建一个引用Target对象上多个字段的筛选器。 在这种情况下,引用目标字段的filter语句必须通过AND连接。
例如,您可以筛选任务列表,以仅显示满足以下条件的任务:
- 他们位于与项目组合(其所有者为特定用户)关联的项目上。
- 它们位于与项目组合关联的项目上,而该项目与特定一致性记分卡无关。
要按Portfolio所有者名称和Portfolio对齐计分卡ID筛选任务,请执行以下操作:
-
创建任务过滤器。
有关创建筛选器的信息,请参阅筛选器概述。 -
单击 切换到文本模式。
-
将以下代码粘贴到 为报表 设置筛选规则区域:
EXISTS:A:$$OBJCODE=PROJ
EXISTS:A:ID=FIELD:projectID
EXISTS:A:portfolio:ownerID=4d80ce5200000528787d57807732a33f
AND:A:EXISTS:A:$$EXISTSMOD=NOTEXISTS
AND:A:EXISTS:A:$$OBJCODE=PROJ
AND:A:EXISTS:A:ID=FIELD:projectID
AND:A:EXISTS:A:portfolio:alignmentScoreCardID=4da387b00001cbc732bb259355c33dad
note note NOTE - “原始对象”是滤镜:“任务”的对象。
- 目标对象Portfolio。
- 第一个目标字段是ownerID。
- 第二个目标字段是“对齐计分卡ID”。
- 链接对象为“项目”。
- 链接对象的对象代码为PROJ。
- “与目标对象关联”字段是Portfolio的ID。
- 原始对象上显示的链接字段为projectID。
- 使用您环境中的用户ID替换ownerID。
-
单击 保存筛选器。