Jedem neuen Datensatz wird eine sichtbare ID-Zeichenfolge zugeordnet, die sich zusammensetzt aus dem Namen der logischen Datenbank und einer eindeutigen fortlaufenden Zahl. Der zehnte Datensatz in der Datenbank BUGID könnte beispielsweise die sichtbare ID "BUGID00000010" haben. Wenn Sie die ID des Datensatzes nicht kennen, können Sie mit der Methode BuildQuery des Sitzungsobjekts eine Abfrage erstellen und nach Datensätzen suchen, die mit den gewünschten Kriterien übereinstimmen.
Verwenden Sie die Methode GetEntityByDbId, um einen Datensatz über seine Datenbank-ID und nicht seine sichtbare ID anzufordern. Eine Rational-ClearQuest-Datenbankkennung (DBID) ist ein ganzzahliger Wert, mit dem ein Objekt in einer Rational-ClearQuest-Datenbank eindeutig identifiziert wird. DBIDs sind im Kontext einer Datensatzklasse, im Kontext der statusabhängigen Datensätze und im Kontext der statusunabhängigen Datensätze eindeutig.
$session->GetEntity(Name_der_Entitätsdefinition, Anzeigename);
# Sitzungsobjekt erstellen... $sessionObj->UserLogon("admin","","SAMPL",""); #Datensatz DEF00013323 abrufen $record1 = $sessionObj->GetEntity( "defect", "DEF00013323" );
$record1 = $sessionobj->GetEntity("defect", "DEF00013323"); die "Error getting Defect DEF00013323" unless $record1;
Führen Sie die folgenden Schritte aus, um den Inhalt eines Datensatzes anzuzeigen:
Entitätsobjekte, die mit diesen Verfahren ermittelt werden, sind schreibgeschützt. (Zum Bearbeiten eines Entitätsobjekts müssen Sie die Methode EditEntity des Sitzungsobjekts aufrufen, die in der nächsten Lektion dieses Lernprogramms beschrieben wird.)
Das FieldInfo-Objekt wird von der API am häufigsten aufgerufen. Beispielsweise hat das FieldInfo-Objekt die Methode GetValue, mit der Sie den Wert eines Felds in einem Datensatz abrufen können. Die folgende externe Anwendungssubroutine gibt die Informationen, die in einem FieldInfo-Objekt gespeichert sind, aus.
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(); # Durch Satztypen navigieren foreach my $edef_name (@$entityDefNames) { my $entityDefObj = $sessionObj->GetEntityDef($edef_name); print_edef($entityDefObj); } sub print_edef { my($edef)=@_; # Der Parameter ist ein EntityDef-Objekt. 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) { # festgestellter Satztyp 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);