링크 된 모든 이야기와 할 일 목록이 "완료"상태 일 때 자동으로 Epic을 종료하고 싶습니다. 나는 그루비스럽지 않고 여전히 신선하고 내 발을 찾으려고 노력하고 있습니다. 그래서 나는 다음과 같은 스크립트가 :모든 이야기 전환이 완료되면 Epic을 닫습니다.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.MutableIssue
import com.onresolve.scriptrunner.runner.customisers.ContextBaseScript
import groovy.transform.BaseScript
import org.apache.log4j.Logger
@BaseScript ContextBaseScript context
def issueLinkManager = ComponentAccessor.getIssueLinkManager()
def issueService = ComponentAccessor.getIssueService()
def currentUser = ComponentAccessor.jiraAuthenticationContext.getLoggedInUser()
def isEpicInProgress = {Issue epic ->
if (epic.issueType.name == "Epic") {
if (epic.statusObject.name != "Done") {
return true
} else {
return false
}
}
}
def isStoryClosed = {Issue story ->
if (story.statusObject.name == "Done") {
return true
} else {
return false
}
}
def updateEpic = {Issue epic ->
if (isEpicInProgress) {
def parameters = issueService.newIssueInputParameters()
def result = issueService.validateTransition(currentUser, epic.id, 31, parameters)
issueService.transition(currentUser, result)
log.warn("Epic update to " + result)
}
}
def isEpicClosable = {Issue epic ->
def finalResult = true
issueLinkManager.getOutwardLinks(epic.id).each { link ->
def story = link.destinationObject
def closedStory = isStoryClosed(story)
finalResult = closedStory && finalResult
}
log.warn("Final result is " + finalResult);
return finalResult
}
issueLinkManager.getInwardLinks(issue.id).each { link ->
def linkTypeId = link.getLinkTypeId()
def isEpicOfLinkType = 10300
if (isEpicOfLinkType == linkTypeId) {
def epic = link.sourceObject
if (isEpicInProgress(epic)) {
if (isEpicClosable(epic)) {
updateEpic(epic)
}
}
}
}
JIRA는 다음에 대해 불평
:
story.statusObject.name이되지 않습니다 것은 -하여 새
을 찾는 방법> 나도 몰라
위의 경고를 제외하고 스크립트가 오류없이 실행되지만 Epic은 자동으로 전환되지 않습니다. 위의 이야기 유형의 워크 플로우입니다.
위의 에픽 문제 유형입니다.
지원하십시오 :