次の例は、(User オブジェクトの) UpgradeInfo メソッドを使用して、ユーザー プロパティを設定し、ユーザーが登録されるデータベースを更新する場合のパフォーマンスを最適化します。
これらの例では、ユーザー プロファイルを更新して、ユーザーが登録されるすべてのデータベースをアップグレードします。また、各アクセス可能データベースにログインを試行して更新の検証も行います。
詳しくは、「UpgradeInfo」を参照してください。
Dim dbset
Dim adminUser
Dim adminPasswd
Dim userName
Dim passwd
Dim adminSession
Dim userList
Dim userObj
Dim email
Dim phone
Dim fullname
Dim failed_dbs
Dim session
Dim dbdescs
Dim db
Dim dbname
dbset = "2003.06.00"
adminUser = "admin"
adminPasswd = ""
' Create a Rational ClearQuest admin session
set adminSession = CreateObject("CLEARQUEST.ADMINSESSION")
If (adminSession.Logon (adminUser, adminPasswd, dbset)) Then
MsgBox "Could not get Admin session login"
End If
' the user who you want to change user profile for
userName = "QE1"
passwd = "secret"
'Get the User
set userObj = adminSession.GetUser(userName)
If userObj is Nothing Then
'Do NOT use MsgBox if you are using a ClearQuest Web server
MsgBox "Error: Failed lookup for user" & userName
End If
email = "qe@example.com"
phone = "123456789"
fullname = "Best Quality Engineer"
userObj.Password(passwd)
userObj.EMail(email)
userObj.Phone(phone)
userObj.FullName(fullname)
' Upgrade all the databases that the user is subscribed to
MsgBox "Upgrade user profile for userName"
failed_dbs = userObj.UpgradeInfo
if (failed_dbs > 0) then
MsgBox "Set password failed in database(s)" & failed_dbs
end if
' verify the new password by logging into databases
set session = CreateObject("ClearQuest.Session")
dbdescs = session.GetAccessibleDatabases("MASTR", userName, dbset)
for each db in dbdescs
dbname = db.GetDatabaseName
session.UserLogon userName, passwd, dbname, AD_PRIVATE_SESSION, dbset
If session is Nothing then
MsgBox "Could not get session login to db" & dbname
End If
MsgBox "Checking user info in db" & dbname & ":"
' verify the new phone, fullname, and email
if (email <> session.GetUserEmail) then
MsgBox "Email is not upgraded in" & dbname
end if
if (fullname <> session.GetUserFullName) then
MsgBox "Full name is not upgraded in" & dbname
end if
if (phone <> session.GetUserPhone) then
MsgBox "Phone is not upgraded in" & dbname
end if
next
use CQPerlExt;
use Time::Local;
$dbset = "2003.06.00";
$adminUser = "admin";
$adminPasswd = "";
# Create a Rational ClearQuest admin session
my $adminSession= CQAdminSession::Build();
if ($adminSession->Logon( $adminUser, $adminPasswd, $dbset )) {
print "Could not get Admin session login¥n";
exit 1;
}
# the user who you want to change user profile for
my ($userName, $passwd) = ("testuser", "password");
# Get the user object for the user we want to upgrade.
my $userObj = $adminSession->GetUser($userName);
unless ($userObj) {
print "$0: Error: Failed lookup for user ¥"$userName¥"¥n";
exit 1;
}
$email="qe¥@example.com";
$phone="123456789";
$fullname="Best Engineer";
$userObj->SetPassword($passwd);
$userObj->SetEmail($email);
$userObj->SetPhone($phone);
$userObj->SetFullName($fullname);
# Upgrade all the databases that the user is subscribed to
print "Upgrade user profile for $userName¥n";
$failed_dbs = $userObj->UpgradeInfo();
@temp = @$failed_dbs;
if ($#temp > -1)
{
printf "fail dbs: %s.¥n", join(',', @temp);
}
# verify the new password by logging into databases
$session = CQSession::Build();
$dbdescs = $session->GetAccessibleDatabases("MASTR", $userName, $dbset);
foreach $i (0 .. $dbdescs->Count()-1)
{
$dbname = $dbdescs->Item($i)->GetDatabaseName();
$session->UserLogon($userName, $passwd, $dbname, $dbset);
unless (defined $session)
{
print LOG "Could not get session login to db $dbname¥n";
exit 1;
}
print "Checking user info in db $dbname:¥n";
# verify the new phone, fullname, and email
if ($email ne $session->GetUserEmail()) {
print "Email is not upgraded in $dbname¥n";
}
if ($fullname ne $session->GetUserFullName()) {
print "Full name is not upgraded in $dbname¥n";
}
if ($phone ne $session->GetUserPhone()) {
print "Phone is not upgraded in $dbname¥n";
}
else {
print "User information verified.¥n";
}
}