Groovy Scripts for adding watcher based on Priority

Hello,

I am looking for a way to use a groovy script to assign watchers of a ticket on creation based on the priority assigned.

Does anyone know if this is possible or has anyone successfully done this before?

Thanks!!

3 answers

1 accepted

Made that change which resulted in another error... thanks for your help, maybe we can get this working with a little more tweaking...

current error:

Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script3.groovy: 36: unable to resolve class MutableIssue
@ line 36, column 14.
MutableIssue mutableIssue = (MutableIssue) issue;
^

Script3.groovy: 36: unable to resolve class MutableIssue
@ line 36, column 29.
MutableIssue mutableIssue = (MutableIssue) issue;
^

2 errors

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:858)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:548)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:214)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:337)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:109)
... 147 more

Where are you copying/adapting this from? You are missing the imports.

Script I tried below:

package com.onresolve.jira.groovy.canned.workflow.postfunctions

import com.atlassian.jira.ComponentManager

def componentManager = ComponentManager.getInstance()
def watcherManager = componentManager.getWatcherManager()
def userManager = componentManager.getUserUtil()

//******************Declaring watchUsers function**********************************
def watchUsers = {usernames ->
usernames.each {
def user = userManager.getUser(it)
watcherManager.startWatching(user, issue.getGenericValue())
}
}
//******************End Declaration of watchUsers function*************************

////******************Defining user groups*******************************
def SHOWSTOPPER_users = ["testuser1"];
def HIGH_users = ["testuser2"];
def MEDIUM_users = ["testuser3"];
def LOW_users = ["testuser4"];
def VERYLOW_users = ["testuser5"];
////******************End user group definitions*************************

////******************Defining user test groups*******************************
def SHOWSTOPPER_test = ["testuser1"];
def HIGH_test = ["testuser2"];
def MEDIUM_test = ["testuser3"];
def LOW_test = ["testuser4"];
def VERYLOW_test = ["testuser4"];
////******************End user test group definitions*************************



MutableIssue mutableIssue = (MutableIssue) issue;
def priority = mutableIssue.getPriority().getString("name");

if(priority.equals("5-Showstopper")){
//Assign to watchers who need for showstopper
//watchUsers(SHOWSTOPPER_users);
watchUsers(SHOWSTOPPER_test);
}
else if(priority.equals("4-High")){
//Assign to watchers who need for high
//watchUsers(HIGH_users);
watchUsers(HIGH_test);
}
else if(priority.equals("3-Medium")){
//Assign to watchers who need for medium
//watchUsers(MEDIUM_users);
watchUsers(MEDIUM_test);
}
else if(priority.equals("2-Low")) {
//Assign to watchers who need for low
//watchUsers(LOW_users);
watchUsers(LOW_test);
}
else if(priority.equals("1-Very Low") ) {
//Assign to watchers who need for very low
//watchUsers(VERYLOW_users);
watchUsers(VERYLOW_test);
}
else //No priority is assigned.
//Assign no watchers one.

Error I found in the JIRA log after running:

Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Script2.groovy: 65: unexpected token: @ line 65, column 28.
//Assign no watchers one.
^

1 error

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302)
at org.codehaus.groovy.control.ErrorCollector.addFatalError(ErrorCollector.java:149)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:119)
at org.codehaus.groovy.control.ErrorCollector.addError(ErrorCollector.java:131)
at org.codehaus.groovy.control.SourceUnit.addError(SourceUnit.java:359)
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:141)
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:107)
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236)
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:160)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:843)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:548)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:524)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:501)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:267)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:214)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:337)
at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:109)
... 147 more

Looks like your script ends with the keyword "else" ?

That's not valid.

Just remove the final "else"... then it should be ok.

That did it! Thank you!

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published May 30, 2018 in Marketplace Apps

Three tips for boosting your board's efficiency with Story Maps

Trello is one of the most effective tools for driving your sprints. It's customizable for every Agile team and product owners and Scrum masters (SM) love it. However, Agile teams often struggle with:...

828 views 2 9
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you