Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Panel
panelIconIdatlassian-info
panelIcon:info:
panelIconText:info:
bgColor#F4F5F7

This page is about Assets & Inventory Plugin for Jira DC. Using Cloud? Click here.

This guide explains how to configure the Create Asset workflow post function to automatically create new assets in Jira when specific workflow transitions occur.

On this page:

Table of Contents
minLevel1
maxLevel6
outlinefalse
styledefault
typelist
printabletrue

Adding the post function

Add "[AIP] - Create Asset workflow postfunction" to the workflows to create an asset object on transition. If the conditions pass, post function will create an asset and optionally attaches to the current issue. 

...

...

Put the post function in the middle; after issue creates and before "Update change history for an issue and store the issue in the database."

...

Image Removed

...

Workflow

...

parameters

...

Parameter

Description

Condition 1

Groovy script for the post function condition.

...

Function must return true or condition must be empty to pass. If condition fails post function will be ignored.

Condition 2

Asset custom field value must be empty before transition

Link to issue

Set newly created asset to asset custom field

Target Asset custom field

Specify the custom field to link asset.

Asset Type

Type of asset to create

Attributes (optional)

Target attribute to set it's value

Context parameters for Groovy Scripts

Please see Sample Groovy Scripts to Create/Update Asset workflow post function for more examples.

Variable Name

Description

issue

Access current issue. Instance of com.atlassian.jira.issue.Issue. see https://docs.atlassian.com/software/jira/docs/api/latest/index.html?com/atlassian/jira/issue/Issue.html

originalIssue

Access original issue before the transition. Instance of com.atlassian.jira.issue.Issue. see https://docs.atlassian.com/software/jira/docs/api/latest/index.html?com/atlassian/jira/issue/Issue.html

ComponentAccessor

Access JIRA components. See https://docs.atlassian.com/software/jira/docs/api/latest/index.html?com/atlassian/jira/component/ComponentAccessor.html

customFieldManager

Access JIRA Custom Field Manager class. See https://docs.atlassian.com/software/jira/docs/api/latest/index.html?com/atlassian/jira/issue/CustomFieldManager.html

loggedInUser

ApplicationUser instance for current logged in user. See https://docs.atlassian.com/software/jira/docs/api/latest/index.html?com/atlassian/jira/user/ApplicationUser.html

Example:

...

loggedInUser

...

==

...

issue.getAssignee()

DefaultIssueChangeHolder

Default implementation of a change holder. It is used to update a custom field.

aipUtils

Helper class for the post function groovy script. See aipUtils for details

Sample Post Function configuration page

Here is an example of all types of attributes.

...

Try Groovy Scripts

You can immediately execute a groovy script

...

to see the result. This will let you write and try your groovy scripts faster. Please keep in mind that scripts will be actually executed, if you modify anything please use test objects (issue, asset, etc.)!

Groovy examples for Asset Attribute Types

Attribute Type

Description

Groovy example

Cascading Dropdown

The value must be cascading dropdown option ids. Add "-" between options. 

return

...

"1-2"
return

...

"1-2-3-4"

CheckboxList

Return valid option values wrapped with three @ characters. i.e: @@@ada@@@@@@ist@@@

For a single option value no need to wrap with @ characters.

return

...

"ada@@@@@@ist"

DatePicker

Result must be in ISO format ("yyyy-MM-dd"), i.e: "2018-12-26".

You do not need to do formatting if you use LocalDateTime class as it returns in ISO format by default.

import

...

java.time.*

...

...

LocalDateTime

...

t

...

=

...

LocalDateTime.now();

...

...

return

...

(t

...

as

...

String)

...

DateTimePicker

Result must be in ISO format ("yyyy-MM-ddTHH:mm"), i.e: "2018-12-26T20:20".

You do not need to do formatting if you use LocalDateTime class as it returns in ISO format by default. If you need to format a date to string, use the format as: "yyyy-MM-dd'T'HH:mm" (Please notice extra single quotes!)

import

...

java.time.*

...

...

LocalDateTime

...

t

...

=

...

LocalDateTime.now();

...

return

...

(t

...

as

...

String)

...

DropdownList

Return a valid option value.

return

...

"ada"

Encrypted

The value must be text.

return

...

"password123"

InventoryList

Return reference asset ID

return

...

"3"

InventoryListByForm

Return reference asset ID

return

...

"10"

IP

Any text is possible, there is no format control.

return

...

 "10.0.0.2"

IPv6

Any text is possible, there is no format control.

return

...

"2001:0db8:85a3:0000:0000:8a2e:0370:7334"

Jira Organizations

The value must be one of Jira Organization ids. If there are multiple values, you must add "@@@@@@" between them.

(Here

...

...

"1"

return

...

"1@@@@@@2"

Jira Project

The value must be one of Jira Project Ids. If there are multiple values, you must add "@@@@@@" between them.

(Here

...

...

"10000"

return

...

"10000@@@@@@10001"

Jira Project Components

The value must be one of "Jira Project Id - Jira Project Component Id". If there are multiple values, you must add "@@@@@@" between them.

(Here

...

...

"10000-1"

return

...

"10000-1@@@@@@100001-2"

Jira Project Versions

The value must be one of "Jira Project Id - Jira Project Version Id". If there are multiple values, you must add "@@@@@@" between them.

(Here

...

...

"10000-1"

return

...

"10000-1@@@@@@100001-2"

Jira User Picker

The value must be a username. It doesn't need to be a Jira User.

return

...

"tyler-durden"

RadioButtonList

Return a valid option value.

return

...

"ist"

Text

Any text is possible.

return issue.summary

TextArea

Any text is possible.

return

...

issue.description

URL

Any text is possible, there is no format control.

return

...

"http://www.snapbytes.com/"

UserPicker

Any text is possible, there is no control. You may use issue.reporter.username or issue.assignee.username

return

...

issue.reporter.username