A cada novo registro é designado uma cadeia de ID visível composta do nome do banco de dados lógico e um número sequencial exclusivo. Por exemplo, o décimo registro no banco de dados BUGID pode ter o ID visível ID BUGID00000010. Se você não sabe o ID do registro, você pode usar o método BuildQuery do objeto Session para criar uma consulta e procurar registros que correspondam a um conjunto desejado de critérios.
Para solicitar um registro usando o ID do banco de dados em vez do ID visível, use o método GetEntityByDbId. Um identificador de banco de dados do Rational ClearQuest (DBID) é um valor inteiro usado para identificar exclusivamente um objeto dentro do banco de dados do Rational ClearQuest. Os DBIDs são exclusivos para uma classe de registro e exclusivos dentre os registros stateful e exclusivo dentre os registros 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;
Para visualizar o conteúdo de um registro, siga estas etapas:
Objetos Entity encontrados usando essas técnicas são somente leitura. (Para editar um objeto Entity, você deve chamar o método EditEntity do objeto Session, que está descrito na próxima lição deste tutorial.)
Uma das chamadas da API mais comuns é a para o objeto FieldInfo. Por exemplo, o objeto FieldInfo possui o método GetValue que permite que você obtenha o valor de um campo em um registro. A sub-rotina do aplicativo externo a seguir imprimi as informações armazenadas em um objeto 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);