Существует ли API DXL для получения количества ссылок на открытые модули?

В диалоговом окне «Управление открытыми модулями» в DOORS 8.3 перечислены все открытые модули, их режим, видимость и т. д., а также количество ссылок. Я хочу использовать этот счетчик ссылок, чтобы решить, может ли мой сценарий безопасно закрыть модуль и избежать закрытия, если он в настоящее время используется. Я не уверен, что именно отображается в столбце «Ссылки». Я не нашел его описания в справке или соответствующей информации в Интернете. Кто-нибудь знает, есть ли какой-то недокументированный API DXL, который дает мне доступ к этой информации?

Изменить: я нашел функцию refcount_, которая возвращает целое число. Но я понятия не имею, что означает возвращаемое значение.


person Kai K.    schedule 01.02.2013    source источник


Ответы (2)


Я предполагаю, что ваш скрипт открывает модули, поэтому все, что вам нужно сделать, это сначала проверить, не открыт ли он уже.

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)
person Adamarla    schedule 06.05.2013
comment
Это более или менее подход, который я уже использую. Но я хотел иметь лучший способ оптимизировать чтение и закрытие модулей. Например. там модули, которые будут неявно открываться из-за раскладки или атрибута DXL. Мой скрипт ничего не знает об этих модулях. - person Kai K.; 16.05.2013
comment
До сегодняшнего дня я не нашел лучшего решения. Поэтому я принимаю это как ответ. - person Kai K.; 22.06.2015

Похоже, что ссылки относятся к количеству открытых модулей, которые в настоящее время ссылаются на этот модуль. Например: когда вы открываете модуль со ссылками, DOORS также открывает в фоновом режиме все модули ссылок, которые используют ссылки. Поэтому, если я открою документ, содержащий ссылки через LINKMOD_A, LINKMOD_A покажет 1 ссылку. Если я затем открою другой документ, в котором есть ссылки через тот же LINKMOD_A, количество ссылок увеличится до 2. Я не вижу, чтобы количество ссылок когда-либо превышало 1 в формальном модуле. Попробуйте это на некоторых из ваших модулей и посмотрите, когда вы получите более одной ссылки на модуль ссылки, затем запустите свою функцию refcount_ для этого модуля ссылки и посмотрите, получите ли вы тот же номер. Я не уверен, что это та функция, которую вы ищете, но это, безусловно, возможно. Удачи!

person Steve Valliere    schedule 01.02.2013
comment
Прочитав ваш ответ, позвольте мне подумать, что эта информация о ссылках - это не то, что я ищу. Но спасибо за ваш ответ. - person Kai K.; 05.02.2013