是否有DXL API来获取已打开模块的引用计数?

时间:2013-02-01 12:56:23

标签: ibm-doors

DOORS 8.3的“管理开放模块”对话框列出了所有打开的模块,它们的模式,如果可见等,以及参考数量。我想使用该引用计数来确定我的脚本是否可以安全地关闭模块,并避免在当前正在使用时关闭。我不确定“参考”列的确切显示。我没有在互联网上的帮助或相应信息中找到它的描述。有没有人知道是否有一些未记录的DXL API可以访问该信息?

编辑:我发现函数refcount_返回一个整数。但我不知道返回值意味着什么。

2 个答案:

答案 0 :(得分:1)

看起来像References指的是当前引用该模块的开放模块的数量。例如:当您打开具有链接的模块时,DOORS还会在后台打开链接使用的所有链接模块。因此,如果我打开通过LINKMOD_A链接的文档,LINKMOD_A将显示1个引用。如果我然后打开另一个通过相同LINKMOD_A链接的文档,引用的数量将增加到2.我没有看到正式模块上的引用数量高于1。在你的一些模块上尝试这个,看看你何时在链接模块上获得多个引用,然后针对该链接模块运行refcount_函数,看看你是否得到相同的数字。我不确定这是否是你正在寻找的功能,但它肯定是可能的。祝你好运!

答案 1 :(得分:0)

我假设您的脚本正在打开模块,所以您需要做的就是检查它是否已经先打开。

string sModuleFullName = "/Some/Module/Path"
Module oModule = module(sModuleFullName)
bool bClose = null(oModule)
if(null(oModule)) {
oModule = read(sModuleFullName, true,true)
}

// do stuff

if(bClose) {
close(oModule)
}

编辑: 关闭由触发器,属性或布局dxl打开的模块的替代方法

// Save currently open Modules to a Skip
Skip oOpenModulesSkip = createString()
Module oModule
for oModule in database do {
    put(oOpenModulesSkip, fullName(oModule), fullName(oModule))
}

// do stuff

// Close Modules not in the Skip
for oModule in database do {
    if(!find(oOpenModulesSkip, fullName(oModule))) {
        close(oModule, false)
    }
}
delete(oOpenModulesSkip)