With Script Runner you can set up triggers to perform actions when issues have been Exalated. Let's assume we would like to trigger a sync back, once the issue has been exalated and modify our issue in some way. Let's say we would like a Mood custom field to be set to 'Happy' and a description of an issue to be 'Created from the Script Runner'. In order to achieve this one can easily configure a custom Script Listener to subscribe to the EXALATED Jira event.
To configure a Script Runner to subscribe to an EXALATED Jira event:
- Install a Script Runner plugin for Jira:
- After a successful installation navigate to the Script Listeners section of the Script Runner plugin:
- Pick Custom listener from the list. This takes you to the page where you can actually create your custom listener:
- Pick up the desired project from a dropdown list and choose a 'com.exalate.api.domain.trigger.EXALATED' event type from the list:
- Next step would be to write your custom listener script. It is written using Groovy language. Here's an example of such a script. The actual implementation can change depending on the JIRA version.
1 import com.atlassian.jira.event.issue.AbstractIssueEventListener 2 import com.atlassian.jira.event.issue.IssueEvent 3 import com.atlassian.jira.event.type.EventType 4 import com.atlassian.jira.event.type.EventTypeManager 5 import com.atlassian.jira.issue.Issue 6 7 import org.slf4j.Logger 8 import org.slf4j.LoggerFactory 9 10 class DefaultAccountListener extends AbstractIssueEventListener { 11 12 private final Logger LOG = LoggerFactory.getLogger(DefaultAccountListener) 13 14 private static final String EXALATED_EVENT_TYPE = "com.exalate.api.domain.trigger.EXALATED" 15 private static final String EXALATE_UPDATED_EVENT_TYPE = "com.exalate.api.domain.trigger.UPDATED" 16 17 @Override 18 void customEvent(IssueEvent event) { 19 Issue issue = event.issue 20 EventType eventType = eventTypeManager.getEventType(event.getEventTypeId()) 21 LOG.debug("Custom event caught for issue ${issue.key}: type [${eventType.type}], name [${eventType.name}], nameKey [${eventType.nameKey}]") 22 23 if (eventType.name.equalsIgnoreCase(EXALATED_EVENT_TYPE)) { 24 LOG.debug("EXALATED event caught for issue ${issue.key}") 25 } 26 } 27 }
- Save the listener, then navigate to an issue you'd like to Exalate and perform an Exalate operation:
- Now let's wait until the synchronization is performed (there is a lozenge on the right side which indicates the state of the synchronization):
- Once the issue has been Exalated, refresh the page and check whether the changes were applied:
We can see that the Mood has been changed to 'Happy' and that the description has changed as well.