首页 > 解决方案 > 如何创建一个视图来显示单个项目下所有正式模块中的所有现有属性 DOORS?

问题描述

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

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

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

标签: ibm-doors

解决方案


在任何事情之前,您可能应该知道可以加载到视图中的属性的最大数量。您可以查看此线程以获取有关最大列的更多信息: 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 参考手册中查找有关设置视图首选项并将其保存的其他信息。


推荐阅读