Эффективный способ запрашивать обновления рабочих элементов через REST API Visual Studio Team Service.

Я хочу запросить, когда состояние ошибок было изменено на «Активно» для целей отчетности, и успешно получил требуемый результат, прочитав документы Visual Studio.

  1. Получить все интересующие меня идентификаторы рабочих элементов с помощью языка запросов рабочих элементов . Их много, поскольку я запрашиваю данные за один год.
  2. Используйте цикл for для вызова updates API для каждого я бы.
  3. Анализ обновляет результат API, чтобы найти поле System.State.

Проблема в том, что шаг 2 слишком медленный, потому что API обновлений принимает только один идентификатор для каждого запроса. Есть ли способ получать обновления для рабочих элементов в пакетном режиме? Также было бы лучше, если бы мы могли ограничить поля в API обновлений, чтобы упростить шаг 3.


person qxg    schedule 28.11.2017    source источник


Ответы (1)


В основном это вызвано тем, что шаг 1 возвращает рабочие элементы не только в текущем проекте, но и в других проектах.

Вы можете использовать REST API ниже для шага 1:

POST https://account.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0

Тип содержимого: приложение/json

{
  "query": 
  "Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
  From WorkItems 
  Where [System.WorkItemType] = 'Bug' AND [State] = 'Active'"
}

Затем он вернет ошибки, состояние которых активно, из всех командных проектов.

Вам просто нужно добавить условие, чтобы указать текущий командный проект в предложении where:

  • Если командный проект WIT имеет только одну область (без дочерних областей) и имя совпадает с названием командного проекта, вы можете использовать REST API следующим образом:

    POST https://account.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0
    

    Тип содержимого: приложение/json

    {
      "query": 
      "Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
      From WorkItems 
      Where [System.WorkItemType] = 'Bug' AND [State] = 'Active' AND [System.AreaPath] = 'projectname'"
    

    }

  • Если в командном проекте WIT несколько областей (например, области: projectname, projectname\child1, projectname\child2), вы можете использовать REST API ниже:

    POST https://account.visualstudio.com/DefaultCollection/_apis/wit/wiql?api-version=1.0
    

    Тип содержимого: приложение/json

    {
      "query": 
      "Select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] 
      From WorkItems 
      Where [System.WorkItemType] = 'Bug' AND [State] = 'Active' AND [System.AreaPath] IN ('projectname', 'projectname\\child1', 'projectname\\child2)"
    }
    

Тогда шаг 2 будет быстрее и эффективнее.

person Marina Liu    schedule 29.11.2017
comment
Спасибо за ответ, но ожидается большое количество ошибок, так как я запрашиваю данные за один год. Это не связано с путем к проекту или области, так как я проверил результат вручную с помощью редактора запросов на веб-сайте VSTS. - person qxg; 29.11.2017
comment
Если вы используете первый пример приложения/json, как я перечислил. Он содержит рабочие элементы в другом проекте. И если вы подтвердили все возвращенные рабочие элементы из определенного проекта, причина слишком медленного шага 2 может привести к большому количеству рабочих элементов. - person Marina Liu; 29.11.2017