< 前へ | 次へ >

ユーザー データベースへのログオン

Session の作成が終わったら、アクセス可能なデータベースの リストを取得でき、次に、ユーザー データベースにログオンするためのログオン認証を用意する必要があります。

認証されていないユーザーからデータベースを保護するために、 データベースにログオンしてからそのレコードにアクセスする必要があります。フックの場合、 このユーザー認証は Rational ClearQuest クライアント アプリケーションに よって自動的に処理されます。ただし、外部アプリケーションについては、Session オブジェクトを使用し、プログラム ベースでログオンする必要があります。
ログオンするデータベースを判別し、ログオンを実行するには、次のステップに従います。
  1. Session オブジェクトの GetAccessibleDatabases メソッドを呼び出して、スキーマ リポジトリに関連付けられているデータベースのリストを取得します。このメソッドは、DatabaseDesc オブジェクトのコレクションを戻します。これらのオブジェクトには、それぞれ単一のユーザーに関する情報が入っています。
  2. DatabaseDesc オブジェクトのメソッドを使用して、データベースの名前、またはデータベースが属するデータベース セット (スキーマ リポジトリとその関連データベース) の名前など、固有のデータベース情報を取得します。
  3. Session オブジェクトの UserLogon メソッドを呼び出して、データベースにログオンします。
UserLogon メソッドには、4 つの引数があります。
$CQsession->UserLogon(login_name, password, database_name, database_set_name); 
引数はすべて文字列です。 例を次に示します。
$CQSession->UserLogon("admin", "", "SAMPL", ""); 

以下のコード例では、ユーザー (admin) は、 アクセス可能なデータベースを取得し、perl2 という名前のデータベースにログインします。
require CQPerlExt; 
$CQsession = CQSession::Build();  

#Start a Rational ClearQuest session 
$sessionObj = CQSession::Build(); 

#Get a list of accessible databases 
$databases = $sessionObj->GetAccessibleDatabases("MASTR", "admin", ""); 
$count = $databases->Count(); 

$sessionObj->UserLogon("admin", "", "perl2", "");  

#For each accessible database, 
# get database name and login as joe with password gh36ak3: 
for($x=0;$x<$count;$x++)
   { 
     $db = $databases->Item($x); 
     $dbName = $db->GetDatabaseName(); 
     # Logon to the database 
     $sessionObj->UserLogon( "joe", "gh36ak3", $dbName, "" ); 
     #... 
   } 

# You can also ise the GetSessionDatabase method rather than the GetAccessibleDatabases method
$dbDesc = $sessionObj->GetSessionDatabase();  

# The GetSessionDatabase method returns information about the database that is being accessed 
# in the current session. This method differs from the GetAccessibleDatabases method in that it 
# returns the DatabaseDescription object associated with the current session. You can only call
# this method after the user has logged in to a particular database.


print "DB name = ", $dbDesc->GetDatabaseName(), "¥n";
print "DB set name = ", $dbDesc->GetDatabaseSetName(), "¥n";
print "DB connect string = ", $dbDesc->GetDatabaseConnectString(), "¥n";
print "User login name = ", $sessionObj->GetUserLoginName(), "\n";  
print "User full name = ", $sessionObj->GetUserFullName(), "\n";  
print "User email = ", $sessionObj->GetUserEmail(), "\n";  
print "User phone = ", $sessionObj->GetUserPhone(), "\n";  
print "Misc user info = ", $sessionObj->GetUserMiscInfo(), "\n";  
print "User groups: ¥n";
$userGroups = $sessionObj->GetUserGroups();  
if (!@$userGroups) 
     {  # Code to handle if no user groups exist 
        print "This user does not belong to any groups¥n";
     }  
else 
     {  # Print out all groups 
        foreach $groupname (@$userGroups) 
             { print "Group $groupname\n"; }
     }  
CQSession::Unbuild($sessionObj); 

レッスンのチェックポイント

これで、ClearQuest API を使用して セッションを取得し、データベースにログインする方法についての学習が完了しました。実際の ClearQuest クライアントの ユースケース (クエリー、グラフ、レポートの実行と作成、レコードの表示、修正、作成など) を実行する方法についての学習 を始めることができます。

フィードバック
< 前へ | 次へ >