Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction

The Automation Toolbox for Jira expression parser provides over 200 functions and operators to read, manipulate and filter data from Jira issues, users, groups, projects and more.

Among the long list of functionalities, the parser functions support setting and/or updating field values, issue filtering, date and time calculations, string manipulation and the execution of mathematical operations.

The expression parser has been in constant development since 2009 when it was first introduced in Jira Workflow Toolbox. Since that time, the expression parser has seen constant development, improvement, and extended functionality.

Tip
All full list of supported functions can be found here: Expression parser 201 - All functions

This page will help you to get familiar with the powerful expression parser. We provide several use cases that will guide you to write simple expressions as well as high complex expression. To understand the expression parser, work through the sections on this page and you will be able to use it like a pro.

Table of Contents

Introduction

...


Main Features

The expression parser has two major core functionalities

...

:

  • Extend accessibility to
    • issue
    • system
    • project
    • version
    • component
    • and user data through the use of Virtual Fields 
  • Provide a set of operators and functions to
    • read
    • filter
    • extract
    • manipulate
    • write
    • update related data

Field codes and usage

Excerpt Include
Field Codes and Usage
Field Codes and Usage
nopaneltrue

Virtual fields

Excerpt Include
Virtual fields
Virtual fields
nopaneltrue

Tip
All comprehensive overview of all available virtual fields can be found here


Expand
titleClick here to expand for a few examples...


Field NameField code

Value

Summary

Virtual Fields

The concept behind virtual fields is to make it possible to write several issue fields and virtual fields that are standard fields like the issue summary and fields that are not writable by default. You can for example trigger the execution of a transition using the virtual field "Issue Status" or add a new comment using the virtual field "New Comment".

Reading virtual fields to use their values to update other fields is possible with field codes. We support string and number field values. An example of a string field code is: %{issue.summary} and a number field code is {issue.dueDate}. Every feature in our app supporting expressions provide dropdown fields to search for the available field codes and insert the field code in your expression. So you don't need to remember the field codes. You always can search for the right field code.

Sample string field codes

...

%{issue.summary}

Issue Summary as 

Status
colourYellow
titleString

Description
%{issue.description}

Issue Description as 

Status
colourYellow
titleString

Assignee
%{issue.assignee}

User name of the Assignee as 

Status
colourYellow
titleString

Parent's assignee
%{parent.

...

assignee}

User name of the parent's Assignee as 

Status
colourYellow
titleString
 

Number of votes received
%{

...

issue.

...

votes}

Sample number field codes

  • {issue.dueDate}
  • {issue.createdDate}
  • {issue.votes}
  • {parent.dueDate}

...

Status
colourBlue
titlenumber
 of votes received by the issue.



Info
titleRemember

Numeric field codes are only available for number fields, date/time fields and countable virtual fields

...

.

Functions

The expression parser provides over 200 functions to read, manipulate and filter data from Jira issues, users, groups and more. The functions support issue filtering, date calculation, string manipulation and more. A great set of operators allows you to write conditional functions, mathematical operations and comparison expressions.

The following list shows the overview of operators and function provided by the parser:

Operator

  • Boolean operator
  • Mathematical operator
  • List operator
  • Logical operator
  • Conditional operator

Functions

  • Issue data functions
  • User, Group & Role functions
  • Version functions
  • Field history functions
  • Selectable fields functions
  • Mathematical functions
  • Date-Time functions
  • String functions
  • String list functions
  • Issue list functions
  • Number list functions
  • Cast functions

You can find all functions here.

The Expression Parser Syntax Specification

Automation Toolbox for Jira uses a powerful expression parser for interpreting expressions with logical, mathematical, date-time and string-text terms.

This parser is a fundamental part of the app, and is used by various features in the app. The parser offers very similar functionality to the expression parser known to Jira Workflow Toolbox users. There are some differences, mainly in field code usage and the lack of ephemeral fields. 

You can use the provided parser functionality with a number of triggers, conditions, actions and selectors.      

The following is a simple example of parser usage for the Condition → Boolean Condition .

The condition will return true  if the issues Due date is greater than the current date.

Image Removed


Parsing modes

Note

The available Selectors, Conditions and Actions depend on the selected Trigger.

The syntax depends on the

...

parsing mode and the context of the rule. Therefore the following table explains the different parsing modes.

Code Block
titleappend the last comment to the issue desciption
#basic parsing mode
%{trigger.issue.description}
Last comment:
%{trigger.issue.comment.last}
#advanced parsing mode
%{trigger.issue.description} + "\nLast comment: \n" + %{trigger.issue.comment.last}

Parsing modes

The Expression Parser offers you different modes to provide a flexible usage in certain places. You can calculate an issue due date depending on the current date or filter the issue sub-tasks by status to add a comment to those.

To update issue fields the parsing result will be cast to the expected value e.g. a user name will be cast to a user to update a user field like the assignee field.

...

String

Object

The basic parsing mode supports the usage of field codes. Field codes can be used to access issue field values.

Code Block
titlesimple text using a field code to read the summary
This is the issue summary: %{trigger.issue.summary}

Excerpt Include
Parsing modes
Parsing modes
nopaneltrue


Functions and operators

To use the full power of the expression parser you can use various functions and combine them with operators.

Functions

Children Display
pageExpression parser 201 - All functions

A comprehensive overview can be found here.

Operators

Different operators can be used in the expression parser. All operators are listed on these pages:


Div
styleline-height: 150%;
idtocContainer
classtocContainer


Panel
borderColor#333f48
bgColor#FFFFFF
titleColor#eeeeee
borderWidth1
titleBGColor#333f48
borderStylesolid
titleOn this page

Table of Contents
maxLevel2
indent20px
classp

...

Field codes

Parser Functions

...

String

Object

The advanced parsing mode has a defined syntax that allows you to write functions to read and manipulate data from any issue in Jira. Field codes are supported as well as clear text, written in quotation marks. 

Code Block
titleAdvanced expression to read the issue summary and use a function to get the assignee mail address
"This is the issue summary:" + %{trigger.issue.summary} + " and the assignee mail is: " + userEmail(%{trigger.issue.assignee})

...

Field codes

Parser Functions

...

Number

Date

Date Time

The mathematical and date time parsing mode works like the advanced mode but expect a number as result instead of a string. The resulting number is used to updated numeric or date time fields. In case of date or date time fields the number will be cast to a date.

Code Block
titleTime to resolve the issue
{trigger.issue.resolutionDate} - {trigger.issue.createdDate}

...

Field codes

Parser Functions

...

true

false

The logical parsing mode works like the advanced parsing mode but expression result must return true or false.

Code Block
titleCheck if the assignee is equals the reporter
{trigger.issue.assingee} = {trigger.issue.reporter}

...

Field codes

Parser Functions

...

issue list

...

Field codes

Parser Functions

...

Field codes

Parser Functions written in three curly braces

...