Related links:
When you add this validator to a transition and trigger the transition, the add-on checks the result of the groovy expression. If it returns false
or a Groovy falsy
, a validation error message is displayed.
Expected value
Click on the "Expected Value" tab in the Groovy editor help for a few examples on the expected value for the validator.
The value should be either:
A boolean value (
true
if validation passes orfalse
if validation fails). For example, Fail the validation if the current user is not the reporter of the issueCode Block language groovy issue.reporter.name == currentUser.name
A String representing the error message to display (meaning that the validation fails). For example, Prevent the user from moving forward if the issue is unassigned
Code Block language groovy if(!issue.get("assignee")){ "You cannot move forward since the issue is unassigned" }
If the issue is unassigned, then the message "You cannot move forward since the issue is unassigned" will be displayed. Note that you cannot include HTML in the error message because Jira escapes HTML in the error message.
A
Map<String,String>
where each key is a field name or ID and the corresponding value is the error message to display for that field. For example, if the script returns:Code Block language groovy ["summary":"Too long","Description":"Too short"]
then Too long will be displayed below the Summary field, and Too short will be displayed below the Description field. Note that the field can be identified either by its name or its ID.
or else, any value that will be interpreted as either "truthy" (validation passes) or "falsy" (validation fails)
Code Block language groovy issue.resolution
this returns the Resolution object which is considered
truthy
.
Examples of custom validators
With simple Groovy scripting, you can create custom validators that fit your purpose using this Validator.
For example, if you want to prevent the user from resolving an issue if the issue has an unreleased Fix Version/s either from before or added during the transition:
Code Block |
---|
!issue.fixVersions.any{it.isReleased()} |
In this validator, you can access the values modified during the transition using the getModifiedFields()
method of the Issue interface. For example, if you want to check during a transition that the issue is assigned to a specific user:
Code Block |
---|
issue.modifiedFields?.get("assignee")?.getNewValue() == currentUser |
In this validator, you can access the issue fields before and during/after the transition using the originalIssue
and issue
variables respectively. For example, during a Story modification, you want to check that the Story points of the Story have not been raised by more than 5:
Code Block |
---|
issue.get("Story Points") - originalIssue.get("Story Points") < 6 |
To add 'Scripted (Groovy) Validator' to a transition:
Click Edit for the workflow that has the transition you wish to configure the validator on.
In the Workflow Designer, select the transition.
Click on Validators in the properties panel.
Click on
Add validator
.Select
Scripted (Groovy) Validator
from the list of validators.Click on
Add
to add the validator.Write a Groovy expression in the
Groovy script
field.Input a message in the
Error message
field.Select on which field the error message should be displayed.
Click on
Add
to add the validator to the transition.
Note |
---|
On the Service Management portal view of a request, the customer will not see the |