【问题标题】:DOORS Layout DXL is reporting each link twiceDOORS Layout DXL 将每个链接报告两次
【发布时间】: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


【解决方案1】:

我已经看到对象 DID 之间有两个链接的情况,这可以通过不同的链接模块(模块 A 的对象 1 满足模块 B 的对象 2 和模块 A 的对象 1 精炼模块 B 的对象 2) .虽然出现这种情况可能是有原因的,但大多数情况下是由未正确使用的“链接移动”脚本引起的。

您还应该通过显示链接模块的名称(变量 linkModName)来扩充您的代码。也许这说明了你观察的原因

【讨论】:

  • 谢谢 - 但我确实检查了,只有一个链接。在远端运行向导(用于外链)按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多