Rallye Discussion Defect extraction en utilisant l'API Java Rest Rally

jesric1029:

Je cherche à créer un simple script Java qui se connecte à Rallye, aller chercher tous les défauts et retourner les détails de défaut, y compris la discussion comme un objet Java. Le problème ici est que la discussion est renvoyée comme ce que je crois est une collection car seule une URL est donnée. Je suis coincé sur la façon de retourner la discussion du défaut comme un objet dans le JSON plutôt que seule une autre requête qui devrait être exécuté séparément (des milliers de fois je suppose, puisque nous avons des milliers de défauts).

Voici mon code:

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.rallydev.rest.RallyRestApi;
import com.rallydev.rest.request.GetRequest;
import com.rallydev.rest.request.QueryRequest;
import com.rallydev.rest.request.UpdateRequest;
import com.rallydev.rest.response.QueryResponse;
import com.rallydev.rest.util.Fetch;
import com.rallydev.rest.util.QueryFilter;
import com.rallydev.rest.util.Ref;
import org.json.simple.JSONArray;

public class ExtractData{

    public static void main(String[] args) throws URISyntaxException, IOException, NumberFormatException

    {

        RallyRestApi restApi = new RallyRestApi(new URI("https://rally1.rallydev.com"), "apiKeyHere");
        restApi.setProxy(URI.create("http://usernameHere:passwordHere0@proxyHere:8080"));
        restApi.setApplicationName("QueryExample");

        //Will store all of the parsed defect data
        JSONArray defectData = new JSONArray();

        try{

            QueryRequest defects = new QueryRequest("defect");

            defects.setFetch(new Fetch("FormattedID","Discussion","Resolution"));
            defects.setQueryFilter(new QueryFilter("Resolution","=","Configuration Change"));
            defects.setPageSize(5000);
            defects.setLimit(5000);

            QueryResponse queryResponse = restApi.query(defects);

            if(queryResponse.wasSuccessful()){

                System.out.println(String.format("\nTotal results: %d",queryResponse.getTotalResultCount()));

                for(JsonElement result: queryResponse.getResults()){
                    JsonObject defect = result.getAsJsonObject();
                    System.out.println(defect);




                }
            }else{
                System.err.print("The following errors occured: ");
                for(String err: queryResponse.getErrors()){
                    System.err.println("\t+err");
                }
            }

        }finally{

            restApi.close();



        }



    }
}

Voici un exemple de ce que je reçois lorsque je tente ceci:

{"_rallyAPIMajor":"2","_rallyAPIMinor":"0","_ref":"https://rally1.rallydev.com/slm/webservice/v2.0/defect/30023232168","_refObjectUUID":"cea42323c2f-d276-4078-92cc-6fc32323ae","_objectVersion":"6","_refObjectName":"Example defect name","Discussion":{"_rallyAPIMajor":"2","_rallyAPIMinor":"0","_ref":"https://rally1.rallydev.com/slm/webservice/v2.0/Defect/32323912168/Discussion","_type":"ConversationPost","Count":0},"FormattedID":"DE332322","Resolution":"Configuration Change","Summary":{"Discussion":{"Count":0}},"_type":"Defect"}

Comme vous pouvez le voir la discussion est renvoyée sous forme d'URL plutôt que chercher de la discussion proprement dite. Comme cette requête sera utilisée lors de l'exécution, je préfère tout l'objet.

Kyle Morse:

Malheureusement, il n'y a pas moyen d'obtenir toutes ces données dans un REQUEST- vous devrez charger la collection de discussion pour chaque défaut que vous lisez. A noter également, la taille de la page max est 2000.

Ce n'est pas exactement la même chose que ce que vous essayez de faire, mais cet exemple montre des histoires d'enfants de chargement beaucoup comme vous le feriez charger des discussions ...

https://github.com/RallyCommunity/rally-java-rest-apps/blob/master/GetChildStories.java#L37

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=168722&siteId=1
conseillé
Classement