Hi,
I have a script that create two substaks and I'm trying to set a label on my "subtask1".
Before I have a different script that was setting the label, even with permission "Edit Issue" denied for normal users, but now that I created theses differents scripts it is not possible to set this label for subtask1.
SCRIPT 1 THAT CREATE MY SUBTASK:
def subTask1 = SubTask.createSubTask(issue, "Execute Maintenance Window", "SPB", "O&M task", dtMWDate, dtStartDate, dtMWDate, userOm)
SubTask.setLabel(subTask1, "MW")
def subTask2 = SubTask.createSubTask(issue, "Close RFC Ticket", "SPB", "O&M task", dtMWDate+14, dtStartDate, null, userOm)
SCRIPT 2 TO SET LABEL:
static void setLabel(Issue issue, String strLabel) { Logger log = Logger.getInstance("tools.SubTask") log.setLevel(org.apache.log4j.Level.INFO) def user = ComponentAccessor.jiraAuthenticationContext.getLoggedInUser() LabelService labelService = ComponentAccessor.getComponent(LabelService) AddLabelValidationResult validationResult = labelService.validateAddLabel(user, issue.getId(), strLabel) if (!validationResult.errorCollection.hasAnyErrors()) { labelService.addLabel(user, validationResult, false) log.info "Label '${strLabel}' set to issue ${issue}." } else { log.error ${validationResult.errorCollection} } }
LOG ERROR:
2017-05-25 16:33:32,822 http-nio-8081-exec-24 ERROR supplier.team 993x16314x1 kg958x 10.192.63.100 /secure/QuickCreateIssue.jspa [c.o.s.jira.workflow.ScriptWorkflowFunction] Script function failed on issue: SDP-7765, actionId: 1, file: TaskCreationDispatcher.groovy groovy.lang.MissingMethodException: No signature of method: static SubTask.$() is applicable for argument types: (SubTask$_setLabel_closure3) values: [SubTask$_setLabel_closure3@12ee538c] Possible solutions: is(java.lang.Object), run(), run(), any(), any(groovy.lang.Closure), use([Ljava.lang.Object;) at SubTask.setLabel(SubTask.groovy:235) at SubTask$setLabel$1.call(Unknown Source) at SI_-_Software_Version_Upgrade.run(SI - Software Version Upgrade.groovy:45) at TaskCreationDispatcher.run(TaskCreationDispatcher.groovy:29)
How can I do it?
Hi Artur,
Assuming that you have a custom post function that creates two subtasks and this post function is the first one, or at least before the "Save Issue step". Then a script like the one below will create two subtasks and add the label_a and label_b labels in each of your subtasks.
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.label.LabelManager def parentIssue = issue as MutableIssue if (parentIssue.isSubTask()) return def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def summariesList = ["summary1", "summary 2"] def issueFactory = ComponentAccessor.getIssueFactory() def subTaskManager = ComponentAccessor.getSubTaskManager() def constantManager = ComponentAccessor.getConstantsManager() def issueManager = ComponentAccessor.getIssueManager() summariesList.each { subTaskSummary -> MutableIssue newSubTask = issueFactory.getIssue() newSubTask.setSummary(subTaskSummary) newSubTask.setParentObject(parentIssue) newSubTask.setProjectObject(parentIssue.getProjectObject()) newSubTask.setIssueTypeId(constantManager.getAllIssueTypeObjects().find{ it.getName() == "Sub-task" }.id) // Add any other fields you want for the newly created sub task Map<String,Object> newIssueParams = ["issue" : newSubTask] as Map<String,Object> def subtask = issueManager.createIssueObject(user, newIssueParams) subTaskManager.createSubTaskIssueLink(parentIssue, newSubTask, user) log.info "Issue with summary ${newSubTask.summary} created" ComponentAccessor.getComponent(LabelManager).setLabels(user, subtask?.id, ["label_a", "label_b"].toSet(), false, false) }
Please let me know if this does the trick.
regards, Thanos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.