When you add this condition to a transition, the add-on checks the result of the Jira expression. If the expression returns true
, the transition will be available to the user, and if it returns false
or a non-boolean value, the transition will be hidden.
Avoid Jira expressions errors
When a Jira expression throws an error, Jira considers the result as false
and hence the workflow condition fails. The best way to avoid errors in your Jira expressions is to test your Jira expressions against an issue using the "Jira expression tester" before saving the condition. Here are typical problems you need to look out for:
Syntax errors: Currently, syntax errors are not logged in the JMWE logs when conditions and validators are run (because of a Jira bug). So you will never know why the condition failed if it's because of a syntax error. Testing the Jira expression, however, will show syntax errors.
null
values: If your Jira expression returnsnull
it is considered a non-boolean value and hence Jira returns an error. For example, to check that the issue is assigned, if you provide the Jira expression as:issue.assignee
when tested against an issue that is unassigned the expression returns
null
. In such cases, the easiest is to use two logical not operators (!!) to returntrue
if the issue is assigned ( ! issue.assignee returnsfalse
hence !! issue.assignee will returntrue
when the issue is assigned).!! issue.assignee
You can also write a Jira expression to check that the result is not
null
like this:issue.assignee != null
If your Jira expression accesses properties of an object that is
null
, then your Jira expression and thereby your workflow condition fail with an error. For example, to check that the issue's parent is a Story if you provide the Jira expression:issue.parent.issuetype.name == "Story"
when tested against an issue without a parent, the Jira expression will return an error "Type null does not have any properties". To handle this you should include an expression to test that the issue has a parent.
!! issue.parent && issue.parent.issuetype.name == "Story"