I found myself needing to examine issues that came through our Jira Service Desk workflow, to determine if they had a form attached. If they didn’t have a form attached, i.e. someone created the issue manually instead of through the Service Desk Portal, the workflow would be instructed to handle them in a certain way.
This turned out to be surprisingly difficult. There’s no easily accessed attribute associated with issues in Jira that indicates whether or not they have a form attached.
In the end, I determined that it was possible to examine issues in this way by applying some JQL to them.
import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.jira.bc.issue.search.SearchService
def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
def issueManager = ComponentAccessor.getIssueManager()
def searchService = ComponentLocator.getComponent(SearchService)
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def issue = issueManager.getIssueObject("<issue key>")
//Define an issue against which the script will be run
def queryParser = ComponentAccessor.getComponent(JqlQueryParser)
def query = queryParser.parseQuery('issueFormsVersion > 1 and key = '+ issue.key)
//Define the query parameters
def search = searchService.search(user, query, PagerFilter.getUnlimitedFilter())
//This gives us a list of issues that match the query
if(search.results.size() > 0){
//Do something here
//If any results were found, it means that the issue had a form attached
}
The above script is pretty simple. The JQL attribute issueFormsVersion allows us to detect if an issue has a form with any version associated with it. It currently runs against a single predefined issue key, but this could easily be expanded.
You could approach this in any number of ways. This script basically asks the system “is there an issue with the current issue’s key, and does it have a form with any version number?” If the answer to both is yes, then our current issue must have a form attached to it.
Leave a Reply