Rally Rest API извлекает сообщение беседы по дефекту FormattedID - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь потянуть обсуждения для данного дефекта.Из предыдущего вопроса, который я задал, я понимаю, что невозможно извлечь данные обсуждения как свойство самого дефекта, скорее, я должен выполнить отдельный запрос на выборку.

Проблема в том, что я не могу определить какой-либо фильтр запросов для использования при извлечении сообщений беседы.Это наводит меня на мысль, что мне придется проходить через каждый отдельный пост беседы и пытаться найти соответствующий номер дефекта в реальных возвращаемых данных, что будет крайне неэффективно.

Скорее, я бы предпочел просто запустить выборку запроса для каждого дефекта, который использует фильтр запроса для отформатированного идентификатора, который будет возвращать только те сообщения беседы, которые относятся к этому дефекту.

import com.google.gson.JsonElement;
import com.rallydev.rest.RallyRestApi;
import com.rallydev.rest.request.QueryRequest;
import com.rallydev.rest.response.QueryResponse;
import com.rallydev.rest.util.Fetch;
import com.rallydev.rest.util.QueryFilter;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

public class ExtractFull {

    @SuppressWarnings("unchecked")
    public static void main(String args[]) throws URISyntaxException, IOException {

        RallyRestApi restApi = new RallyRestApi(new URI("https://rally1.rallydev.com"), "_myapikey");
        restApi.setApplicationName("DANA Example");
        restApi.setProxy(new URI("http://myproxy:8080"), "username", "pass");




        System.out.println("Querying Rally for defects, this may take some time");

        try {

            QueryRequest defectRequest = new QueryRequest("ConversationPost");
            defectRequest.setPageSize(2000);
            defectRequest.setLimit(5000);
            QueryFilter filter = new QueryFilter("FormattedID","=","DE10101");
            defectRequest.setQueryFilter(filter);

            defectRequest.setFetch(new Fetch());

            QueryResponse queryResponse = restApi.query(defectRequest);


            for(JsonElement result: queryResponse.getResults()){

                System.out.println(result);


            }
        } finally {
            restApi.close();
        }

    }

}

Этот код не работает.Я предполагаю, потому что «FormattedId» не является допустимым объектом типа «ConversationPost».Я не знаю, возможно ли фильтровать родительский дефектный идентификатор при запросе сообщения беседы, но это то, что мне нужно сделать.

Конкретный код, на который я ссылаюсь, находится здесь:

  QueryRequest defectRequest = new QueryRequest("ConversationPost");
                defectRequest.setPageSize(2000);
                defectRequest.setLimit(5000);
                QueryFilter filter = new QueryFilter("FormattedID","=","DE10101");
                defectRequest.setQueryFilter(filter);

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

смог решить эту проблему самостоятельно.Проблема заключалась в том, что я пытался использовать «QueryRequest» без действительного «типа» для передачи конструктору.

Правильным решением было использование «GetRequest» с указанием пути к странице обсуждения дефекта в качестве URL-адреса (без необходимости указывать тип объекта в конструкторе).Это вернуло объект GetRequest, который содержал набор результатов со всеми сообщениями беседы.

 GetRequest getRequest = new GetRequest(discussionURL);
            GetResponse getResponse = restApi.get(getRequest);

"URL-адрес обсуждения" не содержал "https://rally1.rallydev.com"", который был объявлен при создании rallyApi - переменная DiscusURL содержит весь URL-адрес страницы обсуждения дефекта, но без вышеуказанного URL-адреса раллинапример, " / slm / webservice / v2.0 / Defect / 106032660792 / Обсуждение "

0 голосов
/ 04 июля 2019

Используйте стандартный WSAPI, я могу запросить это так:

(Artifact.FormattedID = "US123")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...