Ibm doors 未撤消DXL错误:DXL:<;D:\XXXX.dxl:1234>;课程中的联合国模块要求使用lop和#xE9;定量=>;美国贸易=操作需要电流模块

Ibm doors 未撤消DXL错误:DXL:<;D:\XXXX.dxl:1234>;课程中的联合国模块要求使用lop和#xE9;定量=>;美国贸易=操作需要电流模块,ibm-doors,Ibm Doors,我收到以下错误消息: 调试:isBaseline(spec_produit)=true-R-E-DXL:Un模块过程中的测试要求 美国贸易=操作需要电流模块 第1234行如下:打印“调试:为“名称(模块\u在\u数据库中)”加载的基线=“主要(基线\u打开)”,“次要(基线\u打开)后缀(基线\u打开)”\n With:baseline_open=baselineInfo(模块_在_数据库中)(=true) 我不明白为什么我会有这样的信息,因为我已经在其他地方成功地使用了这种编码 在这里,我有一

我收到以下错误消息: 调试:isBaseline(spec_produit)=true-R-E-DXL:Un模块过程中的测试要求 美国贸易=操作需要电流模块

第1234行如下:打印“调试:为“名称(模块\u在\u数据库中)”加载的基线=“主要(基线\u打开)”,“次要(基线\u打开)后缀(基线\u打开)”\n

With:baseline_open=baselineInfo(模块_在_数据库中)(=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 = ""
我得到了预期的结果。 我记得Perm的一些问题,它们期望当前模块,尽管它们不应该

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

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"
    }
}
数据库中的模块 基线开放 字符串logResult=“” //在脚本末尾显示打开模块的列表 对于数据库do中的\u数据库中的模块\u { logResult=logResult“信息:在脚本末尾打开的模块是“全名(模块\u在\u数据库中)”\n 如果类型(数据库中的模块)=“正式”,则{ //显示有关打开模块的详细信息:(调试): 打印“调试:isBaseline(“名称(模块\u在\u数据库中)”)=“isBaseline(模块\u在\u数据库中)”\n 基线\u打开=基线信息(模块\u在\u数据库中) 如果(基线打开!=空){ current=module\u在\u数据库中//编辑DXL…并粘贴代码,它会抱怨没有模块是当前的。如果您单击一个窗口,然后在此窗口中单击工具->编辑DXL…,您将获得相同的DXL窗口,但现在代码将运行,因为现在DOORS知道您在说
全名时所指的是哪个模块(当前模块)

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


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

谢谢,什么是“正式类型”?我如何在循环中使用电流?我不必使用它?以前有三种不同的模块类型,现在有“链接”和“正式”两种类型,后者是“正常”模块(如文件->新建->正式模块)。您可以直接在您的行
logResult=
之前或之后使用该代码段。我不确定这是否有帮助,我只是注意到,有时,一些烫发只对“当前”模块有效(GUI等效于在模块已打开时双击数据库资源管理器中的模块)。如果您运行一个小脚本(如
打印全名当前模块
),您会看到不同之处。谢谢,我会检查,但我不确定这是否是问题所在,因为当脚本失败时,我会显示一个指示模块名称的显示,而它不是链接模块:/嗯,如果第1234行是带有调试消息的,那么它会显示至少o该行中的一个PERM,即
字符串名称(模块m)
字符串主键(基线b)
字符串次键(基线b)
字符串后缀(基线b)
要求将模块设置为“当前”(可能是后三个)。因此,是的,指示的模块不是链接模块,而是正式模块,我的想法是将此模块准确设置为“当前”,以便perm满足其先决条件。这是有意义的,因为可以创建一个类型为
Baseline
的对象,而不引用任何模块,例如,通过使用perm
Baseline nextMajor(string suff)
。因此,“基线”似乎是一个抽象对象,只有“有意义”结合一个具体的模块,即当前模块。很明显,Method1工作得很好。Method2给了我一个版本的空白字符串。关于当前对大调/小调等的要求,我想我永远不需要它,因为我在“加载”后使用它我猜加载会将当前模块更改为加载的模块。对吗?如果
versionString(mv)
是一个空字符串,这意味着代码正在查看当前版本。如果它正在查看基线,versionString应该给出类似“2.1错误修复”的内容.我认为加载基线会将当前模块更改为基线是正确的。但我不相信这一点-我更喜欢使用ModuleVersions,这样我就不必依赖非常脆弱的“当前模块”(可能会更改为与您预期不同的内容,例如,通过打开后触发器)
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"
    }
}