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.