Skip to end of banner
Go to start of banner

Working with Insight object's attributes using JMWE (Server/DC) and Groovy

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

\uD83E\uDD14 Problem

Customers might need to pull a specific Insight's object attribute info. While the issue.get("<customfield_id>")?.first()?.getInsightAttributeValue("<attribute_name>") code snippet can help in some cases, if the custom field references another Insight object instead of a regular value, the id will be returned instead of the actual value.

Refer to the example below:

\uD83C\uDF31 Solution

  1. Use Groovy and the Insight-related classes to explore and drill down into an Insight field object attributes:

    def objectFacade = getComponent(com.riadalabs.jira.plugins.insight.channel.external.api.facade.ObjectFacade.class)
    def objId = issue.get("<custom_insight_field_id>").first().getInsightAttributeValue("<object_attribute>")
    objectFacade.loadObjectBean(objId)?.name
  2. As you can see in the below recording, we have managed to get the “Server Owner” attribute value (not just the id shown in this article's Problem section), even when it references another Insight object.

The code snippet provided earlier can vary depending on the Insight object attribute type. For example, if we multiple values for an “Approvers” Insight object attribute that refers to a User’s property type from another Insight object (refer to the captures below), then the code snippet will look as follows:

def objectFacade = getComponent(com.riadalabs.jira.plugins.insight.channel.external.api.facade.ObjectFacade.class)
def objId = issue.get("<custom_insight_field_id>").first().getInsightAttributeValue("<object_main_attribute>")
def names_str = ""

for (i in objId) {
  def jiraUsrId = objectFacade.loadObjectBean(i).getInsightAttributeValue("<object_main_attribute>")
  names_str = names_str + ComponentAccessor.getUserManager().getUserByKey(jiraUsrId).displayName + " "
  i++
}
return names_str.trim()
  • No labels