Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Script to transition a subtask when another subtask is resolved.

Batu Sanchez
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
August 29, 2018

Let me explain my current situation.

I have 2 workflows defined for a Kanban Project:

  • The first one has 4 statuses (TODO, INPROGRESS, REVIEW & DEFINED), this is the main workflow for Developers to work with. When the Developer creates a Task in this project, I set up the transition so it creates 5 different sub tasks (A, B, C, D & Report), 4 of which (A, B, C, & D) follow this WF. B can't be resolved until A is, C can't be resolved until B is and so on.
  • And I have another workflow defined with 5 statuses (OPEN, A COMPLETED, B COMPLETED, C COMPLETED & D COMPLETED) for the last subtask (Report). The intention of this subtask is to report the status of the other 4 subtasks.

My question is.

How can I define a Post Function Custom Script to automatically transition the Report Subtask when the other subtasks are resolved?

Do I need to create a link between the subtasks when they are created?

I made a research in the community and didn't found a something like this

Please make it as simple (for dummies) as possible.

 

1 answer

Suggest an answer

Log in or Sign up to answer
0 votes
Batu Sanchez
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
September 10, 2018

So I got no answers but I found a solution if anybodyelse requires it:

I added the following Custom Scripted PostFunction in the transition from "REVIEW" to "DEFINED":

/**
*The script transitions the subtask "Report" when the subtask "A" transitions to Defined
*/

//Required Imports
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.config.SubTaskManager;
import com.atlassian.jira.workflow.WorkflowTransitionUtil;
import com.atlassian.jira.workflow.WorkflowTransitionUtilImpl;
import com.atlassian.jira.util.JiraUtils;
import com.atlassian.jira.issue.*;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.CustomFieldManager;
import org.apache.log4j.Category
import com.opensymphony.workflow.WorkflowContext;
import com.atlassian.jira.event.type.EventDispatchOption

//Variables
String currentuser = ((WorkflowContext) transientVars.get("context")).getCaller()
SubTaskManager subTaskManager = ComponentAccessor.getSubTaskManager();
if (issue.getIssueType().getId() == "55")//55 is ID for "A" subtask issue type
{
    MutableIssue parent = issue.getParentObject() as MutableIssue;
    WorkflowTransitionUtil workflowTransitionUtil = (WorkflowTransitionUtil) JiraUtils.loadComponent(WorkflowTransitionUtilImpl.class)
    Collection<Issue> subTaskList = subTaskManager.getSubTaskObjects(parent);
    Iterator<Issue> iterator = subTaskList.iterator();
    while(iterator.hasNext())
    {
        Issue subTaskObj = iterator.next();
        if (subTaskObj.getIssueType().getId() == "59" || subTaskObj.getStatus().getId() == "26")//59 is the ID for "Report" subtask issue type & 26 is the ID for the status "Open"
         {
            workflowTransitionUtil.setIssue((MutableIssue) subTaskObj)
            workflowTransitionUtil.setUserkey(currentuser)
            workflowTransitionUtil.setAction(21)//21 is the transition ID from "Open" to "A - Defined"
            workflowTransitionUtil.validate()
            workflowTransitionUtil.progress()
         }
     }
TAGS
AUG Leaders

Atlassian Community Events