각각의 새 레코드에는 논리 데이터베이스 이름과 고유한 순차 번호로 구성된 볼 수 있는 ID 문자열이 지정됩니다. 예를 들어, BUGID 데이터베이스의 10번째 레코드는 볼 수 있는 ID BUGID00000010을 가질 수 있습니다. 레코드 ID를 모를 경우, Session 오브젝트의 BuildQuery 메소드를 사용하여 조회를 작성하고 원하는 기준 세트와 일치하는 레코드를 검색할 수 있습니다.
볼 수 있는 ID 대신 데이터베이스 ID를 사용하여 레코드를 요청하려면 GetEntityByDbId 메소드를 사용하십시오. Rational ClearQuest 데이터베이스 ID(DBID)는 Rational ClearQuest 데이터베이스 내에서 오브젝트를 고유하게 식별하는 데 사용되는 정수 값입니다. DBID는 레코드 클래스에 고유하며 Stateful 레코드 내에서 고유하고 Stateless 레코드 내에서도 고유합니다.
$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 호출 중 하나는 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);