Соберите все активы VersionOne и все их атрибуты, используя Java - PullRequest
1 голос
/ 03 февраля 2020

Я работаю над задачей, которая требует от меня экспортировать все активы и все их значения атрибутов в файл CSV. Я знаю, что есть возможность экспортировать в Excel, но у этого есть свои проблемы, и мы решили дать шанс API.

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

IServices services = new Services(connector);
IAssetType requestType = services.getMeta().getAssetType("Request");
Query query = new Query(requestType);

не совсем понятно, как вернуть все атрибуты ресурса. Существует getAttributes() для Asset объекта

QueryResult result = services.retrieve(query);

for (Asset asset : result.getAssets()) {
    Map<String, Attribute> attributes = asset.getAttributes();
    System.out.println(attributes.toString());
}

, но он не возвращает атрибут, если он явно не добавлен в запрос, например.

…

Query query = new Query(requestType);

IAttributeDefinition nameAttribute = requestType.getAttributeDefinition("Name");
IAttributeDefinition numberAttribute = requestType.getAttributeDefinition("Number");
query.getSelection().add(nameAttribute);
query.getSelection().add(numberAttribute);

QueryResult result = services.retrieve(query);

…

что не имеет смысла для меня, так как я могу даже не знать все возможные атрибуты объекта!

Мне кажется, getAttributes() метод может не подходить для этой цели, но что еще использовать тогда? Любые идеи о том, как я могу собрать нужные мне данные?

Ответы [ 2 ]

0 голосов
/ 11 марта 2020

Как правило, API-интерфейсы VersionOne не возвращают все доступные атрибуты сразу по умолчанию. При использовании API-интерфейса VersionOne Rest возвращается самое важное подмножество атрибутов, а не настраиваемые поля. VersionOne sdks является оберткой вокруг этого API, поэтому понятно, что в SDK выполняются бизнес-правила API. Вам нужно будет знать имена всех возможных атрибутов актива и явно запрашивать их. Это включает в себя пользовательские поля (Custom_AttributeName). Это можно сделать, выполнив мета-запрос YourVersionOneInstance/meta.v1/YourAssetName. Затем вам нужно будет выполнить итерацию по этому дереву xml, получить имена атрибутов и обернуть правильный запрос по каждому атрибуту.

0 голосов
/ 10 марта 2020

Вы можете использовать Meta API запрос для получения метаданных для указания c типа актива :

<Server Base URI>/meta.v1/Request
...