Дни между датами в Azure рабочих элементов DevOps по запросу - PullRequest
0 голосов
/ 25 февраля 2020

Что я хотел бы сделать

Я Azure Пользователь DevOps Services.
Существуют ли способы расчета длительности между датами в рабочих элементах по Azure запросу Boards?
Или есть ли поля дней между датами?

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

Что Я пытался

Я пытался Activated Date > [Field] Created Date + 5, но результат был
TF51005: The query references a field that does not exist. The error is caused by Created Date + 5.

Интересно, могут ли использоваться только поддерживаемые макросы, такие как @Today или @StartOfDay, для расчета в редакторе запросов? .
Я прочитал следующие официальные ссылки, но не смог найти решение.

Если решений по запросу нет, приветствуются другие идеи.

1 Ответ

0 голосов
/ 26 февраля 2020

Это не может быть сделано по запросу. Вам нужно будет использовать остальные API в качестве обходного пути. Но это сложно и может не достичь того же эффекта, что и Query.

1, сначала вы можете использовать рабочий элемент wiql api для запроса тех элементов, которые [Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate], чтобы получить идентификаторы рабочих элементов

2, затем вы можете использовать список рабочих элементов api , чтобы вывести список полей этих рабочих элементов, запрашиваемых на шаге выше.

3, Последнее использование сценариев powershell для фильтрации те рабочие элементы, чья продолжительность между датой активации и датой создания превышает 5 дней

Пожалуйста, проверьте приведенный ниже пример в сценариях powershell:

Для {PAT}, пожалуйста, отметьте здесь чтобы получить токен личного доступа для аутентификации ниже API, вызывающего

#, запросите те элементы, которые [Microsoft.VSTS.Common.ActivationDate]> [System.CreatedDate] и получите идентификаторы рабочих элементов

$qurl =  "https://dev.azure.com/{org}/{proj}/_apis/wit/wiql?api-version=5.1"

$WIQL_query = "Select [System.Id], [System.Title], [System.State],[Microsoft.VSTS.Common.ActivatedDate],[System.CreatedDate] From WorkItems Where [Microsoft.VSTS.Common.ActivatedDate] > [System.CreatedDate]"
$body = @{ query = $WIQL_query }
$bodyJson=@($body) | ConvertTo-Json

$pat = {PAT}

$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($pat)"))

$result = Invoke-RestMethod -Uri $qurl -Headers @{authorization = "Basic $base64AuthInfo"} -Method post -ContentType "application/json" -Body $bodyJson

# GET THE WORKITEM IDS

$ids = $result.workItems | select id | foreach{ $_.id }
$id= '{0}' -f ($ids -join ",")

# используйте api списка рабочих элементов, чтобы вывести список полей этих рабочих элементов

$url = "https://dev.azure.com/{ORG}/{PROJ}/_apis/wit/workitems?ids=$($id)&api-version=5.1"

$result1 = Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method get

# Отфильтровать те рабочие элементы, продолжительность которых между Активированный D Дата съедения и создания превышает 5 дней.

$result1.value.fields | where {[datetime]$_.'Microsoft.VSTS.Common.ActivatedDate' -gt ([datetime]$_.'System.CreatedDate').AddDays(5)} 

Надеюсь, что выше поможет!

...