Groovy templates
Groovy Template is a templating engine for JavaScript. It lets you insert dynamic content into any text through the use of templates. A template contains variables and/or expressions, which get replaced with values when a template is rendered. This is very similar to JSP markup.
On this page:
Groovy templates in JMWE
Groovy templates in JMWE are used in:
- Comment issue and Comment related issues post-function to create the body of the comment by selecting
Groovy templateas theComment type - Create/Clone issue(s) post-function to:
- Set fields of the new issue by selecting
Groovy templateas theValue type - Add a comment to the current issue by selecting
Groovy templateas theComment type
- Set fields of the new issue by selecting
- Set field value and Set field value of related issues post-functions to set a field value by selecting
Groovy templateas theValue type - Email issue post-function to write the
Subject, HTML body and Text body - Link issues to the current issue post-function to write the
JQL search expression
Groovy templating features
To output the result of a simple Groovy expression, write your Groovy code as <%= some Groovy code %>. For example:
<%= issue.getKey() %>
For single-statement expressions, you can also use the following shortcut:
${issue.getKey()}
To simply execute a Groovy code and not output the result, write your Groovy code as <% some Groovy code %>. For example:
<% log.debug("I was here") %>
You can also output the value of a variable or its properties using $variable or $variable.someProperty. For example:
$currentUser returns an ApplicationUser
$currentUser.name returns the username of the current user
To call a method on the variable, use ${variable.method()}:
${currentUser.getName()} also returns the username of the current user
Groovy template examples
Write the issue key as a comment to the issue:
Issue key: ${issue.get("issuekey")}
Comment an issue based on the priority of the issue:
<% if (issue.get("priority").name == "Critical") { %>
The priority of the issue is <%=issue.get("priority").name %>. So Look out!
<% } %>
To send an Email to the Voters and Watchers of the issue when the issue is resolved, write this as the Subject of the Email (note that we mixed <%= %> and ${} expressions only to show how both are valid):
Hi All,
<% if (issue.assignee)
{%>
The issue <%= issue.key%> has been resolved by <%=issue.assignee.displayName%>
<%}
else
{%>
The issue ${issue.key} has been resolved
<%}%>
Regards,
<%=issue.get("project")?.getLead()?.getDisplayName()%>
Note that you can also "print" to the text: If you would like to print the components of the project:
<% issue.getAvailableOptions("components").each() {
print "Component: "+ it.name + "\n"
}
%>