|
Hier wäre doch ein Screencast wunderbar "Seeds in 60 seconds" - Oder erklärende Grafiken
Probably most of the time, doing things with the help of JWT is related to a single object - the issue currently being transitioned, e.g. by adding a comment, updating a field, sending an email, etc.
Referring to the current issue's information can be done by using a simple field code like %{issue.description}
.
However, since you can also use more complex functions in JWT that work with multiple objects, this simple notation is not sufficient for those use cases. To name a few examples
Whenever Jira Workflow Toolbox has to handle (or iterates over) multiple elements of a list (or sources), those elements are referred to as seeds. Depending on the type of list, those are referred to as
Issue lists can be specified by JQL queries, issue list expressions, or (in some post functions or automation actions) by predefined selections, e.g. Issues under Epic.
When dealing with issue lists, the notation for accessing values of each element is %{seed.issue.someField}
, e.g. %{seed.issue.summary}
You might face seed issues when trying to create/update/transition multiple issues.
Given a custom JQL that returns three issues
Creating issues based on this JQL, the post function will run three times, where the following values will be returned throughout those three runs
Run | %{seed.issue.key} | %{seed.issue.summary} |
---|---|---|
1 | DEMO-1 | Issue A |
2 | DEMO-2 | Issue B |
3 | DEMO-3 | Issue C |
In general, using the seed notation, the nth run returns the field values of the nth issue from this list.
When choosing the Issue list mode, e.g. with an expression like linkedIssues(), the behavior is the same.
List functions like mathOnIssueList() or textOnIssueList().
tbd.
Text lists can either be
["firstElement", "secondElement", "thirdElement"]
, ortoStringList(%{issue.components})
or toStringList(%{issue.cf123456}})
(where the custom field with the ID 123456 is a multi option custom field) orfieldHistory(%{issue.summary}})
or groupsUserBelongsTo(%{system.currentUser}})
When dealing with text lists, the notation for each element %{seed.text}
.
Given the example of a static list above, the post function will run three times and the following values will be returned throughout those three runs
Run | %{seed.text} |
---|---|
1 | firstElement |
2 | secondElement |
3 | thirdElement |
Given a dynamic example, having selected the components Frontend and Backend on an issue, the post function will run two times returning the following values for each run
Run | %{seed.text} |
---|---|
1 | Frontend |
2 | Backend |
After adding a third component Interface, the post function will run three times returning the following values for each run
Run | %{seed.text} |
---|---|
1 | Frontend |
2 | Backend |
3 | Interface |
According to this scenarion, composing a summary with an expression like
"Summary of " + %{seed.text} + " Issue"
will result in three issues, named
List functions like mathOnStringList() or textOnStringList()
tbd.
Number lists can either be
[1, 2, 3]
, orreleaseDates(%{issue.fixVersions})
or timesOfTransition("Done","Open"})
When dealing with number lists, the notation for each element is {seed.number}
.
Given a static example with the numeric value of 3
in order to create three issues, the following values will be returned for each run
Run | {seed.number} |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
The number 3
is interpreted as a number list [1, 2, 3]
.
According to this scenario, composing a summary with an expression like
"Summary of Issue # " + %{seed.number}
will result in three issues, named
List functions like mathOnNumberList() or textOnNumberList()
tbd.