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:
Click Edit for the workflow that has the transition, you wish to add the post-function on.
In the Workflow Designer, select the transition.
Click on
Post Functions
Click on
Add
post function
.Select
Sequence of post-functions
from the list of post-functions.Click on
Add
to add the post-function on the transition.Click on "Add post function"
Add the required post-functions
Click on
Add
to add the post-function to the transition.
Common to all post-functions:
Filter by label (Content by label) | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
|
|
Panel | ||
---|---|---|
| ||
When you add this post-function to a transition and trigger it,
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 | ||
---|---|---|
|
{% setContextVar myVar = "a value" %} |
This variable will then be available to subsequent post-functions as:
Code Block | ||
---|---|---|
|
{{ transition.context.myVar }} |
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 | ||
---|---|---|
|
{{ transition.context.newIssueKey }} |
newIssueKeys:
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 | ||
---|---|---|
|
{{ transition.context.newIssueKeys }} |
For example: to add a comment on the current issue with the keys of the issue created
Code Block | ||
---|---|---|
|
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 | ||
---|---|---|
|
{{ 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:
Add the "Sequence of post-functions" post-function to the transition
In the sequence add the "Create issue" post-function.
Select the destination project in "Project"
Select the "Issue type" as "Calculated" and input: {{ issue.fields.issuetype.name }}
Select the "Link to new issue" as "clones"
Configure the fields
Click on Save
Add another "Create issue" post-function to clone the sub-tasks
Select the destination project in "Project"
Select the "Issue type" as "Subtask"
Under the "Parent issue" input the following template:
Code Block language js
{{ transition.context.newIssueKey }}
Select "Multiple issue creation" option and input the following template:
Code Block language js
{{ issue | subtasks | length }}
Save the post-function.
Click on "Save"
Publish the workflow.
Error handling
If one of the post-functions fails with an error,
the remaining post-functions in the sequence
are run anyway. To stop the execution of subsequent post-functions after an error occurs,
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.