Have you ever needed a button in an issue just to do stuff without modifying the issue status? And what about applying edit permissions on the field level? This article shows how to set workflows for covering both needs in a cost-effective way.
Natively, Jira workflows count with a really powerful feature which is just a little bit hidden. Let's name it global looping transition, which is the key functionality for achieving our goals, and has definitely changed the way I design workflows since I discovered it.
A global looping transition is a special kind of workflow transition that meets these two characteristics at once:
This is the graphical representation of a global looping transition named Do something:
Nice! Isn't it?
A global looping transition can only be set through the diagram mode of the workflow editor, by following these steps:
That's it! The transition will be created.
Sometimes you just need to add a button to the issue detail view in order to perform actions somehow related to said issue which do not require to apply a status change.
While that purpose may be covered by creating a transition from a status to itself and adding an appropriate post-function, a similar transition should be created in each status from which the functionality should be available.
This approach is not easy to maintain, as it requires setting multiple times the very same thing, both in its initial configuration and in future changes.
An alternative yet bad approach consists of adding a post-function to a global transition targeting a status specifically created for this purpose. In example, if the post-function executes a calculation and modifies a field accordingly, a status named Calculating with a global transition could be created.
However, this is just a poor workaround, because:
As you've probably already noticed, using a global looping transition with the appropriate post-function is the correct way to go here, as it doesn't have any of the disadvantages caused by its counterparties.
The ability to control who can edit a specific field in Jira is usually implemented this way:
However, doing so without the help of a global looping transition counts with the same disadvantages previously shown in the section Use case: Triggering a post-function.
Thanks to the native global looping transition feature, controlling edit permission on the field level is both an easier and a more feasible task.