Скажем, я хочу рассчитать кумулятивную оценку моих недостатков. я делаю
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() выполняет обратный вызов на сервер, что означает, что этот код работает очень медленно. Я бы хотел, чтобы одноразовая производительность попала вперёд и загрузила всю информацию вместе с объектом "Дефект", возможно, включая получение некоторой информации, которую я не буду использовать, но избегаю латентности обратного вызова сервера во время каждой итерации цикла,
Вы используете 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, и вы не можете изменить. Код быстро запутался. Не рекомендуется.
rest-1.v1
точка API rest-1.v1
предоставляет операции для активов, включая DeepCopy
. Отсутствует клиентский код, который перечисляет все операции, поэтому сначала вы должны изучить этот актив, используя meta.v1
точку API meta.v1
. Используя бэкдор API-клиента из объектной модели, вы можете перейти к классам, которые позволят вам вызвать операцию, как только вы узнаете имя.