Объединение Java API для извлечения из проекта только членов команды

Я хотел бы написать Java API, чтобы получать только членов команды для каждого проекта в Rally и нажимать на БД. Есть ли какой-либо запрос, который мог бы помочь мне с этим запросом?

Проект можно определить по соглашению об именах, поскольку в нашей рабочей области есть иерархические проекты, где только последний уровень иерархии содержит список членов команды.

Пожалуйста, напишите мне, если вам нужна дополнительная информация

Спасибо

Шри


person user2335123    schedule 02.04.2014    source источник


Ответы (1)


Вот пример кода, который возвращает членов команды проекта:

public static void main(String[] args) throws URISyntaxException, IOException {
        String host = "https://rally1.rallydev.com";
        String username = "[email protected]";
        String password = "secret";
        String workspaceRef = "/workspace/12352608129"; 
        String applicationName = "RESTExample get team members";

        RallyRestApi restApi = new RallyRestApi(
                new URI(host),
                username,
                password);
        restApi.setApplicationName(applicationName); 
        System.out.println(restApi.getWsapiVersion()); 

        try{
             QueryRequest projectRequest = new QueryRequest("Project");
             projectRequest.setFetch(new Fetch("Name", "TeamMembers"));
             projectRequest.setWorkspace(workspaceRef);
             projectRequest.setQueryFilter(new QueryFilter("Name", "=", "Company X"));

             QueryResponse projectQueryResponse = restApi.query(projectRequest);
             int count = projectQueryResponse.getResults().size();
             System.out.println(count);
             if(count > 0){
                 JsonObject projectObject = projectQueryResponse.getResults().get(count-1).getAsJsonObject();
                 int numberOfTeamMembers = projectObject.getAsJsonObject("TeamMembers").get("Count").getAsInt();
                 if(numberOfTeamMembers > 0) {
                        QueryRequest teamRequest = new QueryRequest(projectObject.getAsJsonObject("TeamMembers"));
                        JsonArray teammates = restApi.query(teamRequest).getResults();
                        for (int j=0;j<numberOfTeamMembers;j++){
                            System.out.println(teammates.get(j).getAsJsonObject().get("_refObjectName").getAsString());
                        }
                    }
             }

        }catch(Exception e){
            e.printStackTrace();

        } finally{
            restApi.close();
        }
    }
person nickm    schedule 02.04.2014
comment
Спасибо, Ник, за ценный ответ. - person user2335123; 03.04.2014
comment
Ник, я получаю сообщение об ошибке: конструктор QueryRequest в классе QueryRequest не может быть применен к заданным типам; QueryRequest teamRequest = новый QueryRequest (projectObject.getAsJsonObject (TeamMembers)); требуется: найдена строка: причина JsonObject: фактический аргумент JsonObject не может быть преобразован в строку путем преобразования вызова метода. Как решить эту ошибку? - person user2335123; 03.04.2014
comment
У меня последний rally-rest-api-2.0.4.jar в пути. Какая у вас версия? По умолчанию этот jar будет использовать WSAPI v2.0. Я не устанавливаю его в коде, но печатаю restApi.getWsapiVersion(). Он должен печатать v2.0. Этот код работает в моей среде. Если вы не вносили изменений в код, за исключением OID рабочей области, имени проекта и учетных данных, скорее всего, это связано с версией jar. - person nickm; 03.04.2014
comment
Спасибо, Ник, это сработало, я заменил старую версию файла jar, и он отобразил результаты. Однако я хочу члена команды каждого проекта. Есть около 350 проектов по 10 участников в каждом. Эта программа показывает только один список участников группы проектов. Я добавил это условие для фильтрации проекта projectRequest.setQueryFilter(new QueryFilter(Name, contains, DT-)); Поскольку наш проект, в котором члены команды связаны, начинается с DT-. Нужен ли цикл For для проектов? Пожалуйста, порекомендуйте. Спасибо за ваш быстрый ответ. - person user2335123; 03.04.2014
comment
да. Я изменил код, чтобы зациклить несколько результатов, возвращаемых запросом new QueryFilter("Name", "contains", "Team") GetTeamMembers.java находится в этом репозитории github: github.com/nmusaelian-rally/rally-java-rest-apps - person nickm; 03.04.2014
comment
это сработало как шарм. Большое спасибо. Последний вопрос, почему счетчик моего запроса projectRequest.setQueryFilter(new QueryFilter(Name, contains, DT-)); всегда показывает 200. Так как существует более 400 DT-проектов. будет ли это ограничение в окне вывода в моем Netbeans или что-то, что мне нужно добавить в запрос? пожалуйста, порекомендуйте - person user2335123; 04.04.2014
comment
Да, я тоже нашел решение для него int queryLimit = 4000; проектRequest.setLimit (queryLimit); это дало мне фактические результаты. Спасибо, Ник Ура - person user2335123; 04.04.2014