Use the Dynamic Forms feature to simplify the process of adding variables to your ScriptRunner Groovy scripts. Dynamic Forms allows you to create complex scripts with flexible variables that can be shared with multiple users, allowing one script to be used for various use cases.
Inline scripts are often copied and pasted, with minor changes made for different use cases. This approach requires maintenance for each usage of the script. Using Dynamic Forms, create flexible scripts with annotated variables that can be stored as files, reducing maintenance requirements while allowing for script customization.
Annotate your variables to have them appear as form fields when a user edits a script. These annotations allow variable values within a script to be changed easily by those with limited code familiarity.
Dynamic forms annotations are available anywhere you can enter code in ScriptRunner, including the Script Console, Conditions, Validators, Post Functions, Behaviours, and many more.
For example, as a power user, you have created a script to delete issues within a project with a specific assignee. This script is used across multiple locations, varying by one variable (User) for each use case. Instead of hardcoding the User variable, you can now use a dynamic form annotation, meaning the user can be changed without needing to re-write the script. As well as being able to edit the script quickly, you can maintain the code in one centralized location. The dynamic form annotation shows the User variable as a form field:
The above example uses the following code:
The following dynamic form field types are available:
Field allowing user selection.
Field to select any system or custom field.
Field allowing a short text input.
Single-select list field.
A checkbox field.
Field allowing project selection.
|Priority Picker||Field allowing priority selection.||com.atlassian.jira.issue.priority.Priority|
|Issue Type Picker||Field allowing issue type selection.||com.atlassian.jira.issue.issuetype.IssueType|
|Issue Link Type Picker||Field allowing issue link type selection.||com.atlassian.jira.issue.link.IssueLinkType|
|Project Role Picker||Field allowing project role selection.||com.atlassian.jira.security.roles.ProjectRole|
|Group Picker||Field allowing group selection.||com.atlassian.crowd.embedded.api.Group|
|Saved Filter Picker||Field allowing saved filter selection.||com.atlassian.jira.issue.search.SearchRequest|
|Issue Status Picker||Field allowing status selection.||com.atlassian.jira.issue.status.Status|
We are in the process of adding more dynamic form field types.
Create a Dynamic Form
Click the Cog in the top ribbon, and open the Add-ons page.
Select Script Console under ScriptRunner.
Write your new script in the Script field, annotating the variables you want users to provide (see the Examples section below). Annotating variables allows them to be edited depending on requirements when running the script. These variables show as editable fields above the Script Console.
Transforming an Existing Inline Script
To enable sharing of annotated scripts, all inline scripts must be saved as files.
Navigate to your existing inline script, and add in required annotations.
Copy the script.
Use the Script Editor to open your Scripts Root folder.
Select the folder in which you want to save the script, and click the Create New File icon.
Enter a file name in the Add New Groovy File/Add New Groovy Folder window.
Paste your inline script into the file, and click Save. This script is now available as a file and can be shared with multiple Jira users on the same instance.
Add a username picker field into your script.
Add a field picker into your script. The field picker lets you pick from any fields (system or custom).
Add a short text field to a script.
Add a single-select list with configurable options.
Add a checkbox to a script.
Add a project picker to a script.
Add a priority picker to a script.
Issue Type Picker
Add an issue type picker to a script.
Issue Link Type Picker
Add an issue link type picker to a script.
Project Role Picker
Add a project role picker to a script.
Add a group Picker to a script.
Saved Filter Picker
Add a saved filter to a script.
Issue Status Picker
Add a status to a script.
Custom Field Picker
Add a custom field picker to a script.
Add a resolution to a script.
Add a version to a script.
Add a component to a script.