import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import com.atlassian.sal.api.ApplicationProperties
import com.atlassian.sal.api.UrlMode
import com.atlassian.jira.component.ComponentAccessor;
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.customfields.option.Option;
import com.atlassian.jira.user.ApplicationUser;
import com.atlassian.jira.event.type.EventDispatchOption;
MutableIssue issue = event.getIssue() as MutableIssue;
def Approval = ComponentAccessor.getCustomFieldManager().getCustomFieldObject('customfield_');
log.debug(issue.status.name);
if(issue.status.name.equals("CFV") && issue.issueType.name.equals("Change Control Request")){
def cfType = Approval.getCustomFieldType();
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def checklistDoR = Approval.getValue(issue) as List
if(checklistDoR?.size()!=0){
if(isAllChecked(checklistDoR, issue)){
log.debug("All options are checked,Trying to make the transition to 'statusname'")
transitionToxyzstatus(issue);
}else{
log.debug("All options are not checked")
}
} else {
}
boolean isAllChecked(List checklistDoR, MutableIssue issue){
boolean flag=true;
for (checklistItem in checklistDoR) {
log.info checklistItem
log.info checklistItem.toString()
Boolean isChecked = invokeMethodByReflection(checklistItem, "isChecked")
if(!isChecked){
flag=false;
autoAssign(checklistItem,issue);
break;
}
}
return flag;
}
void transitionToxyx(MutableIssue issue){
def actionId = (define your status id);
def user = ComponentAccessor.getUserManager().getUserByName("RestUser");
def issueService = ComponentAccessor.getIssueService();
def issueInputParams = ComponentAccessor.issueService.newIssueInputParameters();
issueInputParams.setSkipScreenCheck(true);
def transitionValidationResult = issueService.validateTransition(user,issue.id,actionId,issueInputParams);
if(transitionValidationResult.isValid()){
def transitionResult = issueService.transition(user, transitionValidationResult);
if (!transitionResult.isValid()){
log.warn transitionResult.errorCollection.errorMessages;
}else{
log.debug("Transition Sucessfull")
}
} else {
log.warn transitionValidationResult.errorCollection.errorMessages;
}
}
void autoAssign(def checklistItem,MutableIssue issue){
if(event?.getChangeLog()?.getRelated("ChildChangeItem")?.find {it.field == 'CF name}){
String[] splits = checklistItem?.toString()?.split(' PM - ')
if(splits.length>1){
String dpm = splits[1];
List<ApplicationUser> consumingPMs = ComponentAccessor.issueManager.getWatchersFor(issue);
ApplicationUser nextAssignee = null;
for(pm in cpm){
if(pm.displayName.equals(dpm) && pm.id != issue.assignee.id){
nextAssignee = pm;
}
}
if(nextAssignee){
log.info "Next Assignee is:"+nextAssignee
issue.assignee = nextAssignee;
ComponentAccessor.issueManager.updateIssue(ComponentAccessor.getUserManager().getUserByName("RestUser"),issue,EventDispatchOption.DO_NOT_DISPATCH,false);
}
}
}
}
Object invokeMethodByReflection(Object object, String methodName) {
Method method;
try {
method = object.getClass().getMethod(methodName);
} catch (SecurityException e) {
// doSomething
} catch (NoSuchMethodException e) {
// doSomething
}
try {
return method.invoke(object);
} catch (IllegalArgumentException e) {
// doSomething
} catch (IllegalAccessException e) {
// doSomething
} catch (InvocationTargetException e) {
// doSomething
}
}
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.