状態なしおよび状態ありのレコード (エンティティ) の管理

スキーマには、状態なしレコード (プロジェクトなど) と、状態間で移動する状態ありレコード (障害など) があります。Rational ClearQuest API を使用すると、両種類のレコードのフィールド値を取得および設定できます。

ここで示す例は、次の 2 つのサブルーチンを含む外部アプリケーション 例です。サブルーチンは、状態なしレコード用の No_state と、状態ありレコード用の Has_state です。この例では、以下の処理を行います。

  1. Session の BuildEntity メソッドを使用して、Entity オブジェクトを作成します。
  2. 1 つ以上のフィールドに値を設定します。
  3. エンティティを検証およびコミットします。
  4. エンティティを取得および変更します。
  5. エンティティを元に戻します。

コードでは、ここに示していない外部ルーチンをいくつか呼び出しています。

VBScript

状態なしレコードのサブルーチン

Sub No_state(session) ' the Session Object
   Dim entity ' the Entity Object
   Dim failure ' a String 

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

   ' ignore failure
   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" 

   ' ignore the failure
   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" 

   ' ignore failure 
   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 


' subroutine for stateful records
Sub Has_states(session) ' the Session object
   Dim entity ' the Entity object that is stateful 

  ' failure message from functions that return strings 
   Dim failure 
   Dim failures ' an iterator containing list of failure reasons 
   Dim id ' Rational ClearQuest defect database ID 

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

   ' ignore failures
   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" 

   ' ignore failure
   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" 

   ' ignore failure 
   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 Start of Global Script StdOut

sub StdOut(Msg)

   msgbox Msg

end sub

REM End of 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");


    # ignore failure

    $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");



    # ignore the failure

    $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");


    # ignore failure

    $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

以下は、状態ありエンティティのテスト例です。

sub Has_states {

    my($session) = @_;

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

    # failure message from functions that return strings

    my($failure);

    my($id); 
# Rational ClearQuest defect database ID


    print "Test for stateful entities is starting";

    print "submit a stateful entity";

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


    # ignore failures

    $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");


    # ignore failure

    $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");


    # ignore failure

    $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"); 
    # ignore failure

    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"); 

    # ignore failure

      $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";

} 

フィードバック