Найти WorkItems, которые были назначены на X за последние 30 дней - PullRequest
13 голосов
/ 03 марта 2011

Я пытаюсь найти все рабочие элементы, которые были назначены человеку X за последние 30 дней.
Большая проблема, с которой я столкнулся, - это «за последние 30 дней».

Я думал об использовании ключевых слов "ever" или "asof", но пока не нашел хорошего ответа ... что-то вроде WHERE [Assigned To] = 'X' AND (([Assigned To] != 'X') asof '<30daysago>').
Но это еще не пуленепробиваемое решение.

Есть идеи получше?

Спасибо и всего наилучшего

Simon

1 Ответ

14 голосов
/ 03 марта 2011

Похоже, что это невозможно, используя только WIQL, но вы можете приблизиться.

Ключевое слово @Today даст вам сегодняшнюю дату, а затем просто вычтите из нее свой диапазон.Ключевое слово EVER, примененное к [Status]='AssignedTo', и сравнение с датой 30 дней в прошлом с [StateChangeDate] - вот что вам нужно для этого.

Как можно ближе к WIQL и существующим полям :Это говорит о том, что из всех ревизий (изменений статуса) возвращаются записи, в которых пользователь 'X' когда-либо был AssignedTo, а состояние изменилось за последние 30 дней.Это в основном даст вам немного нечеткую картину того, над чем ваш пользователь работал в прошлом месяце.

WHERE [Microsoft.VSTS.Common.StateChangeDate] >= @today - 30  
  AND  [System.AssignedTo] EVER 'Bennett Aaron' 
    ORDER BY [System.State]

Добавьте пропущенное поле :Вы можете добавить настраиваемое поле с именем AssignedDate, которое захватывается во время перехода рабочего процесса New-> AssignedTo, который вы создаете в XML определения рабочего элемента.Это можно сделать с помощью расширения Team Foundation Server Power Tools для Visual Studio.Это даст вам именно то, что вам нужно, а также дополнительные опции отчетности в будущем.

TFS API Я не могу помочь вам с этим, но я полагаю, что вы могли бы делать запросы, используя TFS API.

Несколько быстрых ошибок, с которыми я столкнулся, чтобы сэкономить ваше время на ASOF и НИКОГДА:

AsOf не помогут вам сами по себе, поскольку не поддерживают диапазон дат.Это позволяет запрашивать, как если бы это была другая дата.Другими словами, если вы забыли захватить результаты запроса вчера, вы можете использовать запрос AsOf, чтобы получить результаты, которые вы получили бы, если бы он выполнялся вчера.Насколько я понимаю, вы хотите запросить базовый диапазон дат.

EVER может работать не так, как вы ожидаете, с датами, так как я считаю, что он использует точное значение поля (часть метки времени в поле даты будетбыть включенным) это тестирует с.Просто убедитесь, что ключевое слово EVER используется в поле статуса, а не в дате.

...