如何创建一个视图,显示单个项目下所有正式模块中的所有现有属性 DOORS?

How to Create a view that shows all existing attributes DOORS in all formal modules under a single project?

我有一个项目,IBM DOORS 中有 50 多个正式模块,

我想为所有模块创建一个视图(作为默认视图) 当我打开该视图时,该视图应显示该特定模块可用的所有属性。

并且某些模块中的属性数量有所不同。 如果 stack-overflow 中的任何人知道这方面的方法,那将非常有帮助!

首先,您可能应该知道可以加载到视图中的属性数量是有上限的。您可以查看此线程以获取有关最大列的更多信息: https://www.ibm.com/developerworks/community/forums/html/topic?id=1861480b-7aa0-43b2-bf77-be677f5f778e

现在说说怎么做吧。如果您正在寻找使用 DXL 的自动化解决方案,这里有一些示例代码,您可以根据自己的目的进行修改。当前代码会将不是系统属性的对象级属性添加到您 运行 此代码来自的模块的当前视图。

AttrDef ad
Module m = current Module
string sAttrName
int count = 0
Column col

for col in m do {count++}

for ad in m do
{
   if ((ad.object) && (!ad.system)) 
   {
      sAttrName = ad.name
      col = insert (column count)
      attribute(col, sAttrName)
      width(col, 200)
      count++
   }
}

注意:此代码只会生成一个视图,其中包含 运行 来自的模块中的所有属性,它不会遍历项目中的所有模块或保存视图。

要遍历项目并获取所有模块,您需要使用 for itemRef in folder do {...} 创建递归函数。类似于以下内容:

Folder f = current Folder

void recurseFolder(Folder f)
{
    Item iRef

    for iRef in f do
    {
        if (type(iRef) == "Formal")
            (call your create views function here with parameter iRef)
        else if (type(iRef) == "Folder" || type(iRef) == "Project")
            recurseFolder(folder(iRef))
    }
}

recurseFolder(f)

然后,如果您需要其他代码来保存视图,您也必须使用 save(View v) 添加适当的代码。您可以在 DXL 参考手册中查找有关设置视图首选项和保存它们的其他信息。