각각의 새 레코드에는 논리 데이터베이스 이름과 고유한 순차 번호로 구성된 볼 수 있는 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);