ユーザー情報のアップグレード

次の例は、(User オブジェクトの) UpgradeInfo メソッドを使用して、ユーザー プロパティを設定し、ユーザーが登録されるデータベースを更新する場合のパフォーマンスを最適化します。

これらの例では、ユーザー プロファイルを更新して、ユーザーが登録されるすべてのデータベースをアップグレードします。また、各アクセス可能データベースにログインを試行して更新の検証も行います。

詳しくは、「UpgradeInfo」を参照してください。

VBScript

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 

Perl

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";
          }
} 

フィードバック