Как создать представление, которое показывает все существующие атрибуты DOORS во всех формальных модулях в рамках одного проекта? - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть проект, в котором есть более 50 формальных модулей в IBM DOORS,

Я хочу создать единое представление для всех модулей (как представление по умолчанию). В этом представлении должны отображаться все доступные атрибуты. для этого конкретного модуля, когда я его открываю.

И количество атрибутов в некоторых модулях варьируется. Если кто-нибудь в переполнении стека знает способ, это было бы очень полезно!

1 Ответ

0 голосов
/ 14 февраля 2020

Прежде всего, вы должны знать, что существует максимальное количество атрибутов, которые можно загрузить в представление. Вы можете проверить эту тему для получения дополнительной информации о максимальных столбцах: 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++
   }
}

Примечание. Этот код будет генерировать только представление со всеми атрибутами в модуле, из которого он запущен, он не будет проходить через все модули в проекте или сохранять представление.

Чтобы провести oop через проект и получить все модули, вам нужно создать рекурсивную функцию, используя для 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.

...