JQL функции и операторы в JIRA, о которых вы могли не знать. Часть II: WAS, WAS NOT и CHANGED
Продолжим серию статьей о возможностях языка JQL, в котором появляются не только новые функции, но и операторы.
Если знакомиться с полным перечнем операторов языка JQL, то среди них можно отметить несколько нестандартных, таких как WAS, WAS NOT и CHANGED.
Первый позволяет искать запросы (issues), в которых определенное поле в некоторый момент времени в прошлом имело определенное значение. Рассмотрим пример:
Найти все запросы, которые были переоткрыты (т.е. ранее находились в статусе Reopened)
JQL фильтр выглядит очень даже изящно (к примеру, для SQL понадобилось бы написать десяток строк кода):
status was "In Progress"
Обратите внимание, что если запрос (issue) в настоящий момент находится в статусе In Progress (при этом ранее никогда не был в этом статусе), то он тоже попадет в результат отбора.
Но к сожалению, с помощью JQL вы не сможете ответить на вопрос КТО переводил запросы в состояние in Progress? или КОГДА это происходило? . Получить эту информацию можно или точечно по одному запросу или только используя SQL. Я предпочитаю использовать именно SQL.
Назначение оператора WAS NOT теперь говорит само за себя. Он используется для отбора запросов, у которых определенный атрибут сейчас и никогда ранее не равнялся определенному значению. Возможно не самый популярный кейс для применения, но можно, например, придумать такой фильтр
Найти все запросы в проекте DEMO, которые не проходили через статус In Progress
Соответственно JQL выглядит следующим образом:
project = DEMO and status was not "In Progress"
Последним оператором из этой группы является CHANGED. В отличие от уже рассмотренных, он не требует какого-либо значения с правой стороны. Его задача ответить на вопрос А менялось ли в принципе значение определенного атрибута? Например, чтобы найти все запросы в проекте DEMO, в которых менялся исполнитель, можно выполнить JQL запрос:
project = DEMO and assignee CHANGED
На первый взгляд — это очень перспективные операторы. Но к сожалению ко многим атрибутам их применить нельзя. Среди них: due, environment, label и др. И самая неприятная новость — к атрибуту timeEstimate операторы WAS, WAS NOT, CHANGED , увы ,также не применимы.