未理解 DXL 错误:DXL:<D:\XXXX.dxl:1234> 操作需要当前模块 => 美国翻译 = 操作需要当前模块

DXL error not undestood :DXL: <D:\XXXX.dxl:1234> Un module en cours est requis pour lopération => US traduction = operation requires a current module

我收到以下错误消息: DEBUG:isBaseline(spec_produit) = true -R-E- DXL: Un module en cours est requis pour lopération US traduction = 操作需要当前模块

第 1234 行如下:打印“DEBUG:为“name(module_in_database)”=“major(baseline_open)”加载基线。”次要(baseline_open)后缀(baseline_open)“\n”

有:baseline_open = baselineInfo(module_in_database) (=true)

我不明白为什么我会收到这条消息,因为我已经在其他地方成功地使用了这种编码。

这里我有一个循环消息,用于检测在关闭所有打开的模块后我是否仍然打开模块(我不知道为什么我仍然有打开的模块,但这是另一个主题)

循环是:

 // display list of open module at then end of the script
    for module_in_database in database do 
    {   
        logResult = logResult "INFO: open modules at the end the script are " fullName(module_in_database) "\n"
        // display more information on open modules : (DEBUG) :
        print "DEBUG: isBaseline(" name(module_in_database) ") = " isBaseline(module_in_database) "\n"
        baseline_open =  baselineInfo(module_in_database)
        if (baseline_open != null) {
            print "DEBUG: baseline loaded for" name(module_in_database) " = " major(baseline_open) "." minor(baseline_open) suffix(baseline_open) "\n"
        } else {
            print "DEBUG: " name(module_in_database) " = CURRENT \n"
        }
    }

奇怪。 我已经能够 运行 具有以下声明的脚本

Module module_in_database
Baseline baseline_open
string logResult = ""

我得到了预期的结果。 我记得 perms 的一些问题需要当前模块,即使它们不应该。

也许您只需要在循环中添加一些行

if type (module_in_database) == "Formal" then {
    current = module_in_database 
} else {
    continue
}

但仍然没有必要

版本 1:

Module module_in_database
Baseline baseline_open
string logResult = ""

// display list of open module at then end of the script
for module_in_database in database do 
{   
    logResult = logResult "INFO: open modules at the end the script are " fullName(module_in_database) "\n"
    if type (module_in_database) == "Formal" then {
        // display more information on open modules : (DEBUG) :
        print "DEBUG: isBaseline(" name(module_in_database) ") = " isBaseline(module_in_database) "\n"
        baseline_open =  baselineInfo(module_in_database)
        if (baseline_open != null) {
            current = module_in_database  // <------ set current module so that the next line works!
            print "DEBUG: baseline loaded for" name(module_in_database) " = " major(baseline_open) "." minor(baseline_open) suffix(baseline_open) "\n"
        } else {
            print "DEBUG: " name(module_in_database) " = CURRENT \n"
        }
    } else {
        print fullName(module_in_database) " is a Link Module. No baselineInfo available\n"
    }
}

版本 2:

Module module_in_database
Baseline baseline_open
string logResult = ""
ModuleVersion mv
string version_string

// display list of open module at then end of the script
for module_in_database in database do 
{   
    logResult = logResult "INFO: open modules at the end the script are " fullName(module_in_database) "\n"
    if type (module_in_database) == "Formal" then {
        // display more information on open modules : (DEBUG) :
        print "DEBUG: isBaseline(" name(module_in_database) ") = " isBaseline(module_in_database) "\n"
        mv = moduleVersion (module_in_database)
        version_string = versionString (mv) // <---- don't use "major" and "minor", instead use version_string, which does not require a "current" module
        if (version_string != "") {
            print "DEBUG: baseline loaded for" name(module_in_database) " = " version_string "\n"
        } else {
            print "DEBUG: " name(module_in_database) " = CURRENT \n"
        }
    } else {
        print fullName(module_in_database) " is a Link Module. No baselineInfo available\n"
    }
}

P.S:再次阅读我们的帖子,我认为误解源于DOORS在命名事物时的不一致。 “当前版本”是一个不是基线的模块。在 DOORS 中,“当前模块”是一个模块版本,即“用户当前与之交互的那个 '''module'''”。当您打开五个 windows 模块(当前版本或基线或 link 模块)时,只有其中一个 windows 在前面 - 只有一个 windows捕获您的键盘输入 - window 包含“当前”模块。如果你有像 print fullName (current Module) 这样的单行代码,然后打开数据库资源管理器(主 window),单击工具 -> 编辑 DXL… 并粘贴代码,它会抱怨没有模块是最新的。如果您随后单击一个 window 并在此 window 中单击工具->编辑 DXL...,您将获得相同的 DXL window,但现在代码将 运行 ,因为现在 DOORS 知道当您说 fullName (current Module).

时您指的是哪个模块

不幸的是,这仍然是不正确的说法:当前模块与前面的 window 没有直接关系 - 您甚至可能在不可见的情况下打开了模块。使用 DXL 你可以说“这个不可见的模块是当前模块”,尽管前面有一个 window 显示不同的模块。

这很复杂,但我希望我现在解释正确。