#count #ibm-doors
#граф #ibm-двери
Вопрос:
я хотел бы узнать охват моих требований с помощью ссылок из другого документа doors. Вот сценарий:
Module m = current
Object o = null
string NameLinkModule = "./xyz/abc"
Link InLink
int Req_Count = 0
int noInLinkCount = 0
for o in m do {
if ((isMember(o."a","aaa")) amp;amp; (isMember(o."b","bbb"))) {
Req_Count
// Check for any inlinks at all
bool no_inlink_flag = true
for InLink in o <- NameLinkModule do {
// If this executes, at least 1 inlink- flag and break
no_inlink_flag = false
break
}
// If no inlinks, increment and print object ID without inlink
if ( no_inlink_flag ) {
print o."ID"
noInLinkCount
}
}
}
print "Total Requirement Number = "
print Req_Count
print "No In Link Count = "
print noInLinkCount
print "Coverage = "
int coverage = 100 * ((Req_Count - noInLinkCount) / Req_Count)
print coverage
Каким-то образом количество объектов без каких-либо inlink неверно, оно равно общему количеству требований, что означает, что ни один отдельный объект не имеет inlink. Но у меня есть ссылки в текущем модуле. Я проверил модуль ссылок, и там у меня тоже есть ссылки.
Что я делаю false?
Заранее спасибо!
Ответ №1:
В графическом интерфейсе, когда вы нажимаете на входящую ссылку, вы видите текст «не загружено», только когда вы открываете модуль с исходящей ссылкой, вы видите информацию о подключенном объекте.
Эта концепция, переведенная в DXL, представляет собой разницу между ссылками на ссылки ( LinkRef
) и ссылками ( Link
). В вашем случае достаточно подсчитать ссылки LinkRefs. Только если вам нужна дополнительная информация об удаленном объекте, сначала вам нужно открыть модуль с исходящей ссылкой, а затем у вас также будет Link
s в дополнение к LinkRef
s в вашем модуле входящей ссылки
Комментарии:
1. Большое спасибо. Это сработало, за исключением вывода o.»ID» и вычисления покрытия.. У меня есть еще одна проблема.. В используемом мной linkmodule есть 2 набора ссылок; один — «цель к источнику», а другой — «источник к цели». Хотя один из них пуст, другой включает ссылки. Имеет ли это какое-либо значение, когда я просто использую имя linkmodule в своем скрипте или я могу каким-то образом также использовать linkset в своем скрипте?
2. Достаточно просто использовать имя linkmodule
3.
print o."ID"
—>print o."ID" ""
(o."ID"
является ссылкой на атрибут. когда вы приводите ссылку на атрибут к строке, например, путем объединения ее со строкой null, вы получаете значение атрибута)4. В конце скрипта я всегда получаю покрытие 0, даже если я приведу результат к реальному типу данных. Что здесь не так? Спасибо!
5. DXL довольно требователен, когда дело доходит до объединения int и real. Это сработало для меня, когда
Req_Count
иnoInLinkCount
имеют типint
:real coverage = 100.0 * realOf(Req_Count - noInLinkCount) / realOf Req_Count ; print coverage ""
(обратите особое внимание на разницу между100
и100.0
Ответ №2:
Используйте LinkRef вместо ссылки
LinkRef InLink