Я подал GitHub вопрос, чтобы добавить поддержку для ScopedAttributeDefinition: https://github.com/RallyTools/RallyRestToolkitForJava/issues/19
В то же время, хотя вы можете работать вокруг него, используя основной клиент HTTP напрямую. Этот код запрашивает для всех проектов в вашей рабочей области, а затем находит определение типа для элемента портфолио, а затем для каждого проекта захватывает все пользовательские атрибуты defs через конечную точку scopedattributedefinition и выводит их скрытый/требуемый статус.
QueryRequest projectQuery = new QueryRequest("project");
projectQuery.setLimit(Integer.MAX_VALUE);
QueryResponse projectResponse = restApi.query(projectQuery);
QueryRequest typeDefQuery = new QueryRequest("typedefinition");
typeDefQuery.setQueryFilter(new QueryFilter("Name", "=", "Portfolio Item"));
QueryResponse typeDefResponse = restApi.query(typeDefQuery);
JsonObject piTypeDef = typeDefResponse.getResults().get(0).getAsJsonObject();
for(JsonElement projectResult : projectResponse.getResults()) {
JsonObject project = projectResult.getAsJsonObject();
System.out.println("Project: " + project.get("Name").getAsString());
//Begin hackery (note we're not handling multiple pages-
// if you have more than 200 custom attributes you'll have to page
String scopedAttributeDefUrl = "/project/" + project.get("ObjectID").getAsLong() +
"/typedefinition/" + piTypeDef.get("ObjectID").getAsLong() + "/scopedattributedefinition" +
"?fetch=Hidden,Required,Name&query=" + URLEncoder.encode("(Custom = true)", "utf-8");
String attributes = restApi.getClient().doGet(scopedAttributeDefUrl);
QueryResponse attributeResponse = new QueryResponse(attributes);
//End hackery
for(JsonElement customAttributeResult : attributeResponse.getResults()) {
JsonObject customAttribute = customAttributeResult.getAsJsonObject();
System.out.print("\tAttribute: " + customAttribute.get("Name").getAsString());
System.out.print(", Hidden: " + customAttribute.get("Hidden").getAsBoolean());
System.out.println(", Required: " + customAttribute.get("Required").getAsBoolean());
}
System.out.println();
}
Любая другая информация Вы хотели бы, чтобы каждый из этих пользовательских полей должна быть доступна только с помощью запросов к коллекции атрибутов из piTypeDef.
A ScopedAttributeDefinition - это просто взгляд на другой атрибут в системе из определенной области (рабочей области или проекта). Это позволяет вам видеть, скрыт или задан данный атрибут в этой конкретной области. Это данные, которые вам нужны? –
Мне нужно как наличие атрибута, так и его метаданные (такие как видимые или скрытые, тип, принятые значения и т. Д.). Прямо сейчас я запрашиваю все TypeDefinitions в рабочей области и получаю его список атрибутов. Это не возвращает пользовательские типы данных, такие как поле Enabler Lead, описанное выше (все возвращаемые типы данных имеют «Custom = false»). –
от поиска источника инструментария Я не совсем уверен, что он даже позволит вам запрашивать определения атрибутов с областью, к сожалению ... –