Hi,
In our instance, a story can have various sub-tasks but will always have a 'QA Task' sub-task. I need to use ScriptRunner to block a specific transition if any sub-tasks are not closed excluding the 'QA Task' sub-task.
I referenced this first example in the documentation with some tweaks, but to no avail (it seems 'passesCondition' is not valid: https://scriptrunner.adaptavist.com/6.4.0-p5/jira/recipes/workflow/conditions/all-subtasks-resolved.html
Can anyone help with producing a simple script that will block the transition (preferably using a validator) unless all sub-tasks except QA Task are closed?
Many thanks,
Howard
Hi Howard,
You can use a custom script validator to throw an InvalidInputException and block the parent issue's transition if conditions aren't meet.
Here's the sample custom script validator when not all sub-tasks (except QA Task) of that parent issue are closed as "Done", then it will throw an exception and block the transition for that parent issue:
import com.opensymphony.workflow.InvalidInputException
def passesCondition = true
def subTasks = issue.getSubTaskObjects()
def subBoolean = issue.subTask
//If the issue is not a subtask and contains subtasks
if(!subBoolean && subTasks){
subTasks.each { //Loop each subtask of parent issue
//If the subtask is "QA Task"
if (it.issueType.name == "QA Task") {
passesCondition = true
}else{ //Else if the subtask is not "QA Task"
//If the subtask has null resolution or not a resolution "Done"
if(!it.getResolution() || it.getResolution().name != "Done"){
passesCondition = false
//Block the transition
throw new InvalidInputException("subTask","Not all substasks ($it) are closed as 'Done'!")
}else{
passesCondition = true
}
}
}
}else{
return true
}
Hope this helps!
--
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.