エンティティとフック

VBScript フック内では、IBM® Rational® ClearQuest® は、現在のデータ レコードを示す暗黙の Entity オブジェクトを提供します。VBScript フックが、最初の識別子が指定されていない Entity のメソッドを呼び出した場合、IBM Rational ClearQuest は自動的にこの暗黙の Entity オブジェクトを使用します。さらに、Rational ClearQuest フックは、参照先のオブジェクトを指定する場合に使用する明示的な "entity" 変数を定義します。このエンティティ変数名は、レコード タイプ名に対して固有のものです。フックの外側から API にアクセスする場合、または暗黙でない Entity オブジェクトにアクセスする場合は、ほかの Entity オブジェクトを明示的に指定する必要があります。(また、Perl を使用する場合も、常に明示的な変数を指定し、名前を "entity" にする必要があります。詳細は、GetSession を参照してください。)

次の例は、VBScript フックで同じメソッドを呼び出す 2 つの方法を示したものです。2 番目の例で、値 defect は、現在のエンティティ (レコード タイプ) オブジェクトを示します。

fieldvalue = GetFieldValue("fieldname").GetValue() 

または

fieldvalue = defect.GetFieldValue("fieldname").GetValue() 

Session オブジェクトでエンティティを取得するメソッドは 2 つあります (BuildEntity (新規レコードのビルド用)、GetEntity (既存レコード用))。新規レコードを登録すると、BuildEntity は自動的にエンティティを取得します。既存レコードを取得するには、GetEntity メソッドに対して固有のレコード識別子とレコード タイプ名を指定します。

対応するレコード タイプの表示名を使用して、Entity オブジェクトを識別します。状態なしレコード タイプの場合は、そのレコード タイプに対する一意のキー フィールドの内容を使用して個々のレコードを識別してください。状態ありレコード タイプの場合は、レコードの表示 ID を使用してレコードを識別します。 IBM Rational ClearQuest は、新規レコードのそれぞれに、論理データベース名と固有のシーケンス番号で構成される表示 ID 文字列を割り当てます。例えば、データベース "BUGID" の 10 番目のレコードは、表示 ID が "BUGID00000010" となります。

次の VBScript の例は、2 つの Entity オブジェクト (暗黙のオブジェクトと重複オブジェクト) にアクセスするフックから示したものです。重複オブジェクトは、ID が "BUGID00000031" のレコードに対応します。

set sessionObj = GetSession

' Call a method of the implicit Entity object.
set fieldvalue = GetFieldValue("fieldname")

' VBScript assumes the current entity implicitly.

' The fieldname must be valid or IBM
Rational ClearQuest returns an error.

value = fieldvalue.GetValue() 
' Call the same method for the duplicate object, by explicitly acquiring 
' the other entity, which is of the defect record type.
set otherEntity = sessionObj.GetEntity("defect", "BUGID00000031")

set fieldvalue2 = otherEntity.GetFieldValue("fieldname")

value = fieldvalue2.GetValue() 

前の例で示すとおり、VBScript フックから暗黙でない Entity オブジェクトにアクセスするには、最初にその Entity オブジェクトを取得する必要があります。フックの外側からアクセスする場合は、操作する Entity オブジェクトを随時取得する必要があります。

注: 既存の Entity オブジェクトの取得に関する詳細は、「クエリーの操作」または現在の Session オブジェクトのメソッドを参照してください。

フィードバック