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

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

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

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)
}

Edit: альтернативный метод для закрытия модулей, открытых триггерами, атрибутом или макетом 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)

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

Другие вопросы по тегам