Copy Value From Field to Field Function Groovy Condition

alexlwilson August 25, 2016

I'm using the Copy Value From Field to Field Function Post-Function, but am struggling to figure out the condition portion. Basically, I don't want it to execute the post-function unless a custom field "Reorder Type" contains the string value of "Replace Empty".


What would the Groovy expression be?

1 answer

1 accepted

1 vote
Answer accepted
Jonny Carter
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 25, 2016

Many of the conditions for post functions have some handy-dandy variables injected into the binding. I don't see a post function with the name you used, but it might be as simple as:

cfValues['Reorder Type']?.value == 'Replace Empty'

If the Condition blank has a little question mark next to it, click that to see what's available in the binding.

 

In a more general case (outside Post Functions and such like), you could use the CustomFieldMananger to determine the value of the field. Something like

import com.atlassian.jira.component.ComponentAccessor

def customFieldMananger = ComponentAccessor.getCustomFieldManager()
def field = customFieldMananger.getCustomFieldObjectByName("Reorder Type")
def reorderTypeValue = issue.getCustomFieldValue(field)
reorderTypeValue == "Replace Empty"

Notably, that assumes the the Reorder Type field is a simple plain text input. For select lists and other more complex input types, you may need to bust out the OptionsManager as well. See https://scriptrunner.adaptavist.com/latest/jira/recipes/behaviours/select-list-other.html for an example of using the optionsManager to get and set values in a select list.

alexlwilson August 26, 2016

This is what is displayed under the condition input field.

 

Type a Groovy expression that returns true if the post-function should run. 
You can use the following variables in your Groovy script:

  • issue: a simple wrapper around the Issue object. Use issue.get("<fieldname>") to get the value of a field
  • issueObject: the Issue object itself
  • log: a Logger instance that writes into atlassian-jira.log (useful for debugging)
Jonny Carter
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 26, 2016

Got it. In that case, you'll want to go the more general route and use the ComponentAccessor and CustomFieldMananger classes to interact with the data. Instead of the issue.getCustomFieldValue() method that I used, you might could just use issue.get("Reorder Type"), assuming that covers custom fields. I suspect this is just an older version of ScriptRunner with some slightly different conveniences.

alexlwilson August 26, 2016

Thanks for the help! That worked!

issue.get("Reorder Type") == "Replace Empty"
JamieA
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
August 28, 2016

This workflow function is actually from the JMWE plugin.

Suggest an answer

Log in or Sign up to answer