Los enganches globales GSU_CQXE_OpenForm y GSU_CQXE_OpenSubmitForm proporcionan la capacidad de abrir formularios y enganches previamente rellenados. Después de añadir los enganches globales a un esquema, puede acceder a ellos para especificar el tipo de registro del formulario e inicializarlo con valores de campo.
Esta funcionalidad está disponible en ClearQuest Client y ClearQuest Web. Si un usuario intenta abrir un formulario desde un cliente más antiguo o desde el cliente ClearQuest para Windows, la API devolverá un mensaje informativo. Para mostrar este mensaje al usuario, invoque la función die.
Si el cliente soporta esta función, el API lanzará una excepción y no se ejecutará ningún código después de la invocación del API. Utilice los enganches de devolución de llamada del script para ejecutar código adicional después de la invocación del API.
Para obtener más información sobre cómo aplicar paquetes, consulte Aplicación de paquetes.
Utilice estos ejemplos de scripts de registro y acción con los ganchos globales para proporcionar a los usuarios formularios previamente rellenados. En este ejemplo, la acción CreateChildDefect abre un formulario de envío que está previamente rellenado con los valores del enganche Scripts de registro. El usuario puede cancelar o guardar el formulario, el cual ejecuta el código en los enganches RecordScriptCancel y RecordScriptSave.
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");
# Para valores de múltiples líneas (lista de opciones)
$newentity->SetFieldValue("Symptoms", "Data Loss\nSlow Performance");
# Para campos de lista de referencia
$newentity->AddFieldValue("customer", "123 smith");
$newentity->AddFieldValue("customer", "Ethan Hunt");
# Para fieldType Fecha
$newentity->SetFieldValue("dateTime", "2010-04-08 15:57:28");
# Para fieldType de múltiples líneas (textArea), soporta caracteres especiales "\n","\t"
$newentity->SetFieldValue("Description", "Description");
# Los enganches de devolución de llamada se deben definir en "scripts de registro" en $recordType
$save_callback_hook_name="RecordScriptSave";
# Establece las órdenes de los campos, debe incluir todos los nombres de campo
$fieldOrder = ["Headline","Severity","Symptoms","customer","dateTime","Description"];
$returnValue=GSU_CQXE_OpenSubmitForm($newentity,$save_callback_hook_name, "RecordScriptCancel", $fieldOrder);
if($returnValue){
# Si el cliente no soporta el enganche global, ejecute los enganches ahí,
# p. ej. validar y enviar $newentity
# Win32::MsgBox("No se admite la función en el cliente.");
}
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 se ha especificado ningún parámetro.";
# $result=&DieWithCustomMessage;("ERROR",$error_summary, $error_details);
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"
' Para valores de múltiples líneas (lista de opciones)
newentity.AddFieldValue "Symptoms", "Data Loss"
newentity.AddFieldValue "Symptoms", "Slow Performance"
' Para campos de lista de referencia
newentity.AddFieldValue "customer", "Ethan Hunt"
' Para fieldType Fecha
newentity.SetFieldValue "dateTime", "2010-04-08 15:57:28"
' Para fieldType de múltiples líneas (textArea), soporta caracteres especiales vbcrlf
newentity.SetFieldValue "Description", "Data Loss" & vbcrlf & "Slow Performance Unexpected Behavior" & vbcrlf & "retr"
ReDim fieldOrder(6) 'Esto establece una matriz de siete elementos con subscripts de 0 a 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 el cliente no soporta el enganche global, ejecute los enganches ahí
' p. ej. validar y enviar $newentity
' MsgBox "No se admite la función en el cliente."
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 se ha especificado ningún parámetro."
call DieWithCustomMessage("INFO",error_summary, error_details)
End Function