Check if all levels are filled in

If you set a Multi-Level Cascading Select field as mandatory in the Field Configuration Scheme, JIRA will only check if the first level is filled in.

To check if all levels are filled in, you can use the following scripts.

For JIRA 7.x

import org.apache.log4j.Logger
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.opensymphony.workflow.InvalidInputException;
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
//10003 is the ID of the MLCS custom field
CustomField mlcs = customFieldManager.getCustomFieldObject(new Long('11167'))
// log.info("DEBUG MESSAGE: mlcs = $mlcs")
def mlcsValues = issue.getCustomFieldValue(mlcs)
// log.info("DEBUG MESSAGE: mlcsValues = $mlcsValues")
def levels = 0
if (mlcsValues != null){
    mlcsValues.each { i ->
            if (! i.toString().startsWith("com.sourcesense.jira.plugin.customfield.option.SpecialOptionFactory")){
                levels++
            }
    }
}
// Validate the MLCS field has at least 2 levels populated and throw an exception if not
if (levels < 2){
    InvalidInputException iie = new InvalidInputException("PLEASE NOTE: At least 2 drop-downs are required for " + mlcs)
    log.info("PLEASE NOTE: At least 2 drop-downs are required for " + mlcs)
    throw iie
}

For JIRA 6.x

import org.apache.log4j.Logger
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.customfields.manager.OptionsManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.customfields.option.Option;
import com.atlassian.jira.issue.Issue;
import com.google.common.collect.Lists;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.security.JiraAuthenticationContext;
import java.util.ArrayList;
import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.event.type.EventDispatchOption;
import com.opensymphony.workflow.InvalidInputException;
 
def log = Logger.getInstance("com.onresolve.jira.groovy.PostFunction")
 
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
//10003 is the ID of the MLCS custom field
CustomField mlcs = customFieldManager.getCustomFieldObject("customfield_10003")
ArrayList<String> mlcsValues = (ArrayList<String>) issue.getCustomFieldValue(mlcs)
 
if (mlcsValues != null) {
 
    String[] mlcsValuesList = mlcsValues.toArray()
    // If the MLCS field has 3 levels...
    if (mlcsValuesList.length != 3){
            InvalidInputException iie = new InvalidInputException("Please  fill in all levels" + mlcs)
            log.info("Please fill in all levels " + mlcs)
            throw iie
    }
}
Contatta il nostro Team! Contattaci senza impegno per richiedere maggiori informazioni sui prodotti e servizi, ti ricontatteremo nel più breve tempo possibile.
 I dati che ci fornirai saranno trattati nel rispetto della tua privacy, e non verranno per alcun motivo ceduti a terzi.
Messaggio inviato correttamente.