Apertura de un formulario rellenado previamente

Descripción

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 los clientes de ClearQuest para Eclipse y la 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.

Nota: La API GSU_CQXE_OpenSubmitForm requiere un objeto CQEntitiy temporal, que utiliza un ID de base de datos. Para obtener un mejor rendimiento, puede utilizar el ID de base de datos GSU_CQXE_SubmitForm para esta función, utilice la API GSU_CQXE_SubmitRecord API para abrir formularios. Para obtener detalles, consulte Apertura de un formulario rellenado previamente con la API GSU_CQXE_SubmitRecord.
Las funciones de enganches globales GSU_CQXE_OpenForm y GSU_CQXE_OpenSubmitForm se proporcionan en el paquete GlobalScriptUtility (GSU_CQXE). Debe aplicar este paquete para poder utilizar estas funciones.
  1. En ClearQuest Designer, pulse el botón derecho del ratón en la versión del esquema que desea aplicar al paquete y seleccione Paquetes > Aplicar paquete. Se abre el Asistente de paquetes.
  2. Expanda el nodo GlobalScriptUtility en la lista de paquetes y seleccione la versión 1.0. Pulse Siguiente.
  3. Seleccione los tipos de registro que donde desea aplicar el paquete. Pulse Finalizar.
El paquete GlobalScriptUtility ahora se aplica al esquema seleccionado. Para verificar la instalación del paquete, busca el nuevo script global GSU_CQXE en el esquema.

Para obtener más información sobre cómo aplicar paquetes, consulte Aplicación de paquetes.

Ejemplos

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.

Para utilizar este ejemplo realice los cambios siguientes en su esquema:
  1. Añada dos campos nuevos al tipo de registro Defect: un campo DATE_TIME denominado dateTime y un campo REFERENCE_LIST denominado children.
  2. Establezca el atributo Referencia a del campo hijos a Defecto.
  3. Crear tres scripts de registro llamados RecordScript, RecordScriptSave, y RecordScriptCancel, usando el código de ejemplo Perl o VBScript que aparece más abajo.
  4. Añadir una nueva acción RECORD_SCRIPT_ALIAS, llamada CreateChildDefect, al tipo de registro Defecto. Establezca la acción CreateChildDefect para utilizar el enganche RecordScript que creó anteriormente.
  5. Añada una pestaña nueva llamada OpenForm al formulario Defect_Base en el tipo de registro Defect.
  6. En el nuevo separador OpenForm, añada los controles siguientes:
    • Un campo de texto, establecido para mostrar la Fecha y la Hora. Como formato de fecha. seleccione Fecha larga. Seleccione dateTime para el campo origen.
    • Un control Padre/Hijo con el campo origen establecido en hijos.
Nota: Alguno de estos ejemplos de código utilizan la función DieWithCustomMessage para gestionar los mensajes de error que devuelve la API. Para obtener más información sobre este scripts global, consulte la publicación Generación de un mensaje de error personalizado.

Ejemplos de 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 se ha especificado ningún parámetro.";
	# $result=&DieWithCustomMessage;("ERROR",$error_summary, $error_details);
DieWithCustomMessage("INFO",$error_summary, $error_details);
    return $result;
}

Ejemplos de 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 se ha especificado ningún parámetro."
call DieWithCustomMessage("INFO",error_summary, error_details)

End Function


Comentarios