Gestión de registros (entidades) con estado y sin estado

El esquema tiene registros sin estado como, por ejemplo, Project y registros con estado como, por ejemplo, Defect que se mueven de un estado a otro. La API de Rational ClearQuest le permite obtener y establecer valores de campo para ambos tipos de registro.

En esta sección se muestra un ejemplo de una aplicación externa que contiene dos subrutinas: No_state para registros sin estado y Has_state para registros que tienen estados. El ejemplo realiza lo siguiente:

  1. Utiliza el método BuildEntity de Session para crear un objeto Entity.
  2. Establece los valores en uno o más campos.
  3. Valida y confirma la entidad.
  4. Recupera y modifica la entidad.
  5. Revierte la entidad.

El código invoca algunas rutinas externas que no se muestran aquí:

VBScript

' subrutina para registros sin estado

Sub No_state(session) ' el objeto Session
   Dim entity ' el objeto Entity
   Dim failure ' una serie 

   StdOut "Test for stateless entities is starting" 
   StdOut "submit a stateless entity" 
   Set entity = session.BuildEntity("project")

   ' ignorar anomalía
   failure = entity.SetFieldValue("name", "initial project name") 

   DumpFields entity 
   ValidateAndCommit entity 
   Set entity = Nothing 

   StdOut "Reload, show values before modification" 
   Set entity = session.GetEntity("project", "initial project name")
   DumpFields entity 

   StdOut "Modify, then show new values" 
   session.EditEntity entity, "modify" 

   ' ignorar la anomalía
   failure = entity.SetFieldValue("name", "modified project name") 
   DumpFields entity 

   StdOut "revert, then show restored values" 
   entity.Revert 
   DumpFields entity 

   StdOut "Modify again, and commit" 
   session.EditEntity entity, "modify" 

   ' ignorar anomalía 
   failure = entity.SetFieldValue("name", "final project name") 
   ValidateAndCommit entity 
   Set entity = Nothing 

   StdOut "Reload, and show final result" 
   Set entity = session.GetEntity("project", "final project name")
   DumpFields entity 
   Set entity = Nothing 

   StdOut "Test for stateless entities is done" 
End Sub 


' subrutina para registros con estado
Sub Has_states(session) ' el objeto Session
   Dim entity ' el objeto Entity con estado 

  ' mensaje de anomalía de funciones que devuelven series 
   Dim failure 
   Dim failures ' un repetidor que contiene la lista de motivos de anomalía 
   Dim id ' ID de base de datos de defectos de Rational
ClearQuest 

   StdOut "Test for stateful entities is starting" 
   StdOut "submit a stateful entity" 
   Set entity = session.BuildEntity("defect") 

   ' ignorar anomalías
   failure = entity.SetFieldValue("headline", "man bites dog!") 
   failure = entity.SetFieldValue("project", "final project name") 
   failure = entity.SetFieldValue("submit_date", "03/18/2000 10:09:08") 
   id = entity.GetDbId 

   Open "XXStdout" For Append As #1 
   Print #1, "Entity id is"; id; Chr(10); 
   Close #1 

   DumpFields entity 
   ValidateAndCommit entity 
   Set entity = Nothing 

   StdOut "Reload, show values before modification" 
   Set entity = session.GetEntityByDbId("defect", id) 
   DumpFields entity 

   StdOut "Modify then show new values" 
   session.EditEntity entity, "modify" 

   ' ignorar anomalía
   failure = entity.SetFieldValue("headline", "man bites tree!") 
   DumpFields entity 

   StdOut "revert, then show restored values" 
   entity.Revert 
   DumpFields entity 

   StdOut "Modify again and commit" 
   session.EditEntity entity, "modify" 

   ' ignorar anomalía 
   failure = entity.SetFieldValue("headline", "tree bites man!")
   ValidateAndCommit entity 
   Set entity = Nothing 

   StdOut "Reload and show before changing state" 
   Set entity = session.GetEntityByDbId("defect", id) 
   DumpFields entity 

   StdOut "Change to new state, then show new values" 
   session.EditEntity entity, "close" 
   failure = entity.SetFieldValue("description", _ 
         "looked like an oak tree") ' ignore failure 
   DumpFields entity 

   StdOut "revert then show restored values" 
   entity.Revert 
   DumpFields entity 

   StdOut "Change to new state again then commit" 
   session.EditEntity entity, "close" 
   failure = entity.SetFieldValue("description", _ 
      "man of steel, tree of maple") ' ignore failure 
   ValidateAndCommit entity 
   Set entity = Nothing 

   StdOut "Reload, show final values" 
   Set entity = session.GetEntityByDbId("defect", id) 
   DumpFields entity 
   Set entity = Nothing 

   StdOut "Test of stateful entities is done" 
End Sub 

REM Inicio de Global Script StdOut

sub StdOut(Msg)

   msgbox Msg

end sub

REM Fin de Global Script StdOut 

Perl

sub No_state {

    my($session) = @_;

    my($entity);

    my($failure);


    print "Test for stateless entities is starting";

    print "submit a stateless entity";

    $entity = $session->BuildEntity("project");


    # ignorar anomalía

    $failure = $entity->SetFieldValue("name", "initial project
          name");


    DumpFields($entity);

   $entity->Validate();

   $entity->Commit();


    $entity = "";


    print "Reload, show values before modification";

    $entity = $session->GetEntity("project", "initial project name");

    DumpFields($entity);


    print "Modify, then show new values";

    $session->EditEntity($entity, "modify");



    # ignorar la anomalía

    $failure = $entity->SetFieldValue("name", "modified project name");

    DumpFields($entity);


    print "revert, then show restored values";

    $entity->Revert();

    DumpFields($entity);


    print "Modify again, and commit";

    $session->EditEntity($entity, "modify");


    # ignorar anomalía

    $failure = $entity->SetFieldValue("name", "final project name");

      $entity->Validate();

      $entity->Commit();

    $entity = "";


    print "Reload, and show final result";

    $entity = $session->GetEntity("project", "final project name");

    DumpFields($entity);

    $entity = "";


    print "Test for stateless entities is done";

} 

Perl

Lo siguiente es un ejemplo de prueba de entidades con estado:

sub Has_states {

    my($session) = @_;

    my($entity); # the entity that is stateful

    # mensaje de anomalía de funciones que devuelven series

    my($failure);

    my($id); 
# ID de base de datos de defectos de Rational
ClearQuest


    print "Test for stateful entities is starting";

    print "submit a stateful entity";

    $entity = $session->BuildEntity("defect");


    # ignorar anomalías

    $failure = $entity->SetFieldValue("headline", "man bites dog!");

    $failure = $entity->SetFieldValue("project", "final project name");

    $failure = $entity->SetFieldValue("submit_date", "03/18/2000 10:09:08");

    $id = $entity->GetDbId();


    open(FILE, ">>XXStdout");

    print FILE, "Entity id is", $id, "\n";

    close FILE;


    DumpFields($entity);

      $entity->Validate();

      $entity->Commit();

    $entity = "";


    print "Reload, show values before modification";

    $entity = $session->GetEntityByDbId("defect", $id);

    DumpFields($entity);


    print "Modify then show new values";

    $session->EditEntity($entity, "modify");


    # ignorar anomalía

    $failure = $entity->SetFieldValue("headline", "man bites tree!");

    DumpFields($entity);


    print "revert, then show restored values";

    $entity->Revert();

    DumpFields($entity);


    print "Modify again and commit";

    $session->EditEntity($entity, "modify");


    # ignorar anomalía

    $failure = $entity->SetFieldValue("headline", "tree bites man!");

      $entity->Validate();

      $entity->Commit();


    $entity = "";


    print "Reload and show before changing state";

    $entity = $session->GetEntityByDbId("defect", $id);

    DumpFields($entity);


    print "Change to new state, then show new values";

    $session->EditEntity($entity, "close");

    $failure = $entity->SetFieldValue("description",

                               "looked like an oak tree"); 
    # ignorar anomalía

    DumpFields($entity);


    print "revert then show restored values";

    $entity->Revert();

    DumpFields($entity);


    print "Change to new state again then commit";

    $session->EditEntity($entity, "close");

    $failure = $entity->SetFieldValue("description",

           "man of steel, tree of maple"); 

    # ignorar anomalía

      $entity->Validate();

      $entity->Commit();


    $entity = "";


    print "Reload, show final values";

    $entity = $session->GetEntityByDbId("defect", $id);

    DumpFields($entity);

    $entity = "";


    print "Test of stateful entities is done";

} 


Comentarios