Forums

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

Create subtask with scriptrunner and MutableIssue

Michał Ezman July 29, 2019

Hi,
I made up this code in postfunction in Create Issue transition:

import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.user.util.UserManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.jira.datetime.LocalDateFactory
import com.atlassian.jira.datetime.LocalDate
import java.util.Date
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.project.ProjectManager
import com.atlassian.jira.project.Project
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import java.util.Calendar
import java.util.Date




//Wydobywanie potrzebnych bibliotek
IssueManager issueManager = ComponentAccessor.getIssueManager()
IssueService issueService = ComponentAccessor.getIssueService()
def issueFactory = ComponentAccessor.getIssueFactory()
def subTaskManager = ComponentAccessor.getSubTaskManager()
def constantManager = ComponentAccessor.getConstantsManager()
def userManager = ComponentAccessor.getUserManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()


//User Jira
ApplicationUser applicationUser = ComponentAccessor.getUserManager().getUserByName("jira")

//Projekt DIN
Project project = ComponentAccessor.getProjectManager().getProjectByCurrentKey("DIN")

//Ustawianie parentIssue
Issue parentIssue = issue

//Custom field z akceptacją
CustomField accepted = customFieldManager.getCustomFieldObjectsByName("Accepted")[0]

//Subtask ID
String subtaskId = "10003"

//Timestamp
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("Europe/Berlin"))
Date date = new Date()
LocalDate localDate = LocalDateFactory.from(date)
calendar.set(Calendar.MONTH, localDate.getMonth())
if(localDate.getDay() >= 27) {
if(localDate.getMonth() == 12) calendar.set(Calendar.MONTH, 1)
else calendar.set(Calendar.MONTH, localDate.getMonth()+1)
calendar.set(Calendar.DAY_OF_MONTH, 1)
} else {
calendar.set(Calendar.MONTH, localDate.getMonth())
calendar.set(Calendar.DAY_OF_MONTH, localDate.getDay())
}


if(issue.getSummary().contains("[ZUA] Checklista - [")){

ApplicationUser userOper = userManager.getUserByName("OPER")
def subtaskiZUA = ["Zamknięcie dnia IForce", "Zamknięcie DEFa"]
subtaskiZUA.each {
//Tworzenie obiektu z parametrami
MutableIssue subtaskParams = issueFactory.getIssue()

//Dodawanie parametrów
subtaskParams.setAssignee(userOper)
subtaskParams.setCustomFieldValue(accepted, "Yes")
subtaskParams.setIssueTypeId(subtaskId)
subtaskParams.setParentObject(parentIssue)
subtaskParams.setProjectObject(project)
subtaskParams.setReporter(applicationUser)
subtaskParams.setSummary(it)
subtaskParams.setDueDate(new java.sql.Timestamp(calendar.getTimeInMillis()))
//Tworzenie mapy params
Map<String,Object> subtaskParamsMap = ["issue" : subtaskParams] as Map<String,Object>
log.warn("Made subtask parameters: " + it)

//Tworzenie zgłoszenia (które trzeba zmianić na subtask)
Issue subtask = issueManager.createIssueObject(applicationUser, subtaskParamsMap)
log.warn("Utworzono subtaska")
}
}

 And after creating issue that meet with first IF, script runs just to first log.warn (so just after creating parameters map) but apparently stop on 

 Issue subtask = issueManager.createIssueObject(applicationUser, subtaskParamsMap)

 Without giving me any errors :/ Only log I have later in Execution Information is my own log.warn confirming creating params map.

Here's what it says me

Time (on server): Tue Jul 30 2019 00:09:12 GMT+0200 (Central European Summer Time)

The following log information was produced by this execution. Use statements like:log.info("...") to record logging information.

2019-07-30 00:09:12,756 WARN [workflow.ScriptWorkflowFunction]: Made subtask parameters: Zamknięcie dnia IForce

 And it don't even create a single subtask

Maybe somebody know how get more informations why it doesn't want to work?

1 answer

1 accepted

0 votes
Answer accepted
Michał Ezman July 29, 2019

I found out what made my headache like whole day

Caused by: java.lang.ClassCastException: java.lang.String cannot be cast to com.atlassian.jira.issue.customfields.option.Option

Suggest an answer

Log in or Sign up to answer