Zmiana statusu na poprzedni

Aby zmienić status zgłoszeń na poprzedni na podstawie zapytania JQL w Jira Script Runner, możesz użyć następującego kodu w języku Groovy:

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.MutableIssue

def jqlQuery = "your_jql_query_here"
def searchResults = ComponentAccessor.getSearchService().search(ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(), ComponentAccessor.getJqlQueryParser().parseQuery(jqlQuery), 10000, 0)
searchResults.getResults().each { issue ->
    def statusName = issue.getStatus().getName()
    def statusCategory = issue.getStatus().getStatusCategory().getKey()
    def previousStatusName = ""
    if (statusCategory != "new" && statusCategory != "indeterminate") {
        def statusManager = ComponentAccessor.getStatusManager()
        def statusCategoryManager = ComponentAccessor.getStatusCategoryManager()
        def status = statusManager.getStatusByName(issue.getProjectObject(), statusName)
        def previousStatus = statusCategoryManager.getPreviousStatus(status)
        if (previousStatus) {
            previousStatusName = previousStatus.getName()
            issue.setStatusObject(previousStatus)
            ComponentAccessor.getIssueManager().updateIssue(ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser(), issue, MutableIssue.NO_ISSUE_UPDATE)
            log.debug("Changed status of issue ${issue.getKey()} from ${statusName} to ${previousStatusName}")
        } else {
            log.debug("Issue ${issue.getKey()} does not have a previous status")
        }
    } else {
        log.debug("Issue ${issue.getKey()} is in a new or indeterminate status category")
    }
}

Powyższy kod pobiera wyniki wyszukiwania dla podanego zapytania JQL, a następnie dla każdego znalezionego zgłoszenia pobiera nazwę bieżącego statusu oraz kategorię tego statusu. Jeśli status nie jest kategorią „nowy” lub „nieokreślony”, to pobiera poprzedni status dla bieżącego statusu, a następnie ustawia ten poprzedni status jako nowy status dla zgłoszenia. W przeciwnym razie, dla zgłoszenia w kategorii „nowy” lub „nieokreślony”, skrypt przeskakuje do następnego zgłoszenia.

Podczas wykonywania skryptu, w logach Jira wyświetlane będą informacje na temat zmienionych statusów dla każdego zgłoszenia.