Versions Compared

Key

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

A post-function that runs a sequence of JMWE post-functions. This is the easiest way of making sure that a series of post-functions run in a predictable order during a transition - it is easier and more reliable than using Delayed execution as was previously recommended.

For example, if you need, during a transition, to first create a new issue (using the Create Issue(s) post-function) and then send a notification email mentioning the new issue (using the Email Issue post-function), you need to make sure that the first post-function has finished running before starting the second one, which is something that Jira Cloud doesn't guarantee if you don't use a Sequence.

To add the 'Sequence of Post-functions' post-function to a transition: 

  1. Click Edit for the workflow that has the transition, you wish to add the post-function on.

  2. In the Workflow Designer, select the transition.

  3. Click on Post Functions in the properties panel.

  4. Click on Add  post function.

  5. Select Sequence of post-functions from the list of post-functions.

  6. Click on Add to add the post-function on the transition.Image Removed

    Image Added
  7. Click on "Add post function"

  8. Add the required post-functions

  9. Click on Add to add the post-function to the transition.

Common to all post-functions:

Filter by label (Content by label)
showLabelsfalse
max5
spacesKB
sorttitle
showSpacefalse
sort
type
title
page
typepage
labelskb-troubleshooting-article
cqllabel = "common-issue" and type = "page" and space = "JMWEC"
labelskb-troubleshooting-article
Panel
titleRelated links


in

When you add this post-function to a transition and trigger it, 

each post-function defined 

each post-function defined in the sequence is run, one after the other. 

Passing variables within a sequence

Using the {% setContextVar %} Nunjucks tag you can pass data from one post-function to a subsequent post-function.

transition.context: Holds all the context variables added in the current post-function. For example, if you create a context variable myVar in the first post-function of the sequence:

Code Block
languagegroovy
linenumberstrue
{% setContextVar myVar = "a value" %}

This variable will then be available to subsequent post-functions as:

Code Block
languagegroovy
linenumberstrueStores
{{ transition.context.myVar }}

(warning) Note that this variable will not be available in the Nunjucks tester. 

Variables specific to the Create Issue post-function

newIssueKey:

 

 Stores the issue key of the last issue created by a Create Issue(s) post-function in the sequence. You can access it as:

Code Block
languagegroovy
linenumberstrue
{{ transition.context.newIssueKey }} 

newIssueKeys:

Stores

Stores an array of the keys of all the issues created by any Create Issue(s) post-function in the sequence. You can access the created issues from

Code Block
languagegroovy
linenumberstrue
{{ transition.context.newIssueKeys }}

For example: to add a comment on the current issue with the keys of the issue created

Code Block
languagegroovy
linenumberstrue
Issues created are:
{{ transition.context.newIssueKeys | join(",") }}

You can access the information of a specific issue using the issue filter. For example: To get the assignee of the issue created by the Create issue post-function:

Code Block
languagejs
linenumberstrue
{{ transition.context.newIssueKey | issue("assignee") | field("fields.assignee.displayName") }}


For example, consider a use case where you want to clone an issue and its subtasks to another project, then:

  1. Add the "Sequence of post-functions" post-function to the transition

  2. In the sequence add the "Create issue" post-function.

    1. Select the destination project in "Project"

    2. Select the "Issue type" as "Calculated" and input: {{ issue.fields.issuetype.name }}

    3. Select the "Link to new issue" as "clones"

    4. Configure the fields

    5. Click on Save

  3. Add another "Create issue" post-function to clone the sub-tasks

    1. Select the destination project in "Project"

    2. Select the "Issue type" as "Subtask"

    3. Under the "Parent issue" input the following template:

      Code Block
      languagejs
linenumberstrue
    1. {{ transition.context.newIssueKey }}


    2. Select "Multiple issue creation" option and input the following template:

      Code Block
      languagejs
linenumberstrue
    1. {{ issue | subtasks | length }}


    2. Save the post-function.

  1. Click on "Save"

  2. Publish the workflow.

Error handling

If one of the post-functions fails with an error,

 the

 the remaining post-functions in the sequence

are run anyway. To stop

are run anyway. To stop the execution of subsequent post-functions after an error occurs,

 select

 select the option “Skip subsequent post-functions if a post-function encounters an error”.

Conditional execution

To execute this post-function based on the result of a Nunjucks template see Conditional execution.

Delayed execution

To delay the execution of this post-function see Delayed execution.