We are adding a for loop in a Behavior to collect the option IDs of a multi-select field.
On Script Console, the for loop works -- it gathers the option IDs and puts it in a list.
However, when added to a Behavior, the for loop breaks the entire behavior. Dx
Has anyone had success with a for loop on Behaviors? For reference here is our behavior:
import com.atlassian.jira.issue.IssueManagerimport com.atlassian.jira.component.ComponentAccessorimport com.atlassian.jira.jql.parser.JqlQueryParserimport com.atlassian.jira.issue.search.SearchProviderimport static org.apache.commons.collections.CollectionUtils.*final productLine = "Product Line(s)"if (getBehaviourContextId() == "create-epic-button") {//TestinggetFieldByName("Summary").setFormValue("Testing")// Get some componentsdef jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)def searchProvider = ComponentAccessor.getComponent(SearchProvider)def issueManager = ComponentAccessor.issueManagerdef user = ComponentAccessor.jiraAuthenticationContext.loggedInUserdef optManager = ComponentAccessor.getOptionsManager()//Parent Linkdef parentLink = getFieldByName("Parent Link")def parentLinkValue = parentLink.getValue()def contextIssue = issueManager.getIssueObject(getContextIssueId())parentLink.setFormValue("${contextIssue.key}")//Product Linedef productLineName = ComponentAccessor.customFieldManager.customFieldObjects.findByName(productLine) //Get Objectsdef productLineList = getFieldByName(productLine).getValue() as List //Get Values as Listlog.warn("Product Line List: $productLineList")//Get Product Line Field Configdef productLineConfig = productLineName.getRelevantConfig(contextIssue)log.warn("Product Line Field Configuration: $productLineConfig")//Get Product Line Field Value Optionsdef productLineOptions = optManager.getOptions(productLineConfig)log.warn("Product Line Options: $productLineOptions")def targetValues = []for (i in productLineList) {log.warn "processing $contextIssue value = $i"//Convert i to a string and define it in a variabledef newVal = i.toString()//Get Product Line Option IDdef productLineOptionID = productLineOptions. find { it.value == newVal }log.warn("Product Line Option ID: $productLineOptionID")//Add to targetValues ListtargetValues += productLineOptionID.optionIdlog.warn("Product Line Target Values: $targetValues")getFieldByName("Product Line(s)").setDescription("Woooorrkkkkk")}} else {}
There is no reason for a for-loop to break anything.
But how does the for-loop break your behaviour?
What errors are you getting?
What gets outputted to your log?
Hi Peter just validated that in fact you can use for loops in behaviors!
When I was trying to grab the product line field I wasn't referencing the originated issue, but rather the destination issue. Corrected the below:
def productLineValue = contextIssue.getCustomFieldValue("Product Line(s)") as List
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.