【问题标题】:DOORS DXL link to non existent object in module BaselineDOORS DXL 链接到模块基线中不存在的对象
【发布时间】:2015-10-02 11:23:58
【问题描述】:

我目前在处理具有不同基线的两个模块之间的链接时遇到问题。

示例: 我有一个带有 10 个基线的模块 A 和一个带有 10 个基线的模块 B。 链接是来自 A => B 的链接。模块 A 的最后一个基线在模块 B 的最后一个基线之后 1 个月完成。与此同时,模块 B 中的更多对象已创建并从模块 A 链接到它们。

所以现在我在模块 A 的最后一个基线中有一些链接,这些链接链接到模块 B 中的对象,这些对象在模块 B 的最后一个基线中不存在(仅存在于最后一个基线++中)。

当我运行我的 DXL 脚本以获取所有链接对象时,我还获得了这些不存在对象的 ID,即使它们在最后一个基线中不存在。我打开两个模块并使用 load(module, baseline,false) 函数加载最后一个基线。基线的名称有效,我的调试表明我真的在使用最新的基线。但不知何故,这些不存在的对象由于链接而被列出。我读过一些关于回显链接的内容,但它们对我不起作用。

一种可能的解决方案是获取模块 A 的基线日期并将其与链接对象的创建日期进行比较。但是必须有一种更简单、更清洁的方式恕我直言......有什么想法吗?

【问题讨论】:

    标签: ibm-doors


    【解决方案1】:

    很抱歉,我无法直接回答您的问题。我尝试了两个模块(A 和 B)之间的脚本,就像你介绍的那样。我链接了这些对象,创建了一个新基线,并添加了一些同样链接的对象。

    我没有遇到您在运行以下脚本时出现的问题。我希望有一些东西能给你一个新的想法。基本上我打开模块 B 的基线并计算链接。较新的对象(我在当前版本中找到)不包括在此计数中。

    Module modB = read("/Testmappe/ModuleB", false)
    Module baselineModuleB
    Object objB
    Link l
    string linkModName = "*"
    int countLinks = 0
    
      // baseline(MAJ, MIN, SUFFIX)
    Baseline myBaseline = baseline(0, 1, "")
    
    if(baselineExists(modB, myBaseline))
    {
      baselineModuleB = load(modB, myBaseline, false)
    
      for objB in baselineModuleB Module do {
        for l in all(objB<-linkModName) do {
        countLinks++
        }
      }
      print "Number of in-links are: " countLinks ""
    }
    

    【讨论】:

    • 感谢脚本。它实际上应该可以工作,但只计算模块的内链接。问题更多的是,如果我遵循一个传出链接,它将导致一个不存在的对象。我现在做了一个解决方法,检查“创建者”属性并将其与模块 A 的基线日期进行比较。似乎链接的日期是目前我唯一的机会。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多