首页 > 解决方案 > 按对象后代过滤 RATIONAL DOORS 9.6

问题描述

是否可以设置仅显示每个选定对象后代的过滤器或创建一个新视图来执行此操作?

标签: ibm-doors

解决方案


如果“选择”是指用户选择了一个或多个对象(例如,使用 shift-click),然后后代将神奇地出现在每个选定对象下方,而无需任何进一步的用户交互,则答案为“否”。

但是“是的”,您可以编写一个 DXL 脚本,例如将其添加到“用户”菜单中,让用户选择对象并启动菜单条目。该脚本可以创建一个包含所有选定对象的跳过列表,使用类似

Skip sk = create
Object o
Module m = current
for o in m do {
    if isSelected o then put (sk, o, o)
}

然后使用您需要和使用的列创建一个新视图acceptreject填充视图,例如

for o in entire m do {
    if (find (sk, o)) {
        accept o
    } else {
        reject o
    }
}

编辑:忘记了后代:-| 因此,在将所有对象从跳过添加到视图之后,您将需要一个递归函数来显示每个显示对象的子对象。大致如下:

void recursive_show_objects(Object o) {
    Object o2
    for o2 in o do {
        accept o2
        recursive_show_objects (o2)
    }
}
for o in sk do {
    recursive_show_objects (o)
}

推荐阅读