Until 5.0.0 JMWE add-on could set a field or comment an issue using either a Raw Value
or the result of a Groovy expression
. Starting from 5.0.0, JMWE provides an option to include Groovy templates too. Using this you can template you can output both text and Groovy expression results togetherGroovy 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.
To write a simple Groovy codeOn this page:
...
Table of Contents |
---|
...
<%= some Groovy code %>
To just execute a simple Groovy code:
Code Block |
---|
<% some Groovy code %> |
...
Groovy templates in JMWE
Groovy templates in JMWE are used in:
- Comment issue and Comment linked related issues post-function to create the body of the comment by selecting
Groovy template
as theComment type
- Create/Clone issue(s) post-function to:
- Set fields of the new issue by selecting
Groovy template
as theValue
type andtype
- Add a comment to the current issue by selecting
Groovy template
as theComment type
- Set fields of the new issue by selecting
- Set field value to a constant or Groovy expression and Set field value of linked related issues post-functions to set a field value by selecting
Groovy template
as 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 write the
JQL search expression
Groovy templating features
To output the result of a simple Groovy expression, write your Groovy code as <%= some Groovy
template examples:code %>.
For example:
Code Block | ||||
---|---|---|---|---|
| ||||
<%= issue.getKey() %> |
For single-statement expressions, you can also use the following shortcut:
Code Block | ||
---|---|---|
| ||
${issue.getKey()} |
To simply execute a Groovy code and not output the result, write your Groovy code as <% some Groovy code %
>. For example:
Code Block | ||||
---|---|---|---|---|
| ||||
<% 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:
Code Block | ||||
---|---|---|---|---|
| ||||
Issue key: <%= ${issue.get("issuekey") %>} |
Comment an issue based on the priority of the issue:
Code Block | ||||
---|---|---|---|---|
| ||||
<% 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 is as the Subject of the Email (note that we mixed <%= %>
and ${}
expressions only to show how both are valid):
Code Block | ||||
---|---|---|---|---|
| ||||
Hi All, <% if (issue.assignee) {%> The issue <%= issue.key%> has been resolved by <%=issue.assignee%>assignee.displayName%> <%} else {%> The issue <%= ${issue.key%>key} has been resolved <%}%> Regards, <%=issue.get("project")?.getLead()?.getDisplayName()%> |
Note Note that you can also "print" to the text: If you would like to print all the components of the project:
Code Block | ||
---|---|---|
| ||
<% issue.getAvailableOptions("components").each() { print "Component: "+ it.name + "\n" } %> |
...