Gli hook globali GSU_CQXE_OpenForm e GSU_CQXE_OpenSubmitForm forniscono la possibilità di aprire moduli prepopolati dagli hook. Dopo aver aggiunto gli hook globali allo schema è possibile accedere ad essi per specificare il tipo di record del modulo ed inizializzarlo con valori campo.
Per istruzioni sul download del codice hook globale, consultare la technote 1432968 alla pagina http://www.ibm.com/support/docview.wss?&rs=939&uid=swg21432969.
Questa funzionalità è disponibile sui client ClearQuest per web e Eclipse. Se un utente tenta di aprire un modulo da un client obsoleto o da un client ClearQuest per Windows, l'API restituisce un messaggio informativo. Per visualizzare all'utente questo messaggio, richiamare la funzione die.
Se il client supporta questa funzione, l'API emette un'eccezione e il codice dopo la chiamata dell'API non verrà eseguito. Utilizzare gli hook di callback nello script per eseguire l'eventuale ulteriore codice dopo la chiamata dell'API.
Utilizzare questi esempi di record e script azione con gli hook globali per fornire agli utenti dei moduli prepopolati. In questo esempio, l'azione CreateChildDefect apre un modulo di inoltro prepopolato con i valori dall'hook RecordScript. L'utente può annullare o salvare il modulo, ciò esegue il codice negli hook RecordScriptCancel e RecordScriptSave.
sub Defect_RecordScript { my($result); my($param) = @_; # record type name is Defect $currentSession = $entity->GetSession(); $newentity = $currentSession->BuildEntity("Defect"); $headline = $entity->GetFieldStringValue("Headline"); $id = $entity->GetFieldStringValue("id"); $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", "Anne Johnson"); $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"); # Set the orders of the fields, must include all field names $fieldNames = ["Headline","Severity","Symptoms","customer","dateTime","Description"]; $returnValue = GSU_CQXE_OpenSubmitForm($newentity, "RecordScriptSave", "RecordScriptCancel", $fieldNames); if($returnValue){ # If the client doesn't support the global hook, execute the hooks there, # e.g. validate and submit $newentity } 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 params!"; DieWithCustomMessage("INFO", $error_summary, $error_details); return $result; }
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.SetFieldValue "Symptoms", "Data Loss\nSlow Performance" ' For reference-list fields newentity.AddFieldValue "customer", "Anne Johnson" 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 fieldNames(6) fieldNames(0)="Headline" fieldNames(1)="Severity" fieldNames(2)="Symptoms" fieldNames(3)="customer" fieldNames(4)="dateTime" fieldNames(5)="Description" saveHookName="RecordScriptSave" cancelHookName="RecordScriptCancel" Defect_RecordScript = GSU_CQXE_OpenSubmitForm(newentity,saveHookName,cancelHookName,fieldNames) 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 params!" call DieWithCustomMessage("INFO",error_summary, error_details) End Function