DOORS 复合过滤器困境

DOORS Compound Filter Dilemma

DOORS 版本:9.5.2.1

我会尽可能简单地分解它。首先,我将从数据开始。假设我在 DOORS 中有一个模块 Module模块 包括:

树结构

假设 Object Text 和 sub-headings 为空白,并假设 Object Text 对于剩余的 级别 3 object 与 object 本身的名称相同。例如,Object 标题 对于 Object_1.1.0-1 是空白的,但它的 Object 文本 是“Object_1.1.0-1”.

- Module
   - 1 Heading1             // Object Heading: "Heading1"       ; Object Number: 1
   |  - 1.1 Sub-Heading1.1  // Object Heading: "Sub-Heading1.1" ; Object Number: 1.1
   |  |  + Object_1.1.0-1   // Object Heading: ""               ; Object Number: 1.1.0-1
   |  |  + Object_1.1.0-2   // Object Heading: ""               ; Object Number: 1.1.0-2
   |  |  |  .
   |  |  |  .
   |  |  |  .
   |  |  + Object_1.1.0-A   // Object Heading: ""               ; Object Number: 1.1.0-A
   |  |
   |  - 1.2 Sub-Heading1.2  // Object Heading: "Sub-Heading1.2" ; Object Number: 1.2
   |     + Object_1.2.0-1   // Object Heading: ""               ; Object Number: 1.2.0-1
   |     + Object_1.2.0-2   // Object Heading: ""               ; Object Number: 1.2.0-2
   |     |  .
   |     |  .
   |     |  .
   |     + Object_1.2.0-B   // Object Heading: ""               ; Object Number: 1.2.0-B
   |
   - 2 Heading2             // Object Heading: "Heading2"       ; Object Number: 2
      - 2.1 Sub-Heading2.1  // Object Heading: "Sub-Heading2.1" ; Object Number: 2.1
      |  + Object_2.1.0-1   // Object Heading: ""               ; Object Number: 2.1.0-1
      |  + Object_2.1.0-2   // Object Heading: ""               ; Object Number: 2.1.0-2
      |  |  .
      |  |  .
      |  |  .
      |  + Object_2.1.0-C   // Object Heading: ""               ; Object Number: 2.1.0-C
      |
      - 2.2 Sub-Heading2.1  // Object Heading: "Sub-Heading2.1" ; Object Number 2.2
         + Object_2.2.0-1   // Object Heading: ""               ; Object Number: 2.2.0-1
         + Object_2.2.0-2   // Object Heading: ""               ; Object Number: 2.2.0-2
         |  .
         |  .
         |  .
         + Object_2.2.0-D   // Object Heading: ""               ; Object Number: 2.2.0-D

And so on and so forth . . .

属性

*Object Heading and Text*, Version, Data

Object Heading and Text 好像是DOORS的东西,这里就不解释了。 Data 这里是通用的(而且,实际上,代表不止一个属性)。有些数据适用于某些版本,有些数据适用于其他版本。不同版本的数据可能相交,而其他版本的某些数据则相互排斥。 Version 是一个单独的字符串,用新行分隔不同的版本,“\n”。所以,我们假设 Version 是:

v1\nv2\nv3 . . . v\nvX

或者,以更易读的格式:

v1
v2
v3
 .
 .
 .
vX

更重要的是,一个 object 的 Version 可能是(comma-separated 这里是为了便于阅读) v1, v2, v3, . . ., vX 而另一个可能是 v1, v3 而另一个可能只是 v2。可用版本的任意组合,真的。

问题

我想做的事情在我看来应该很容易。一个no-brainer。举个例子,假设我想应用一个过滤器,我只查看 Sub-Heading1.2 及其 children,并且只查看 版本 v3。我已经尝试了很多关于这个主题的变体,但我似乎只能完成一个或另一个。我成功地隔离了单个部分或单个版本的数据,但我无法同时获得两者。当我为单个部分应用过滤器时,说 Sub-Heading1.2 及其 children,然后与 "includes v3" 进行 AND 运算;我会得到那个部分,但它拒绝只显示 v3.

的那个部分

在任何编程语言中,a and b and c 计算结果为真当且仅当 a 和 b 和 c。我在 DOORS 中看到的在我看来更像是 (a and b) 或 c.

使用如上所述的 DOORS 数据库,如何仅查看给定范围内的 object(或 object 及其后代) version? 我知道 DXL 是一种潜在的解决方案,但 GUI 解决方案更可取。

您的问题是 Include Descendants。此选项专门忽略过滤器。它真正的意思是,"Show me everything that matches my filter, and all of their descendants".

使用你上面的例子,你想要的过滤器是:

Object Number >= 1.2
and
Object Number < 2 (or maybe 1.3 depending on how you want it)
and
Version includes v3

这将为您提供所需的信息。确保不要 Include Descendants,因为这会否定过滤器中的第二条规则。

祝你好运!