Modify Jira Workflow condition "No Open Reviews" maybe using scriptRunner?

I have Jira 5.2.11 integrated with Crucible 3.0.3 but I want to enforce the process that a Jira workflow transition will not be available unless there is at least one review associated/linked with the Jira issues and all linked reviews must be closed. I know about the two builtin conditions:

1/ "No Open Reviews" condition but the condition won't failed if no reviews are linked to the Jira issue.

2/ "Unreviewed Code" condition doesn't help because I allow for patch files to be used not just changesets.

I'm familiar with writing groovy scripts with scriptRunner so I just wanted to find the original Atlassian source code for this condition. I downloaded the 5.2.11 source zip file from MyAtlassian account but had no luck finding(greping) the source code.

A // Does that source zip contain all the source or do I download other associated zip files?

B // If someone else has a similar groovy script that can extract the reviews associated with a jira issue then that would be great.

Thanks Brent

1 answer

1 accepted

My solution as a workflow validator:

// Validator will check that at least one review is associated with this issue
// and all this issue's associated reviews must be closed.
import com.atlassian.jira.ComponentManager;
import com.atlassian.plugin.PluginAccessor

ComponentManager componentManager = ComponentManager.getInstance();
PluginAccessor pluginAccessor = componentManager.getPluginAccessor();
Class reviewManagerClass = pluginAccessor.getClassLoader().findClass("com.atlassian.jirafisheyeplugin.domain.crucible.ReviewManager");
Class reviewListClass = pluginAccessor.getClassLoader().findClass("com.atlassian.jirafisheyeplugin.domain.crucible.ReviewList");
Class reviewClass = pluginAccessor.getClassLoader().findClass("com.atlassian.jirafisheyeplugin.domain.crucible.Review");

def reviewManager = componentManager.getOSGiComponentInstanceOfType(reviewManagerClass);
def list = reviewManager.getReviewsForIssue(issue);
if (list.hasErrors()) {
  log.error("<<BW>> Error retrieving reviews for ReviewsCompleteCondition (" + issue.getKey() + ").");
  return false;
} else if ( list.getReviews().isEmpty() ) {
  return false;
} else {
  for (def review : list.getReviews()) {
    if (review.isOpen()) {
      // all reviews must be closed
      return false;
    }
  }
}
return true;

This solution doesn't work with JIRA 7. (No JiraFisheye plugin)

Do you have any solution that would work with the JIRA Development Integration plugin? Thanks!

Suggest an answer

Log in or Sign up to answer
How to earn badges on the Atlassian Community

How to earn badges on the Atlassian Community

Badges are a great way to show off community activity, whether you’re a newbie or a Champion.

Learn more
Community showcase
Published Thursday in Jira

Meet the AUG leaders of Northern Virginia

@Rachel Wright (Jira Genie), @Billy Poggi (AUG NOVA, DC), and @Dana Jansen (Confluence Queen) are just some of the folks that lead one of the world's most active Atlassian User Group (AUG)....

136 views 5 9
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you