レコードの内容を表示するには、Session オブジェクト の GetEntity メソッドを呼び出してレコードを取り出します。
各新規レコード には、1 つの表示可能な ID 文字列が割り当てられます。これは、論理データベース名と固有 の順序番号から構成されます。例えば、BUGID データベースの 10 番目のレコードは、表示 ID が BUGID00000010 となります。レコードの ID が不明な場合は、Session オブジェクトの BuildQuery メソッドを使用して、必要な条件セットに一致するレコードのクエリーと検索を作成します。
表示 ID の代わりにデータベース ID を使用してレコードを要求するには、GetEntityByDbId メソッドを使用します。Rational ClearQuest データベース ID (DBID) は、 Rational ClearQuest データベース内のオブジェクトを一意的に識別するために使用される整数値です。 DBID は、 ある 1 つのクラスのレコードで固有で、状態ありレコード内で固有で、 状態なしレコード内で固有です。
$session->GetEntity(entity_def_name, display_name);
# Build Session object...
$sessionObj->UserLogon("admin","","SAMPL","");
#Get record DEF00013323
$record1 = $sessionObj->GetEntity( "defect", "DEF00013323" );
$record1 = $sessionobj->GetEntity("defect", "DEF00013323");
die "Error getting Defect DEF00013323" unless $record1;
レコードの内容を表示するには、次のステップに従います。
これらの方法を使用して見つかった Entity オブジェクトは、読み取り専用です。(Entity オブジェクト を編集するには、Session オブジェクトの EditEntity メソッドを 呼び出す必要があります。それは、このチュートリアルの次のレッスンで説明されます。)
最も一般的な API 呼び出しの 1 つは、FieldInfo オブジェクトに対する呼び出しです。例えば、FieldInfo オブジェクトには、レコード内のフィールドの値を取得できる GetValue メソッドがあります。次の外部アプリケーションサブルーチンは、FieldInfo オブジェクトに格納されている情報を印刷します。
use CQPerlExt;
$CQsession = CQSession::Build();
$CQsession->UserLogon("admin", "", "perl", "");
$record = $CQsession->GetEntity("Defect", "perl00000001");
$fieldInfo = $record->GetFieldValue("id");
$temp = $fieldInfo->GetValueStatus();
if ($temp == $CQPerlExt::CQ_VALUE_NOT_AVAILABLE) {
$status = "VALUE_NOT_AVAILABLE";
} elsif ($temp == $CQPerlExt::CQ_HAS_VALUE) {
$status = "HAS_VALUE";
$value = "'" . $fieldinfo->GetValue() . "'";
} elsif ($temp == $CQPerlExt::CQ_HAS_NO_VALUE) {
$status = "NO_VALUE";
} else {
$status = "<invalid value status: "& temp & ">";
}
$temp = $fieldInfo->GetValidationStatus();
if ($temp == $CQPerlExt::CQ_KNOWN_INVALID) {
$validity = "INVALID";
} elsif ($temp == $CQPerlExt::CQ_KNOWN_VALID) {
$validity = "VALID";
} elsif ($temp == $CQPerlExt::CQ_NEEDS_VALIDATION) {
$validity = "NEEDS_VALIDATION";
} else { $validity = "<invalid validation status: " & temp & ">";
}
$valuechange = "";
if ($fieldInfo->ValueChangedThisSetValue()) {
$valuechange = $valuechange . " setval=Y";
} else {
$valuechange = $valuechange . " setval=N";
}
if ($fieldInfo->ValueChangedThisGroup()) {
$valuechange = $valuechange . " group=Y";
} else {
$valuechange = $valuechange . " group=N";
}
if ($fieldInfo->ValueChangedThisAction()) {
$valuechange = $valuechange . " action=Y";
} else {
$valuechange = $valuechange . " action=N";
}
$validchange = "";
if ($fieldInfo->ValidityChangedThisSetValue()) {
$validchange = $validchange . " setval=Y";
} else {
$validchange = $validchange . " setval=N";
}
if ($fieldInfo->ValidityChangedThisGroup()) {
$validchange = $validchange . " group=Y";
} else {
$validchange = $validchange . " group=N";
}
if ($fieldInfo->ValidityChangedThisAction()) {
$validchange = $validchange . " action=Y";
} else {
$validchange = $validchange . " action=N";
}
print "FieldInfo for field = ", $fieldInfo->GetName(), "¥n";
print "Field's value = ", $value, "¥n";
print "Value status = ", $status, "¥n";
print "Value change = ", $valuechange, "¥n";
print "Validity = ", $validity, "¥n";
print "Validity change = ", $validchange, "¥n";
print "Error = ", $fieldInfo->GetMessageText(), "'";
CQSession::Unbuild($CQsession);
use strict;
use CQPerlExt;
my $sessionObj = CQSession::Build();
$sessionObj->UserLogon("admin", "", "SAMPL", "");
my $entityDefNames = $sessionObj->GetEntityDefNames();
# Iterate over the record types
foreach my $edef_name (@$entityDefNames)
{
my $entityDefObj = $sessionObj->GetEntityDef($edef_name);
print_edef($entityDefObj);
}
sub print_edef {
my($edef)=@_;
# The parameter is an EntityDef object.
my($names, $name);
print "Dumping EntityDef ", $edef->GetName; print "\nFieldDefs:";
$names = $edef->GetFieldDefNames;
foreach $name (@$names) {
print " " , $name , " type=" , $edef->GetFieldDefType($name);
}
print "¥nActionDefs: ";
$names = $edef->GetActionDefNames;
foreach $name (@$names) {
print " " , $name , " type=" , $edef->GetActionDefType($name);
}
if ($edef->GetType == $CQPerlExt::CQ_REQ_ENTITY) {
# stated record type
print "¥nEntityDef is a REQ entity def";
print "¥nStateDefs:";
$names = $edef->GetStateDefNames;
foreach $name (@$names) {
print " " , $name;
}
}
else {
# stateless record type
print "¥nEntityDef is an AUX entity def";
}
print "¥n¥n";
}
CQSession::Unbuild($sessionObj);