1

約 1 か月前にスクリプトを作成し、タグを正常に作成してテストケースに追加することができました。しかし、過去数日間、スクリプトはテストケースにタグを追加できませんでしたが、それでもタグを作成することはできます。ここに私が書いたソースコードがあります:

    //Looks for a specific tag
public static void ChkTag(RallyRestApi r, String tagname) throws IOException{
    boolean tagfound = false;
    QueryRequest alltags = new QueryRequest("Tag");
    QueryResponse resp = r.query(alltags);
    if(resp.wasSuccessful()){
        //System.out.println("query for all tags was successful.");
        for(JsonElement result : resp.getResults()){
            JsonObject temp = result.getAsJsonObject();
            if(temp.get("Name").getAsString().equals(tagname)){
                tagfound =true;
            }
        }
    if(tagfound==false){
        System.out.println("Tag for this testcase is missing..creating now...");
        ExportTCtoRally_adk.createTag(r, tagname);
        }
    }
}

public static void createTag(RallyRestApi r, String name) throws IOException{
    //Create Tag
    JsonObject mytag = new JsonObject();
    mytag.addProperty("Name", name);
    CreateRequest mytagc = new CreateRequest("Tag", mytag);
    CreateResponse mytagcc = r.create(mytagc);
    String ref_tag = Ref.getRelativeRef(mytagcc.getObject().get("_ref").getAsString());

    if(mytagcc.wasSuccessful())
        System.out.println("Tag successfully created.");
    return;
}

そして、テストケースの作成中に次のコードを実行します。

//-----------------FOR TAGS----------------------
    boolean tagfound = false;
    if (creating1.wasSuccessful()){
        System.out.println("testcase created.");
        QueryRequest alltags = new QueryRequest("Tag");
        QueryResponse resp = r.query(alltags);
        JsonElement out = null;
        if(resp.wasSuccessful()){
            System.out.println("query for all tags was successful.");
            for(JsonElement result : resp.getResults()){
                JsonObject temp = result.getAsJsonObject();
                if(temp.get("Name").getAsString().equals(tagx)){
                    System.out.println("desired tag found.");
                    tagfound=true;
                    out=result;
                }
            }
            if(tagfound==false){
                System.out.println("Tag wasn't found.");
                ExportTCtoRally_adk.createTag(r, tagx);
                System.out.println("New Tag created.");
            }
            JsonArray tiger = new JsonArray();
            tiger.add(out);

            System.out.println("Updating testcase tags...");
            JsonObject updatedtesttag = new JsonObject();
            updatedtesttag.add("Tags", tiger);

            UpdateRequest updatetag = new UpdateRequest(ref_testcase, updatedtesttag);
            UpdateResponse updatetagresp = r.update(updatetag);

            if(updatetagresp.wasSuccessful())
                System.out.println("Tag succeccfully added to the test case");
            }
    //-----------------------------------------------

ここで何かが2回実行されていることは知っていますが、問題は発生しないので、そのままにしておきます。

だから私の質問は私のコードに何か問題がありますか?

ありがとう。

4

1 に答える 1

1

現在、ワークスペースに複数のページ (200) のタグがありますか? (応答の getTotalResultCount() を見て確認できます)。デフォルトでは、クエリは 1 ページのデータのみを返します。代わりに、名前でタグを検索するフィルターを追加する方が効率的でしょう。

QueryRequest alltags = new QueryRequest("Tag");
alltags.setQueryFilter(new QueryFilter("Name", "=", tagx);
QueryResponse resp = r.query(alltags);
if(resp.wasSuccessful() && resp.getResults().size() == 1) {
    //tag is at index 0 in results
}
于 2012-11-27T16:02:05.710 に答える