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 オブジェクトを随時取得する必要があります。