2016-12-05 13 views
0

モジュール内の各オブジェクトに対して、リンク内を調べてリンク名を返すDXL列として使用するために、いくつかのDXLを作成しています。リンク名が "verif"で始まる場合、リンクされたモジュールの属性 "TestResultFloating"からオブジェクトテキストを取得し、現在のモジュールのDXL列に表示します。属性がモジュールに存在しない場合のエラーを無視するDXL

"verif"リンクモジュールを介してリンクされたモジュールの中には、 "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

この場合、私はそれを使用しますか?私は以前はその機能を使っていませんでした。それは、string = probeAttr_(obj、 "TestResultFloating")を設定し、文字列が空であるかどうかをチェックするようなものでしょうか? – Gurn64

+0

はい、まさにこのようです。 – Mike

関連する問題