У меня есть модуль А с объектами связаны из объектов в другом модуле B. В свете А, У меня есть макет DXL столбец, который перечисляет все эти связанные объекты B:Листинг ссылки с целью вставки в рациональных ДВЕРЯХ
// DXL generated by DOORS traceability wizard on 02 May 2016.
// Wizard version 2.0, DOORS version 9.2.0.5
pragma runLim, 0
string limitModules[1] = {"40fedbf2697f0e24-00003921"}
void showIter(Object o, string linkModName, int depth, string build, string iter) {
Link l
Object othero
for l in all(o<-linkModName) do { // ****
otherVersion = sourceVersion l
otherMod = module(otherVersion)
if (null otherMod || isDeleted otherMod) continue
if (!equal(getItem otherMod, (itemFromID limitModules[depth-1]))) continue
othero = source l
if (null othero) {
load(otherVersion,false)
}
othero = source l
if (null othero) continue
if (isDeleted othero) continue
doneOne = true
if (depth == 1) {
disp = ""
obuild = probeRichAttr_(othero,"Build", false)
oiter = probeRichAttr_(othero,"Iteration (planned)", false)
string ocat = othero."Category"
if (obuild == build && oiter == iter) {
s = "(B" obuild "." oiter " - " ocat[0] ") " (identifier othero)
disp = disp s
s = probeRichAttr_(othero,"Object Text", false)
disp = disp " " s
displayRich("\\pard " disp)
}
}
}
}
void showIn(Object o, int depth) {
Link l
LinkRef lr
ModName_ otherMod = null
Module linkMod = null
ModuleVersion otherVersion = null
Object othero
string disp = null
string s = null
string plain, plainDisp
int plainTextLen
int count
bool doneOne = false
Item linkModItem = itemFromID("40fedbf2697f0e24-000039a3")
if (null linkModItem) {
displayRich("\\pard " "<<Link module not found>>")
} else if (type(linkModItem) != "Link") {
displayRich("\\pard " "<<Invalid link module index for this database>>")
} else {
string linkModName = fullName(linkModItem)
for lr in all(o<-linkModName) do {
otherMod = module (sourceVersion lr)
if (!null otherMod) {
if ((!isDeleted otherMod) && (null data(sourceVersion lr))) {
if (!equal(getItem otherMod, (itemFromID limitModules[depth-1]))) continue
load((sourceVersion lr),false)
}
}
}
//showIter(o, linkModName, depth, "1", "")
//showIter(o, linkModName, depth, "2", "")
showIter(o, linkModName, depth, "3", "3")
}
}
showIn(obj,1)
Этот скрипт перечисляет связанные объекты в числовом порядке объекта ID/ключ:
B object with ID# 3
B object with ID# 8
B object with ID# 21
B object with ID# 24
Однако в модуле B, без каких-либо сортировки активна, объекты видимы в порядке вставки, как это (т.е. согласно где я сделал вставку):
B object with ID# 24
B object with ID# 8
B object with ID# 21
B object with ID# 3
Есть ли способ, чтобы петли над объектами B с целью вставки, то есть для того, что они будут отображаться в виде B при отсутствии сортировки не активна?
Под «естественным» я имел в виду порядок, они появляются, когда вы откройте модуль, когда сортировка отключена, то есть порядок вставки. Порядок цикла в DXL определяется идентификатором объекта. Я обновил свой ответ, пожалуйста, взгляните еще раз, потому что список пропусков вряд ли будет практическим решением AFAICT. – Schollii
обновил мое сообщение после повторного чтения вашего вопроса. Список пропусков может выглядеть не слишком элегантно или быстро, но я не вижу другого решения. Порядок, в котором ссылки «появляются» в целевом модуле не имеют связи с порядком, в котором исходные объекты существуют в исходном модуле, поэтому вам нужно вставить свою собственную логику. – Mike
Интересно. Основное предположение заключается в том, что 'for o в целом (... source module ...) выполняет итерации по объектам в порядке размещения, т. Е. В порядке их появления в модуле. Я попробую это. Одна вещь: из 3 частей кода, который вы перечисляете, первый должен быть только один раз для модуля B, но возможно ли это? Если я положил первую часть в столбце A DXL, skOrderOfObject будет регенерирован для * каждого объекта * A (который имеет ссылки из B). – Schollii