Можно ли получить глубокую копию объектов с помощью VersionOne Java SDK?

1

Скажем, я хочу рассчитать кумулятивную оценку моих недостатков. я делаю

double estimate = 0.0;
Double tEstimate = 0.0;
Collection<Defect> defects = project.getDefects(null);
for(Defect d : defects){
   tEstimate = d.getEstimate();
   if(tEstimate != null){
      estimate += tEstimate;
   }
}

Здесь каждый вызов d.getEstimate() выполняет обратный вызов на сервер, что означает, что этот код работает очень медленно. Я бы хотел, чтобы одноразовая производительность попала вперёд и загрузила всю информацию вместе с объектом "Дефект", возможно, включая получение некоторой информации, которую я не буду использовать, но избегаю латентности обратного вызова сервера во время каждой итерации цикла,

  • 0
    если это ваш код на сервере, вы можете сделать еще один API. если это кто-то еще, то они должны это сделать. если это на другом сервере, это другой jvm, так что нет смысла «глубокое копирование». также вы не показали, что getEstimate делает readlly, но, судя по всему, вам просто нужен anohter api, который делает то, что вам нужно: вернуть набор дефектов и их вложенные оценки
Теги:
versionone

2 ответа

2

Вы используете SDK для модели объектов VersionOne. Из-за того, о чем вы жалуетесь, он не обладает надежностью. Одна из неэффективности заключается в том, как он знает, что вы запрашиваете список активов, но сначала получает все активы с заранее определенным набором атрибутов, таких как AssetState, и проверяет, является ли он мертвым активом. После этого он вызывает другой вызов для получения того же списка активов, но с указанными вами атрибутами. Это можно было бы устранить, применяя жадный алгоритм, который мог бы захватить набор атрибутов, чтобы каждый член этого набора возвращался независимо от того, какие атрибуты запрашиваются в вашем методе.get_(). Зачем? Это уже (вроде) происходит в существующем API-интерфейсе, основанном на Rest, в его нынешнем виде. Если запрос вернул все атрибуты, это, вероятно, немного расточительно, особенно для огромных отставаний.

Во всяком случае, VersionOne будет обесценивать объектную модель в ближайшем будущем, поэтому, если вы планируете много кодирования с использованием OM, подумайте об этом.

Вот несколько способов обойти эту проблему

1) Перепишите свой код, чтобы использовать SDK VersionOne APIClient. Он имеет XML-сантехнику, так что вы сэкономите много времени на своем собственном. Это немного более многословный, но он более мощный, быстрый и эффективный. Модель объекта фактически построена на APIClient.

2) Перепишите свой код с помощью Java и необработанного API-интерфейса Restore VersionOne. Для этого требуется, чтобы вы понимали HTTP и API-интерфейс VersoOpenOne.

3) Если вы не можете изменить модель объекта, вы можете смешать 2 sdks. Когда вам нужно читать большие объемы данных, просто используйте код APIClient для управления этим сегментом кода. Вид бессмысленен, когда вы можете просто изучить APIclient и использовать его исключительно, если у вас нет больших инвестиций в использование модели Object, и вы не можете изменить. Код быстро запутался. Не рекомендуется.

1

rest-1.v1 точка API rest-1.v1 предоставляет операции для активов, включая DeepCopy. Отсутствует клиентский код, который перечисляет все операции, поэтому сначала вы должны изучить этот актив, используя meta.v1 точку API meta.v1. Используя бэкдор API-клиента из объектной модели, вы можете перейти к классам, которые позволят вам вызвать операцию, как только вы узнаете имя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню