セッション変数は、ログオン セッション全体に対してグローバルなフック変数です。 これは、どのようなフック タイプでもセッション変数を設定することができ、どのようなフック タイプでもその変数を後で再度読み取ることができることを意味します。 この値は、全セッション用として常駐します。
IBM® Rational® ClearQuest® は、全セッション用の変数を使用した情報の保存をサポートします。全セッション用の変数を作成したら、Session オブジェクトへのアクセスを行う関数またはサブルーチン (フックも含む) を使用して、現在の Session オブジェクトを通じてそれらの変数にアクセスできます。 現在のセッションが終了すると、その Session オブジェクトに関連付けられたすべての変数は削除されます。 ユーザーがログアウトした場合、または Session オブジェクトへの最後の参照が終了した場合、セッションは終了します。
以下は、それぞれの操作目的に応じたメソッドを示したものです。
次の例は、新規の変数を作成し、その値を戻す方法を示します。 この例では、"Hello" という変数を作成し、その変数に "Hello World" という値を割り当てます。
# You can use $session instead of defining
# $curSession = $entity->GetSession();
$myValue = "Hello World";
# Create and set the value of the "Hello" variable
$session->SetNameValue("Hello", $myValue);
# Get the current value
$newValue = $session->GetNameValue("Hello");
# Optional
$session->OutputDebugString($newValue);
Dim myValue
curSession = GetSession()
myValue = "Hello World"
' Create and set the value of the "Hello" variable
curSession.NameValue "Hello", myValue
' Get the current value
Dim newValue
newValue = curSession.NameValue("Hello")
VBScript で次の例について説明します。フィールド検証フックで現在のアクション名を見つける場合は、GetActionName メソッドまたはセッション変数を使用できます。
アクション初期化フックごとに、現在のアクションがパラメータ actionname に渡されます。次のコードを使用して、ActionName というセッション変数を actionname 内の値に設定できます。
set session = GetSession
session.NameValue "ActionName", actionname
次に、フィールド検証フック内では、以下のようにして actionname 内にあるセッション変数の現在の値 ActionName を取得できます。
set session = GetSession
actionname = session.NameValue("ActionName")
' ...
また、VBScript を使用すると、セッション変数内にオブジェクトを保存することもできます。 オブジェクト保存するには set を使用します。例を次に示します。
set sessionObj.NameValue "Obj", object
または
set sessionObj.NameValue "CalendarHandle", param.ObjectItem
上の例で、param は、レコード スクリプト フックに対するパラメータで、オブジェクト ハンドルが含まれます。 詳しくは、「NameValue」、「HasValue」、「ObjectItem」、「レコード スクリプトの理解」を参照してください。