Валидатор для Jira: максимум 8 часов в неделю на заявителя

Если в рамках рабочего процесса Jira необходимо ограничить количество часов, которое исполнитель может израсходовать на определенного заявителя в течение недели, можно воспользоваться решением, которое перед отправкой задачи проверяет, не превышен ли лимит времени, отведенный на заявителя.

Особенности решения

  • Проверяется суммарное время, зарегистрированное в журнале работ.
  • Под ограничение попадают задачи из проекта с названием «Ваш проект», которые находятся в одном из статусов: «На модерации», «В работе», «На проверке».
  • Ограничение не распространяется на заявителей в роли «Суперпользователи».

Groovy-код

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.search.SearchProvider
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter

def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser.class)
def searchProvider = ComponentAccessor.getComponent(SearchProvider.class)
def user = ComponentAccessor.getJiraAuthenticationContext().getUser()

def query = jqlQueryParser.parseQuery(
    "project = 'Ваш проект' and reporter = currentUser() and \
    created > startOfWeek() and created < endOfWeek() and \
    status IN ('На модерации', 'В работе', 'На проверке')"
)
def results = searchProvider.search(query, user, PagerFilter.getUnlimitedFilter())

Double estimateSummary = issue.originalEstimate
results.getIssues().each {item->
    if (item.originalEstimate != null) {
        estimateSummary +=item.originalEstimate
    }
}

isUserMemberOfRole('Суперпользователи') || estimateSummary <= 8 * 3600