🚀 JWT 3.0 is out 🚀 

The app was completely overhauled, and so was the documentation: Jira Workflow Toolbox (Server/Data Center) Home

The page you are viewing is still valid for all app versions prior to 3.0.

[2014-09-15] Released Jira Workflow Toolbox 2.1.21

New features

  • Parser enriched with 21 new functions: (More details at Expression Parser.)
    • transitionLinkedIssues(string issue_link_types) : issue list
    • filterByFieldValue(issue list issues, numeric field field, comparison operator operator, number n) : issue list
    • filterByFieldValue(issue list issues, string field field, comparison operator operator, string s) : issue list
    • append(string list l, string list m) : string list
    • append(number list l, number list m) : number list
    • union(string list l, string list m) : string list
    • union(number list l, number list m) : number list
    • except(string list l, string list m) : string list
    • except(number list l, number list m) : number list
    • intersect(string list l, string list m) : string list
    • intersect(number list l, number list m) : number list
    • distinct(string list l) : string list
    • distinct(number list l) : number list
    • filterByCardinality(issue list l, comparison operator operator, number n) : issue list
    • filterByCardinality(string list l, comparison operator operator, number n) : string list
    • filterByCardinality(number list l, comparison operator operator, number n) : number list
    • toStringList(string s, string separators) : string list
    • toNumberList(string s, string separators) : string list
    • getIssuesFromProjects(string projects) : issue list
    • issueKeysToIssueList(string issues) : issue list
    • isInRole(string user_name, string role_name) : boolean
  • Parser enriched with 4 new comparison operators to be used with strings, multi-valuated fields and lists:
OPERATOR MEANING EXAMPLES
~ contains "Hello world!" ~ "world", checks whether a string contains a substring
%{00125} ~ %{00020}, checks whether "Component leaders" contains "Current user"
linkedIssues() ~ subtasks(), checks whether all subtasks are also linked to current issue
!~ doesn't contain "world" !~ "Hello world!"
%{00074} !~ %{00077}, checks whether "Fixed versions" doesn't contain "Affected versions"
fieldValue(%{00006}, linkedIssues()) !~ fieldValue(%{00006}, subtasks()), checks whether linked issues reporters don't include all subtasks reporters
in is contained in "world" in "Hello world!", to check whether a substring is contained in a string
%{00020} in %{00125}, checks whether "Current user" is contained in "Component leaders"
subtasks() in linkedIssues(), checks whether all subtasks are also linked to current issue
not in isn't contained in "Hello world!" not in "world"
%{00077} not in %{00074}, checks whether "Affected versions" are not contained in "Fixed versions"
fieldValue(%{00006}, subtasks()) not in fieldValue(%{00006}, linkedIssues()), checks whether all subtasks reporters are not included in linked issues reporters

These 4 new comparison operators respect cardinality, and work on the following data types:

  • String
  • Multi-valued fields: Multi Select, Checkboxes, Components, Versions, Multi User Picker, Multi Group Picker, Issue Pickers, Attachments and Labels.
  • Issue list: Returned by functions like subtasks(), linkedIssues(), transitionLinkedIssues(), filterByFieldValue(), filterByStatus(), filterByIssueType(), filterByResolution(), filterByProject(), append(), union(), except(), intersect() and distinct().
  • String list: Returned by functions like fieldValue(), append(), union(), except(), intersect() and distinct().
  • Number list: Returned by functions like fieldValue(), append(), union(), except(), intersect() and distinct().

Improvements

  • Comparison operators = and != now can also be used on multi-valued fields, issue lists, number lists and string lists. These operators respect cardinality and order.
  • Function filterByResolution(issue list issues, string resolutions) now returns unresolved issues when argument resolutions receives an empty string ("").
  • Improvements on condition and validator " Users in field are (not) in a project role":
    • Both features now support "Group Picker" and "Multi-Group Picker" custom fields. When these type of fields are used, all users in the groups are evaluated.
    • 4 new conditions added to validator.
    • 7 new conditions added to condition, giving it the same functionality as the validator.
  • Minor UI improvements.
  • Support for reading and writing the following custom field types provided for third-party add-ons:
    • Project Roles or Groups User Picker, Project Roles or Groups Multi User Picker, Single Selected Users Picker and Multi Selected Users Picker custom fields provided by Custom User Pickers add-on.
    • Transition Caller Field and Parent Status Field custom field provided by Jira Misc Custom Fields add-on.
    • User Picker - per Group custom field provided by User Group Picker add-on.
    • SIL User Picker custom field provided by User Group Picker PRO add-on.
    • All custom field types provided by Kepler Custom Fields add-on.

Fixed bugs

  • All 3 functions linkedIssues() didn't return issues linked in transition screen.
  • Function numberOfSelectedItems(%{00080}) always returned 1, instead of the number of labels in the issue, as expected.
  • Number to String auto-casting issues in the parser.
  • Function count() wasn't working correctly with arguments of type "String list" and "Number list".
  • Validator Validation on linked issues was counting twice each issue link introduced in transition.
  • When parent issue was reading an ephemeral field previously written by one of its subtasks, the field appeared as uninitialized.
  • Fixed bad UI design for issue link type selection in post-function Break issue link: it wasn't possible to select of issue link types in only one direction (inward or outward).