【发布时间】:2019-02-12 15:06:03
【问题描述】:
我正在使用分析向导创建一个 LayoutDXL 列,该列应列出当前模块中每个现有 In-link 的属性(例如 AbsoluteNumber)。在一个特定的 DOORS 模块中,生成的 DXL 代码将每个属性显示两次。这在其他模块中不会发生。
我确实注意到有问题的模块没有一组已定义的 LinkModules(如 File/ModuleProperties 中所示)。这会导致某种环回吗?
更新:
我发现 DXL 代码以某种方式“认为”定义的 LinkModule 有两个版本,即“Current”和“Baseline X”。这些每个链接到目标 DOORS 模块中的不同基线编号。我不知道如何解决这个问题。
作为参考,这里是使用向导生成的 DXL 代码。这是门 9.6.1.11
// DXL generated by DOORS traceability wizard on 12 February 2019.
// Wizard version 2.0, DOORS version 9.6.1.11
pragma runLim, 0
string limitModules[1] = {"[serial number redacted]"}
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
string linkModName = "*"
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)
}
}
}
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) {
s = probeRichAttr_(othero,"Absolute Number", false)
if (s == "")
displayRich("\\pard " " ")
else
displayRich("\\pard " s)
s = probeRichAttr_(othero,"Object Heading", false)
if (s == "")
displayRich("\\pard " " ")
else
displayRich("\\pard " s)
}
}
}
showIn(obj,1)
【问题讨论】:
-
关于你的更新:你的链接模块真的有基线吗?或者你的传出模块是否有不同的基线链接到你的传入模块的当前版本?在这种情况下,我会说结果是“正确的”,无论这意味着什么。如果您只想要当前版本的 in 链接,您可以通过查看传入链接的模块版本来采用脚本。但是您的解决方案当然也可以
-
@Mike 每个父子需求模块只有一个“物理”链接模块和一个“物理”模块。不知何故,内部基线(相对于“当前”)似乎已经搞砸了。
标签: ibm-doors