Hi,
I'm using the 'Create sub-task' option in this exceptional tool, but I have a problem referring to my constants 'CustomFields' class.
When this code is triggered:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.fields.CustomField import org.apache.log4j.* import groovy.util.logging.* import static com.ubs.sr.constants.CustomFields.* def Logger log = Logger.getInstance(getClass()) log.level = Level.debug log.info "Workflow - In Progress - Create QA sub-task" CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager() CustomField cfQaRequiredYN = customFieldManager.getCustomFieldObject(CFQAREQUIREDYN) log.info "QA Required = ${issue.getCustomFieldValue(cfQaRequiredYN)}" issue.issueTypeObject.name == 'Story' && ((issue.getCustomFieldValue(cfQaRequiredYN).toString() ?: "").equals("Yes"))
it logs these two errors in the log file:
cript4.groovy: 6: unable to resolve class com.ubs.sr.constants.CustomFields @ line 6, column 1. import static com.ubs.sr.constants.CustomFields.* ^ Script4.groovy: 6: unable to resolve class com.ubs.sr.constants.CustomFields @ line 6, column 1. import static com.ubs.sr.constants.CustomFields.* ^ 2 errors
The answer to my earlier 'ScriptRunner Primer' question works perfectly for scripts, but the Create Sub-task 'script-lit' won't work with this.
Being able to refer to the custom fields by constants makes the deployment to another instance easier as its only a single place to update. Is this possible with the 'Create sub-task' function?
Kind regards,
Richard
Answering my own last question: - adding '(CreateSubTask.Field_SubTask_Action) : 1' does the trick am
createSubTask.doScript([
issue : issue,
(CreateSubTask.FIELD_TARGET_ISSUE_TYPE) : constantsManager.getSubTaskIssueTypeObjects().find { it.name == ITYPE_QASUBTASK }.id.toString(),
(CreateSubTask.FIELD_SUBTASK_SUMMARY) : "New QA Sub-task - please update",
(CreateSubTask.FIELD_SUBTASK_ACTION) : 1 // Step ID for Open
])
Unfortunately that doesn't work - this is https://jamieechlin.atlassian.net/browse/GRV-443. The reasons why are a bit dull, but when you point to a file it's executed by a GroovyScriptEngine, when it's an inline script it's the groovy javax.script.ScriptEngine, and the two have different capabilities. This is something I need to get to.
You can work around it by using a custom script post-function, and just calling the CreateSubTask built-in script, like this. It's not totally satisfactory but it works, and it's better than duplicating your constants around.
package ... import com.atlassian.jira.component.ComponentAccessor import com.onresolve.scriptrunner.canned.jira.workflow.postfunctions.CreateSubTask import com.ubs.Constants // all your condition code here... def conditionPasses = true def constantsManager = ComponentAccessor.getConstantsManager() if (conditionPasses) { def createSubTask = new CreateSubTask() createSubTask.doScript([ issue : issue, (CreateSubTask.FIELD_TARGET_ISSUE_TYPE): constantsManager.getSubTaskIssueTypeObjects().find { it.name == "Sub-task" }.id.toString(), (CreateSubTask.FIELD_SUBTASK_SUMMARY) : "some summary", ]) }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Jamie Many thanks for the prompt reply. I'll implement that solution and keep the information for future reference. Cheers Richard
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks - I was able to implement this today. But I now have a related question - which parameters do I set ask it to reopen any existing matching sub-tasks rather than create new ones?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.