Visualización de cambios en un objeto FieldInfo (campo)

En el ejemplo siguiente se muestra cómo utilizar la API de Rational ClearQuest para obtener información sobre valores de campo que han cambiado para un registro determinado.

Perl

# entity->GetFieldsUpdatedThisAction devuelve todos los campos que han cambiado...

$oSess = $entity->GetSession();

$username = $oSess->GetUserLoginName();

$action = $entity->GetActionName();

$state = $entity->GetFieldValue("State")->GetValue();

my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $time) = 
localtime();

$now = sprintf("%2.2d/%2.2d/%4d %2.2d:%2.2d:%2.2d", $mon + 1,$mday, $year + 
1900, $hour, $min, $sec);

$body = "Fields Changed by $username, $action->$state, $now\n\n";

$fields = $entity->GetFieldsUpdatedThisAction();

for ($i = 0; $i < $fields->Count(); $i++) {

   $field = $fields->Item($i);

   $fname = $field->GetName();

   $newVal = &GetStrValue($oSess, $field);

   $oldVal = &GetStrValue($oSess, $entity->GetFieldOriginalValue($fname));

   unless($fname eq "Notes_Log"){

      unless($newVal eq $oldVal){

         $body .= "* $fname: $val\n";

      }

   }

}

$body .= "\n";

$fieldlog = $entity->GetFieldValue("FieldLog")->GetValue();

$newLog = $body . $fieldlog;

$entity->SetFieldValue("FieldLog", $newLog);



# Inicio de Global Script GetStrValue

# Se utiliza para manejar tipos de campos diferentes...

sub GetStrValue {

   my ($session, $field) = @_;

   $val = "";

   $type = $field->GetType();

   if ($type lt 6) { #string, int, date, reference

      $val = $field->GetValue();

   } elsif ($type eq 6) { # Reference_list

      $list = $field->GetValueAsList();

      foreach $item (@$list) {

         $val .= "\n\t$item";

      }

   } elsif ($type eq 9) { #State

      $val = $field->GetValue();

   }

   return $val;

}

# Fin de Global Script GetStrValue 


Comentarios