Удаление столбцов модуля / атрибута не видно в данном представлении - PullRequest
0 голосов
/ 26 апреля 2019

Мне было поручено создать сценарий DXL.Первая проблема заключается в том, что я никогда раньше не использовал DXL, хотя у меня есть многолетний опыт работы с самой DOORS.Я занимался серфингом в сети, чтобы найти руководство по моей конкретной проблеме.У меня также есть несколько образцов сценариев DXL для справки.

Мой новый клиент требует, чтобы для каждого представления данного модуля, из которого имеется много представлений, создавались новые "сокращенные" модули, отражающие каждое представление.

Под «сокращенным» я подразумеваю, что эти новые модули не должны содержать ничего, что на самом деле не требуется для этого представления. То есть столбцы, атрибуты и т. Д. Эти новые модули будут иметь только одно представление.

Таким образом, путь, на мой взгляд, состоит в том, чтобы взять копии одного мастер-модуля, по одному для каждого вида, переименовать эти копии, чтобы отразить данный мастер-модуль / необходимый вид, выбрать нужный вид в данной копии.Модуль, а затем удалите все, что не нужно этому представлению, то есть доступные столбцы, атрибуты и т. Д.

Это было бы просто, если бы у меня были необходимые знания DXL, которые я стараюсь подобрать так быстро, как могу.

Если это вообще возможно, этот сценарий должен быть универсальным и работать с любыми копиями мастер-модуля в продукт.Связанный «сокращенный» модуль, отражающий конкретное представление.

Клиент стремится периодически использовать сценарий для архивации представления (я знаю, что так он и хочет).

Разъяснение

Требуется некоторое разъяснение того, что я считаю необходимым, учитывая следующий текст из моего исходного вопроса:

Если это вообще возможно, этот сценарий должен быть общим и иметь возможность работать с любым измастер-модуль копирует для создания соответствующего «сокращенного» модуля, отражающего конкретный вид.

Итак, скажем, есть десять видов мастер-модуля, кроме сценария DXL, я бы скопировал мастер-модульдесять раз, переименовывая каждую копию, чтобы отразить каждое из десяти представлений.Если вы не знаете по-разному, каждая из этих десяти копий будет отражать те же «Абсолютные числа», что и в главном модуле, поэтому проблем нет?

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

Один общий универсальный сценарий DXL будет затем выполняться для этого первого модуля копирования,цель состоит в том, чтобы удалить все, что на самом деле не нужно для этого представления, то есть атрибуты, столбцы и т. д. Требуется ли в сценарии какая-либо команда очистки для каких-либо вышеупомянутых удаленных элементов?

Один общий сценарий DXL затем удалит ВСЕвиды из этого экземпляра модуля.Журнал, который создается при запуске сценария, также нуждается в записи, но я не уверен, следует ли это делать из сценария, если это возможно, или как отдельную ручную задачу вне сценария.

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

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Создание зеркала модуля с таким подходом не так просто, ИМО. Подумайте, например, про "Абсолютное число". Если оригинальный модуль содержит числа 15 (уровень 1), 2000 (уровень 2), 1 (уровень 1), вам нужно будет создать 2000 объектов, очистить их 1997 и переместить в правильное место. В https://www.ibm.com/developerworks/community/forums/html/topic?id=43862118-113d-4eac-b3f1-21d3b73959d1 есть «дублирующий» инструмент, который пытается это сделать, но, как указано там, этот сценарий работает неправильно во всех ситуациях.

Итак, я бы предпочел использовать подход "string clipCopy (Item i); string clipPaste (Folder folderRef)". Должно быть быстрее и менее подвержено ошибкам. Но: все Out-Links также будут скопированы с помощью этого метода, вам, вероятно, придется удалить их после копирования, иначе у целевого модуля (модулей) link будет много In-Links.

Проблема по-прежнему не так легко решить, так как в каждом представлении могут быть столбцы DXL, основанные на том или ином атрибуте, и он может содержать атрибуты DXL, которые опять-таки могут полагаться на что-то другое. Я сомневаюсь, что есть способ проанализировать код DXL "на лету" и выяснить, какие столбцы могут быть удалены.

Возможно, возможен совершенно другой подход: откройте каждое представление и создайте экспорт в Excel, таким образом вы избавитесь от любых динамических зависимостей. Затем повторно импортируйте лист Excel в новый модуль DOORS. У вас по-прежнему будет проблема «Абсолютное число», но, возможно, вы сможете заключить сделку, что у вас будет псевдоатрибут «Исходное абсолютное число» и не будет учитываться «новое» «Абсолютное число» '

Довольно большая задача для начинающего DXL ....

Обновление: если подумать, возможно, вы захотите объединить эти подходы

  • согласен с вашим работодателем, что вы будете использовать альтернативный атрибут для Абсолютного номера
  • используйте цикл, подобный предложенному Расселом, при создании объектов помните, что объекты, возможно, придется создавать «ниже» или «после» его предшественника или родного брата
  • для атрибутов DXL не копировать код DXL, а фактическое текущее значение объекта
  • для столбцов DXL создайте псевдоатрибуты _ и создайте новое представление, которое использует эти псевдоатрибуты вместо исходного значения
0 голосов
/ 26 апреля 2019

Копирование всего модуля с последующим удалением всего, что не в этом представлении, кажется хуже, чем просто копирование необходимых данных из каждого конкретного представления.

В качестве схемы вашей программы я бы взял следующее:

for view in main module do {
    for column in view do {
        Find attribute for each column and store (possibly in a skip list?)
        Store name of column
    }
    create new module
    create needed types / attributes in new module
    create new view in new module

    for object in main module {
        create object in new module
        for attribute in main module {
            check if attribute is in new module {
                copy info from old object to new
            }
        }   
    }
}

Каждый из них для циклов X in y должен быть в справочном руководстве DXL в том или ином случае.

Если вам нужна дополнительная помощь, дайте мне знать!

...