显示其他模块的DXL列

时间:2013-03-04 13:19:19

标签: ibm-doors

我正在使用一种类型的链接在正式模块中工作。这些链接(我们称之为X型链接)由4个不同的正式模块组成。例如,我在模块A中工作,它具有来自模块B的链接,具有来自模块C的链接,具有来自模块D的链接。

我有一个视图,在每个链接级别的不同列中显示:第1列:深度1链接(AB),第2列:深度2链接(BC),第3列:深度3链接(CD)。

每个列都由这样的脚本生成:

    pragma runLim, 0
    int lines[4] = {0, 0, 0, 0}
    void adjustLines(int depth, showAtDepth) {
    int count
    for (count = 0; count < 4; count++) {
    while (lines[depth-1] < lines[count]) {
        if (depth == showAtDepth) displayRich("\\pard " " ")
        lines[depth-1]++
    }
  }
}
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 = "../links/TYPE X"
    for lr in all(o<-linkModName) do {
        otherMod = module (sourceVersion lr)
        if (!null otherMod) {
            if ((!isDeleted otherMod) && (null data(sourceVersion lr))) {
                load((sourceVersion lr),false)
            }
        }
    }
    for l in all(o<-linkModName) do {
        otherVersion = sourceVersion l
        otherMod = module(otherVersion)
        if (null otherMod || isDeleted otherMod) continue
        othero = source l
        if (null othero) {
            load(otherVersion,false)
        }
        othero = source l
        if (null othero) continue
        if (isDeleted othero) continue
        int oldLines = lines[depth-1]
        adjustLines(depth, 1)
        bool kick = (doneOne) && (lines[depth-1] == oldLines)
        if (kick) {
            lines[depth-1]++
            if (depth == 1) displayRich("\\pard " " ")
        }
        if (depth < 4) {
            showIn(othero, depth+1)
        }
        doneOne = true
        if (depth == 1) {
            s = name(otherMod)
            if (isBaseline(otherVersion)) {
                s = s " [" versionString(otherVersion) "]"
            }

        s = "{\\b " s " : }"
        s = s " " probeRichAttr_(othero,"Object Heading", false)
        s = s " " probeRichAttr_(othero,"Object Text", false)

        displayRich s

        }
        lines[depth-1] += 3
    }
}
showIn(obj,1)

但是现在,我必须添加一个新列,其中包含在模块C和其他新模块之间定义的其他类型的链接(类型Y),而不是直接与我的模块(A)链接。幸运的是,我在模块C的一列中有这些关系(作为布局dxl)。

如何在我的模块(A)中显示保存在模块(C)视图中的列保存在当前视图中?

提前感谢您的合作和帮助

1 个答案:

答案 0 :(得分:0)

按照类型X链接到模块C,然后按照类型Y链接。

变化:

string linkModName = "../links/TYPE X"

要:

string linkModName = (depth<3) ? "../links/TYPE X" : "../links/TYPE Y"

您可能需要一个不同的号码,因为我不确定您的结构。