Chaque nouvel enregistrement dispose d'une chaîne d'ID visible, composée du nom de base de données logique et d'un nombre de séquence unique. Par exemple, le dixième enregistrement de la base de données BUGID peut comporter l'ID visible BUGID00000010. Si vous ignorez l'ID de l'enregistrement, vous pouvez utiliser la méthode BuildQuery de l'objet Session afin de créer une requête et rechercher des enregistrements correspondant à un ensemble de critères donné.
Pour effectuer une requête sur un enregistrement à l'aide de son ID base de données au lieu de son ID visible, utilisez la méthode GetEntityByDbId. Un identificateur de base de données Rational ClearQuest (ID base de données) est un entier utilisé pour identifier de façon unique un objet au sein d'une base de données Rational ClearQuest. Les IDBD sont propres à chaque classe d'enregistrements, uniques au sein des enregistrements avec état et uniques au sein des enregistrements sans état.
$session->GetEntity(nom_déf_entité, nom_affichage);
# 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;
Pour afficher le contenu d'un enregistrement, procédez comme suit :
Les objets Entity trouvés à l'aide de ces techniques sont en lecture seule. (Pour modifier un objet Entity, vous devez appeler la méthode EditEntity de l'objet Session, décrite dans la leçon suivante de ce tutoriel.)
Les appels de l'API les plus courants correspondent à l'objet FieldInfo. Par exemple, l'objet FieldInfo contient la méthode GetValue, qui vous permet d'obtenir la valeur d'une zone dans un enregistrement. La sous-routine de l'application externe suivante fournit les informations stockées dans un objet 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);