...
Panel |
---|
panelIconId | atlassian-info |
---|
panelIcon | :info: |
---|
panelIconText | :info: |
---|
bgColor | #F4F5F7 |
---|
|
This page is about Assets & Inventory Plugin for Jira DC. Using Cloud? Click here. |
This page provides Groovy script examples to interact with asset custom fields and Jira issues within your Jira workflows. These scripts can be used in post functions to update asset attributes based on Jira issue transitions.
Tip |
---|
You can directly use issue or originalIssue of the transition, or fetch an issue by key or |
...
ID with Issue Manager (like anotherIssue in examples). |
...
return statements are optional but it makes the script more readable. |
On this page: Table of Contents |
---|
minLevel | 1 |
---|
maxLevel | 6 |
---|
outline | false |
---|
style | default |
---|
type | list |
---|
printable | true |
---|
|
|
---|
Get Asset's Attribute value
Expand |
---|
|
Code Block |
---|
return aipUtils.getAttributeValueAsStringByName(asset, 'Quantity'); |
|
...
...
Get Asset's Multiple Value Attribute values by name as List
Expand |
---|
|
Code Block |
---|
import inventoryplugin.entity.JipInventoryItem;
import org.apache.commons.lang3.StringUtils;
String getMultipleValues() {
def result = '';
def cityList = aipUtils.getMultiAttributeValueAsListByName(asset, 'Cities ListBox Multiple');
for (String city : cityList) {
result += city + ', '
}
return result;
}
return getMultipleValues(); |
|
...
...
...
...
Get Asset's Multiple Value Attribute values by ID as List
Expand |
---|
|
Code Block |
---|
import inventoryplugin.entity.JipInventoryItem;
import org.apache.commons.lang3.StringUtils;
String getMultipleValues() {
def result = '';
def cityList = aipUtils.getMultiAttributeValueAsListById(asset, 63);
for (String city : cityList) {
result += city + ', '
}
return result;
}
return getMultipleValues(); |
|
...
Example result: New York, London, |
Get Asset's Attribute values by asset object in a loop
Expand |
---|
|
Code Block |
---|
import inventoryplugin.entity.JipInventory
import inventoryplugin.entity.JipInventoryItem
def result = ""
result = result + "\n" + "Asset name: " + asset.getName()
result = result + "\n" + "Form name: " + asset.getForm().getFormName()
result = result + "\n" + "Attachments details: " + asset.getAttachments()
result = result + "\n" + "Creator: " + asset.getCreator()
result = result + "\n" + "Create time: " + asset.getCreated()
// attributes of asset
for(JipInventoryItem inventoryItem: asset.getInventoryItems()){
// For the demo, we append all values to the Text area, so we skip TextArea attribute type values.
if(inventoryItem.getFormAttribute().getAttribute().getAttributeType() != 'TextArea'){
result = result + "\n" + inventoryItem.getFormAttribute().getAttribute().getAttributeName() +
": " + inventoryItem.getValue()
}
}
return issue.description + "\n" + result |
|
Result
Expand |
---|
|
Code Block |
---|
*Creating Quick Filters* You can add your own Quick Filters in the board configuration (select *Board > Configure*)
Asset name: My second asset 001
Form name: All type of attributes form
Attachments details: [ {
"originalFileName" : "arizona-asphalt-beautiful-490466.jpg",
"serverFileName" : "51408_08610_1546431401755.jpg",
"fileSize" : "1 MB",
"created" : "02/Jan/19 2:16 PM",
"creator" : "admin"
} ]
Creator: admin
Create time: 2018-12-11 13:30:05.124
Attribute name: field value
----------------------------------
CheckboxList Field: bal
City: izm
Cities: ist, ada
RadioCities: ist
InventoryList (All Assets List): 3
InventoryListByForm (Assets List By Form(s)): 10
City as DropdownList Field: ada
Purchase Date: 02.01.19
Assign DateTime: 02.01.19 15:16
Device IP: 10.0.0.2
Device IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334
Some Free Text: As a user, I can find important items on the board by using the customisable "Quick Filters" above >> Try clicking the "Only My Issues" Quick Filter above
A great URL example: http://www.snapbytes.com/
Assigned User: admin(admin) |
|
...
Get "Text Field" JIRA custom field value
Expand |
---|
|
Code Block |
---|
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cField = customFieldManager.getCustomFieldObject("customfield_11000")
def cFieldValue = issue.getCustomFieldValue(cField).getValue()
return cFieldValue |
|
...
Example result: Los Angeles |
Get "Select List (single choice)"
...
or "Radio Buttons" JIRA custom field value
Expand |
---|
|
Code Block |
---|
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cField = customFieldManager.getCustomFieldObject("customfield_11000")
def cFieldValue = issue.getCustomFieldValue(cField).getValue()
return cFieldValue |
|
...
Example result: Los Angeles |
...
Get "Select List (multiple choices)" or "Checkboxes" JIRA custom field values
Expand |
---|
|
Code Block |
---|
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cField = customFieldManager.getCustomFieldObject("customfield_11001")
def cFieldValue = issue.getCustomFieldValue(cField)
def cityNameList = new ArrayList<String>()
for(String cityName: cFieldValue){
cityNameList.add(cityName)
}
return String.join(", ", cityNameList) |
|
...
...
Los Angeles, San Francisco, İstanbul |
You can directly use issue
or originalIssue
of the transition, or get another issue with IssueManager (like the example below).
Code Block |
---|
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
def anotherIssue = ComponentAccessor.getIssueManager().getIssueObject("AP-5");
def issueManager = ComponentAccessor.getIssueManager()
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def cField = customFieldManager.getCustomFieldObject("customfield_11001")
def cFieldValue = anotherIssue.getCustomFieldValue(cField)
def cityNameList = new ArrayList<String>()
for(String cityName: cFieldValue){
cityNameList.add(cityName)
}
return String.join(", ", cityNameList) |
ResultExample result: Los Angeles, San Francisco
Get old and new status name of transitioned issue
Expand |
---|
|
Code Block |
---|
return originalIssue.getStatus().getSimpleStatus().getName() + " -> " + issue.getStatus().getSimpleStatus().getName() |
|
...
Example result: To Do -> In Progress |
...
Get resolution of transitioned issue
Please note that getResolution
may be null for unresolved issues.
Expand |
---|
|
Code Block |
---|
return issue.getResolution() != null ? issue.getResolution().getName(): "Not resolved" |
|
...
Get resolution of
...
another issue
Please note that getResolution
may be null for unresolved issues.
Expand |
---|
|
Code Block |
---|
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
def anotherIssue = ComponentAccessor.getIssueManager().getIssueObject("SB-146")
return anotherIssue.getResolution() != null ? anotherIssue.getResolution().getName(): "Not resolved"
|
|
...
Get Created/Updated Date of an issue
If you want to assign a date
or dateTime
asset attribute, the value must be in ISO time format , i.e: 2018(for example, 2018-11-06T10:24:37.513
).
For
dateDate-
time Time fields,
"second
" and rest of the value will be purged automatically. Result example:
2018 2018-11-06T10:24
.
For date fields,
"minute
" and rest of the value will be purged automatically. Result example:
2018 2018-11-06
.
Expand |
---|
|
Code Block |
---|
import java.time.*
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
def anotherIssue = ComponentAccessor.getIssueManager().getIssueObject("SB-146")
return anotherIssue.getCreated().toLocalDateTime().toString() // or use getUpdated insted of getCreated |
|
...
Example result: 2018-11-06T10:24:37.513 |
...
Get Reporter/Assignee user name of an issue
If you want to assign a date
or dateTime
asset attribute, the value must be in ISO time format , i.e: 2018(for example, 2018-11-06T10:24:37.513
).
For
dateDate-
time Time fields,
"second
" and rest of the value will be purged automatically. Result example:
2018 2018-11-06T10:24
.
For date fields,
"minute
" and the rest of the value will
be purged be purged automatically. Result example:
2018 2018-11-06
.
Expand |
---|
|
Code Block |
---|
import java.time.*
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.component.ComponentAccessor
def anotherIssue = ComponentAccessor.getIssueManager().getIssueObject("SB-146")
return anotherIssue.reporter.username // or "anotherIssue.assignee.username" |
|
...
...
Get Current datetime
If you want to assign a date
or dateTime
asset attribute, the value must be in ISO time format , i.e: 2018(for example, 2018-11-06T10:24:37.513
).
For
dateDate-
time Time fields,
"second
" and the rest of the value will be purged automatically. Result example:
2018 2018-11-06T10:24
.
For date fields,
"minute
" and the rest of the value will
be purged be purged automatically. Result example:
2018 2018-11-06
.
Expand |
---|
|
Code Block |
---|
import java.time.*
LocalDateTime t = LocalDateTime.now();
return (t as String) |
|
...
...