2016-12-05 78 views
0

我正在編寫一些DXL以用作DXL列,以便爲模塊中的每個對象查看in-links並返回鏈接名稱。然後,如果鏈接名稱以「verif」開頭,它將從鏈接模塊中的屬性「TestResultFloating」中獲取對象文本,並將其顯示在當前模塊的DXL列中。如果模塊中不存在屬性,DXL將忽略該錯誤

當我在整個數據庫上使用它(當前我只是使用一個沙箱)時,我會遇到的問題是,通過「驗證」鏈接模塊鏈接的某些模塊將不包含「TestResultFloating」屬性。對於這些我想壓迫'未知的對象屬性(TestResultFloating)'錯誤,而是在當前模塊中顯示類似N/A的對象。

下面是我的代碼,當前工作只要「鏈接模塊中存在」TestResultFloating「屬性,但是如果屬性不存在則會拋出錯誤。

ModName_ mSrc 
Object o = current 
Object nObject 
Object oSrc, oDest 
LinkRef lr = null 
Link l = null 
string linkname = "" 
string attrbName = "TestResultFloating" 

    for mSrc in (obj <- "*") do { 

    if (!open(mSrc)) { 
     read(fullName(mSrc), true) 
    } 
    } 

    for l in (obj <- "*") do { 

    oSrc = source(l) 
    linkname = name(module(l)) 
    string linkmodname = upper(linkname[0:4]) 

    if(linkmodname == "VERIF") { 
     string objText = oSrc."TestResultFloating" 
     display(objText) 
     } 
    } 

我試着這樣做這是我從DXL參考手冊,這是檢查屬性是否存在得到的一種方式,然後做了手術。這是我加什麼,但它似乎沒有工作,我仍然得到同樣的錯誤「不明物體屬性(TestResultFloating)」 我試了一下如下:

if(linkmodname == "VERIF") { 
     if(exists attribute "TestResultFloating"){ 
     string objText = oSrc."TestResultFloating" 
     display(objText) 
    } 
     else { 
     display("N/A") 
     } 
    } 

還請注意,我對於DOORS和DXL來說很新穎,所以如果我正在做一些大錯特錯的事情,或者我正在問一個簡單的問題,請原諒我。

回答

1

有一個實用功能叫做string probeAttr_(Object o, string attrName),如果您不確定屬性是否可讀或是否存在,可用於獲取屬性值。
此功能和爲不同情況量身定製的許多類似功能可以在文件「c:\ Program Files \ IBM \ Rational \ DOORS \ 9.6 \ lib \ dxl \ utils \ attrutil.inc」中找到

+0

我在這種情況下使用它?我以前沒有使用過這些功能。是否會像設置一個字符串= probeAttr_(obj,「TestResultFloating」),然後檢查字符串是否爲空? – Gurn64

+0

是的,完全像這樣。 – Mike