定義済みのフォームのオープン

説明

GSU_CQXE_OpenForm および GSU_CQXE_OpenSubmitForm グローバル フックにより、 フックから定義済みのフォームを開くことができます。スキーマにグローバル フックを追加した後は、それにアクセスしてフォームのレコード タイプを指定し、フィールド値でそれを初期化することが可能です。

この機能は、ClearQuest Eclipse および ClearQuest Web のクライアントで使用可能です。ユーザーが古いクライアントまたは ClearQuest for Windows クライアントからフォームを開こうとすると、API は情報メッセージを返します。 ユーザーにこのメッセージを表示するには、die 関数を呼び出します。

クライアントがこの機能をサポートしている場合は、API は例外をスローし、API 呼び出しの後のコードはすべて実行されません。API 呼び出しの後に追加でコードを実行するには、スクリプトでコールバック フックを使用します。

注: GSU_CQXE_OpenSubmitForm API は、一時 CQEntitiy オブジェクトが必要で、 これはデータベース ID を使用します。パフォーマンスを上げるには、 この関数の GSU_CQXE_SubmitForm データベース ID を使用し 、GSU_CQXE_SubmitRecord API を使用してフォームを開くことができます。詳しくは、 「GSU_CQXE_SubmitRecord API を使用した定義済みのフォームのオープン」を参照してください。
GSU_CQXE_OpenForm および GSU_CQXE_OpenSubmitForm グローバル フック関数は 、GlobalScriptUtility (GSU_CQXE) パッケージで提供されます。これらの関数を使用する前に、 このパッケージを適用する必要があります。
  1. ClearQuest Designer の中で、パッケージを適用するスキーマのバージョンを 右クリックし、[パッケージ] > [パッケージの適用] を選択します。パッケージ ウィザードが開きます。
  2. パッケージのリストで [GlobalScriptUtility] ノードを 展開して、[バージョン 1.0] を選択します。[次へ] をクリックします。
  3. パッケージを適用するレコード タイプを選択します。 [終了] をクリックします。
これで、GlobalScriptUtility パッケージが、 選択したスキーマに適用されました。パッケージのインストールを確認するには、 スキーマの中で新規の GSU_CQXE グローバル スクリプトを探します。

パッケージの適用について 詳しくは、「パッケージの適用」を参照してください。

ユーザーに定義済みのフォームを提供するには、これらの、レコード スクリプトおよびアクション スクリプトの例をグローバル フックで使用します。この例では、CreateChildDefect アクションが Record Script フックからの値で定義されたフォームを開きます。ユーザーは、RecordScriptCancel フックと RecordScriptSave フックでコードを実行するフォームをキャンセルまたは保存することができます。

この例を使用するには、スキーマに次の変更を加えます。
  1. 障害レコード タイプに、dateTime という名前の DATE_TIME フィールドと、children という名前の REFERENCE_LIST フィールドの、2 つのフィールドを新規に追加します。
  2. children フィールドの [参照先] 属性を [障害] に設定します。
  3. 以下の、Perl または VBScript コードの例を使用して、RecordScriptRecordScriptSave、および RecordScriptCancel という名前の 3 つのレコード スクリプトを作成します。
  4. CreateChildDefect という名前の、新しい RECORD_SCRIPT_ALIAS アクションを障害レコード タイプに追加します。CreateChildDefect アクションを、上記で作成した RecordScript フックを使用するように設定します。
  5. 障害レコード タイプの Defect_Base フォームに、OpenForm という名前のタブを新規に追加します。
  6. 新しい OpenForm タブに、次のコントロールを追加します。
    • [日付][時刻] の両方を表示するよう設定した [テキスト フィールド]。 日付の表示形式に [長い形式の日付] を選択します。 ソース フィールドに [日付/時間] を選択します。
    • ソース フィールドを [子] に設定した [親/子] コントロール。
注: これらのコード例では、API によって返されたエラー メッセージに対応するために DieWithCustomMessage 関数を使用するものもあります。このグローバル スクリプトについて詳しくは、「カスタム エラー メッセージの生成」を参照してください。

Perl 例

sub Defect_RecordScript {
    my($result);
    my($param) = @_;
    # record type name is Defect
    
    $currentSession= $entity->GetSession();
	
	$newentity = $currentSession->BuildEntity("Defect");
	$headline = $entity->GetFieldValue("Headline")->GetValue();
	$id = $entity->GetFieldValue("id")->GetValue();

	$newentity->SetFieldValue("Headline", "Child Of [".$id."] ".$headline); 
	$newentity->SetFieldValue("Severity", "3-Average"); 
	
	# For multiple-line (Choice list) values
	$newentity->SetFieldValue("Symptoms", "Data Loss\nSlow Performance");
	
	# For reference-list fields
	$newentity->AddFieldValue("customer", "123 smith");
	$newentity->AddFieldValue("customer", "Ethan Hunt");

	# For Date fieldType
	$newentity->SetFieldValue("dateTime", "2010-04-08 15:57:28"); 
	
	# For multiple-line (textArea) fieldType, support "\n","\t"special characters
	$newentity->SetFieldValue("Description", "Description"); 

	# Call back hooks need be defined in "record scripts" under $recordType
	$save_callback_hook_name="RecordScriptSave";
	
	# Set the orders of the fields, must include all field names 
	$fieldOrder = ["Headline","Severity","Symptoms","customer","dateTime","Description"];
	$returnValue=GSU_CQXE_OpenSubmitForm($newentity,$save_callback_hook_name, "RecordScriptCancel", $fieldOrder);
	
	if($returnValue){
		# If the client doesn't support the global hook, execute the hooks there, 
		# e.g. validate and submit $newentity
		#		Win32::MsgBox("This function is not supported by the client.");
	}
    return $result;
}
sub Defect_RecordScriptSave {
    my($result);
    my($param) = @_;
    # record type name is Defect
        
    @params = split (/\n+/, $param);
	$entity->EditEntity("Modify");
	$entity->AddFieldValue("children",$params[1]);
	$entity->Validate();
	$entity->Commit(); 
    return $result;
}
sub Defect_RecordScriptCancel {
    my($result);
    my($param) = @_;
    # record type name is Defect
        
    
	$error_summary="CancelBackSaveHook";
	$error_details="No parameters were specified.";
	# $result=&DieWithCustomMessage;("ERROR",$error_summary, $error_details);
	DieWithCustomMessage("INFO", $error_summary, $error_details);
  
    return $result;
}

VBScript 例

Function Defect_RecordScript(param)
  ' param As Variant
  ' record type name is Defect
Dim currentSession
Dim newentity
Dim this_entity
Dim fieldOrder
Dim returnValue
Dim saveHookName
Dim cancelHookName

set currentSession = GetSession	
set newentity= currentSession.BuildEntity ("defect")

newentity.SetFieldValue "Headline", "Child Of parent record " 
newentity.SetFieldValue "Severity", "3-Average" 

' For multiple-line (Choice list) values
newentity.AddFieldValue "Symptoms", "Data Loss" 
newentity.AddFieldValue "Symptoms", "Slow Performance" 

' For reference-list fields
newentity.AddFieldValue "customer", "Ethan Hunt"

' For Date fieldType
newentity.SetFieldValue "dateTime", "2010-04-08 15:57:28" 
	
' For multiple-line (textArea) fieldType, support vbcrlf special characters
newentity.SetFieldValue "Description", "Data Loss" & vbcrlf & "Slow Performance Unexpected Behavior" & vbcrlf & "retr" 

ReDim fieldOrder(6)
fieldOrder(0)="Headline"
fieldOrder(1)="Severity"
fieldOrder(2)="Symptoms"
fieldOrder(3)="customer"
fieldOrder(4)="dateTime"
fieldOrder(5)="Description"


saveHookName="RecordScriptSave"
cancelHookName="RecordScriptCancel"
Defect_RecordScript=GSU_CQXE_OpenSubmitForm(newentity,saveHookName,cancelHookName,fieldOrder)
If Defect_RecordScript <> "" then
' If the client doesn't support the global hook, excute the hooks there, 
' e.g. validate and submit $newentity
' MsgBox "This function is not supported by the client."
End If

End Function
Function Defect_RecordScriptSave(param)
  ' param As Variant
  ' record type name is Defect
    REM add your hook code here
 Dim error_summary
 Dim error_details
 error_summary="Submit record has been saved."
 error_details="The submit record information is:" & param
 call DieWithCustomMessage("INFO", error_summary, error_details)

End Function
Function Defect_RecordScriptCancel(param)
  ' param As Variant
  ' record type name is Defect
    REM add your hook code here
Dim error_summary
Dim error_details

error_summary="CancelBackSaveHook"
error_details="No parameters were specified."
call DieWithCustomMessage("INFO",error_summary, error_details)

End Function


フィードバック