Ouverture d'un formulaire prérempli

Description

Les points d'ancrage globaux GSU_CQXE_OpenForm et GSU_CQXE_OpenSubmitForm offrent la possibilité d'ouvrir des formulaires préremplis à partir de points d'ancrage. Après avoir ajouté les points d'ancrage globaux à votre schéma, vous pouvez y accéder pour indiquer le type d'enregistrement du formulaire et l'initialiser avec des valeurs de zone.

Cette fonctionnalité est disponible dans le client ClearQuest et ClearQuest Web. Si un utilisateur tente d'ouvrir un formulaire à partir d'un ancien client ou à partir du client ClearQuest for Windows, l'API renverra un message d'information. Pour afficher ce message pour l'utilisateur, appelez la fonction die.

Si le client prend en charge cette fonction, l'API fera une exception, et tout code après l'appel de l'API ne sera pas exécuté. Les points d'ancrage de rappel dans le script permettent d'exécuter du code supplémentaire après l'appel de l'API.

Remarque : L'API GSU_CQXE_OpenSubmitForm requiert un objet CQEntitiy temporaire, qui utilise un ID de base de données. For better performance, you can use the GSU_CQXE_SubmitForm database ID for this function, use the GSU_CQXE_SubmitRecord API to open forms. For details, see Opening a prepopulated form with the GSU_CQXE_SubmitRecord API.
Les fonctions du point d'ancrage global GSU_CQXE_OpenForm et GSU_CQXE_OpenSubmitForm sont fournies dans le package GlobalScriptUtility (GSU_CQXE). Vous devez appliquer ce package pour pouvoir utiliser ces fonctions.
  1. In the ClearQuest Designer, right-click the version of the schema where you want to apply the package, and then click Packages > Apply Package. The Package Wizard opens.
  2. Développez le noeud GlobalScriptUtility dans la liste des packages et sélectionnez la version 1.0. Click Next.
  3. Sélectionnez les types d'enregistrement où vous souhaitez appliquer le package. Click Finish.
Le package GlobalScriptUtility est à présent appliqué au schéma que vous avez sélectionné. Pour vérifier l'installation du package, recherchez le nouveau script global GSU_CQXE dans le schéma.

Pour plus d'informations sur l'application de packages, voir Application de packages.

Exemples

Appuyez-vous sur ces exemples d'enregistrements et de scripts d'action avec les points d'ancrage globaux pour fournir des formulaires préremplis aux utilisateurs. Dans cet exemple, l'action CreateChildDefect permet d'ouvrir un formulaire de soumission qui a été prérempli à l'aide des valeurs issues du point d'ancrage Record Script. L'utilisateur peut annuler ou sauvegarder le formulaire, qui exécute le code dans les points d'ancrage RecordScriptCancel et RecordScriptSave.

Pour utiliser cet exemple, apportez les changements suivants à votre schéma:
  1. Ajoutez deux nouvelles zones au type d'enregistrement Defect : une zone DATE_TIME nommée dateTime et une zone REFERENCE_LIST nommée children.
  2. Définissez l'attribut Référence à de la zone children sur Defect.
  3. Créez trois scripts d'enregistrement nommés RecordScript, RecordScriptSave et RecordScriptCancel, à l'aide de l'exemple de code Perl ou VBScript ci-dessous.
  4. Ajoutez une nouvelle action RECORD_SCRIPT_ALIAS, appelée CreateChildDefect, au type d'enregistrement Defect. Définissez l'action CreateChildDefect pour utiliser le point d'ancrage RecordScript que vous avez créé ci-dessus.
  5. Ajoutez un nouvel onglet, nommé OpenForm, au formulaire Defect_Base dans le type d'enregistrement Defect.
  6. Dans le nouvel onglet OpenForm, ajoutez les contrôles suivants :
    • Une zone de texte, définie de façon à afficher à la fois la date et l'heure. Sélectionnez Format de date long pour le format d'affichage de la date. Sélectionnez dateTime pour la zone source.
    • Un contrôle Parent/Child (Parent/Enfant) avec la zone source définie sur children (enfants).
Remarque : Certains de ces exemples de code utilisent la fonction DieWithCustomMessage pour gérer les messages d'erreur renvoyés par l'API. Pour plus d'informations sur ce script global, voir Génération d'un message d'erreur personnalisé.

Exemple de langage 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"); 
	
	# Pour les valeurs (Liste d'options) à multilignes
	$newentity->SetFieldValue("Symptoms", "Data Loss\nSlow Performance");
	
	# For reference-list fields
	$newentity->AddFieldValue("customer", "123 smith");
	$newentity->AddFieldValue("customer", "Ethan Hunt");

	# Pour la date fieldType
	$newentity->SetFieldValue("dateTime", "2010-04-08 15:57:28"); 
	
	# Pour (textArea) fieldType multiligne, les caractères spéciaux "\n" et "\t" sont pris en charge
	$newentity->SetFieldValue("Description", "Description"); 

	# Les points d'ancrage de rappel doivent être définis dans "scripts d'enregistrement" sous $recordType
	$save_callback_hook_name="RecordScriptSave";
	
	# Définir l'ordre des zones, doit inclure tous les noms de zones 
	$fieldOrder = ["Headline","Severity","Symptoms","customer","dateTime","Description"];
	$returnValue=GSU_CQXE_OpenSubmitForm($newentity,$save_callback_hook_name, "RecordScriptCancel", $fieldOrder);
	
	if($returnValue){
		# Si le client ne prend pas en charge le point d'ancrage global, exécutez les points d'ancrage ici, 
		# par ex. validez et envoyez $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;
}

Exemple de langage 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" 

' Pour les valeurs (Liste d'options) multilignes
newentity.AddFieldValue "Symptoms", "Data Loss" 
newentity.AddFieldValue "Symptoms", "Slow Performance" 

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

' Pour la date fieldType
newentity.SetFieldValue "dateTime", "2010-04-08 15:57:28" 
	
' Pour (textArea) fieldType multiligne, les caractères spéciaux vbcrlf sont pris en charge
newentity.SetFieldValue "Description", "Data Loss" & vbcrlf & "Slow Performance Unexpected Behavior" & vbcrlf & "retr" 

ReDim fieldOrder(6) 'This sets up an array of seven elements with subscripts from 0 to 5
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
' Si le client ne prend pas en charge le point d'ancrage global, exécutez les points d'ancrage ici, 
' par ex. validez et envoyez $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

Feedback