A cada nuevo registro se le asigna una serie de ID visible compuesta por el nombre de base de datos lógica y un número secuencial exclusivo. Por ejemplo, el décimo registro de la base de datos BUGID puede tener el ID visible BUGID00000010. Si no conoce el ID del registro, puede utilizar el método BuildQuery del objeto Session para crear una consulta y buscar los registros que coincidan con un conjunto de criterios deseado.
Para solicitar un registro utilizando su ID de base de datos en lugar del ID visible, utilice el método GetEntityByDbId. Un identificador de base de datos (DBID) de Rational ClearQuest es un valor entero que se utiliza para identificar de modo exclusivo un objeto en una base de datos de Rational ClearQuest. Los DBID son exclusivos de una clase de registros, exclusivos dentro de los registros con estado y exclusivos dentro de los registros sin estado.
$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 ver el contenido de un registro, siga los pasos que se indican a continuación:
Los objetos Entity que se encuentran utilizando estas técnicas son de sólo lectura (para editar un objeto Entity, debe llamar al método EditEntity del objeto Session, que se describe en la próxima lección de esta guía de aprendizaje).
Una de las llamada de API más comunes es al objeto FieldInfo. Por ejemplo, el objeto FieldInfo tiene el método GetValue que le permite obtener el valor de un campo de un registro. La subrutina de aplicación externa siguiente imprime la información almacenada en un 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) { # tipo de registro con estado 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);