Create jira sub-task during issue creation time using script runner
//Description: used for create subtask per component in If user select coponents and CIP# field value
// Date: 2021-07
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueInputParametersImpl
import org.apache.log4j.Logger
import com.atlassian.jira.issue.CustomFieldManager
def log = Logger.getLogger("com.acme.workflows")
def ftopor_cip_customField = ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_20320");
def ftopor_cip_values = (String)issue.getCustomFieldValue(ftopor_cip_customField);
final newLabel = 'create_subtask'
if (!issue.subTask) {
//log.warn (issue.getComponentObjects().getAt(0)?.getName())
no_of_componets = issue.getComponentObjects().size()
if(no_of_componets>0){
for (i=0; i<no_of_componets; i++){
createSubtask(issue,issue.getComponentObjects().getAt(i)?.getId(),issue.getComponentObjects().getAt(i)?.getName())
}
}
}
def createSubtask(Issue parentIssue,component_name,component_name_str) {
def subTaskManager = ComponentAccessor.subTaskManager
def asUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
def constantsManager = ComponentAccessor.constantsManager
def issueService = ComponentAccessor.issueService
def subtaskIssueType = constantsManager.allIssueTypeObjects.findByName('Sub-task')
def load_cip_customField= ComponentAccessor.getCustomFieldManager().getCustomFieldObject("customfield_20320");
def issue_cip_values = (String)parentIssue.getCustomFieldValue(load_cip_customField);
def set_subtask_title ='';
if(issue_cip_values!=null){
//set_subtask_title = issue_cip_values+ ' '+parentIssue.getSummary();
set_subtask_title =component_name_str+ ' '+'CIP'+ issue_cip_values;
}else{
//set_subtask_title = parentIssue.getSummary();
set_subtask_title =component_name_str+ ' '+parentIssue.getSummary();
}
assert subtaskIssueType?.subTask
def issueInputParameters = new IssueInputParametersImpl()
issueInputParameters
.setProjectId(parentIssue.projectId)
.setIssueTypeId(subtaskIssueType.id)
.setSummary(set_subtask_title)
.setComponentIds(component_name)
//.setDescription('A description')
.setReporterId(asUser.username)
def createValidationResult = ComponentAccessor.issueService.validateSubTaskCreate(asUser, parentIssue.id, issueInputParameters)
if (!createValidationResult.valid) {
log.error createValidationResult.errorCollection
return
}
def newIssue = issueService.create(asUser, createValidationResult).issue
subTaskManager.createSubTaskIssueLink(parentIssue, newIssue, asUser)
}
Comments
Post a Comment