Los enganches de validación de acción comprueban condiciones que son difíciles de verificar a nivel de campo como, por ejemplo, si un conjunto de valores de campo relacionados es válido. Los enganches de validación a nivel de campo se ejecutan inmediatamente después de modificar el campo; los enganches de validación de acción no se ejecutan hasta que el usuario ha terminado de modificar el registro y está preparado para confirmarlo en la base de datos.
En el ejemplo siguiente se comprueba que el usuario entra un valor de sistema operativo (OS) de cliente correcto para el proyecto dado. Si el sistema operativo especificado para el proyecto no está soportado, el enganche genera y devuelve un mensaje de error de validación.
Function defect_Validation(actionname, actiontype)
' actionname As String
' actiontype As Long
' defect_Validation As String
' action = teststate
set sessionObj = GetSession
' Obtener la plataforma del OS de cliente que ha indicado el usuario.
platform = GetFieldValue("client_os").GetValue()
' Obtener el nombre de proyecto que ha indicado el usuario. Esta información
' se almacena en un registro referenciado sin estado.
projectName = GetFieldValue("project.name").GetValue()
' Comprobar el nombre de proyecto con respecto al tipo de OS. Si el proyecto dado
' no está destinado a dicha plataforma, devolver un error de validación.
If projectName = "Gemini" Then
If platform <> "NT" Then
defect_Validation = "That project only supports NT."
End If
ElseIf projectName = "Aquarius" Then
If platform <> "Unix" Then
defect_Validation = "That project only supports Unix."
End If
End If
End Function
sub defect_Validation {
my($actionname, $actiontype) = @_;
my $result;
# $actionname as string scalar
# $actiontype as long scalar
# $result as string scalar
# action = teststate
# Devuelve una serie no vacía que explica el motivo por el que
# no se ha podido confirmar la acción con los valores actuales.
# O, si es válida, devuelve un valor de serie vacía.
my ($session,
$platform,
$projectRecordID,
$projectRecord,
$projectName,
);
$session=$entity->GetSession();
# Obtener el OS de cliente que ha indicado el usuario.
$platform = $entity->GetFieldValue("client_os")->GetValue();
# Obtener el nombre de proyecto que ha indicado el usuario. Esta información
# se almacena en un registro referenciado sin estado.
$projectName = $entity->GetFieldValue("project.name")->GetValue();
# Comprobar el nombre de proyecto con respecto al tipo de OS. Si el
# proyecto dado no está destinado a dicha plataforma,
# devolver un error de validación.
if ($projectName eq "Gemini") {
if ($platform != "NT") {
$result = "That project only supports NT.";
}
} elsif ($projectName eq "Aquarius") {
if ($platform != "Unix"){
$result = "That project only supports Unix.";
}
}
return $result;
}