This is an old revision of the document!
Following scripts can be used for scripted validators within the workflow
issue.projectObject.name == "My First Project Name"
if ( cfValues['FIELD1']?.value == 'Yes') { if ( cfValues['FIELD2'] ) { return true } else return false } else return true
Date today123 = new Date() if ( cfValues['FIELD1'] ) { if ( cfValues['DATEFIELD2'].getTime() > today123.getTime() ) { return true } else return false } else return true
def selectedSegment = cfValues['Segment'] def selectedSegmentString = selectedSegment.toString() if ( selectedSegmentString.equals("Some String") ){ // do something here }
import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.IssueManager; def customfield_ID = "customfield_11700" def issueManager = ComponentAccessor.getIssueManager() def customFieldManager = ComponentAccessor.getCustomFieldManager() def cField = customFieldManager.getCustomFieldObject(customfield_ID) def cFieldValue = issue.getCustomFieldValue(cField).toString() if (cFieldValue.size() != 5){ return false } else{ return true }
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.search.SearchProvider import com.atlassian.jira.jql.parser.JqlQueryParser import com.atlassian.jira.web.bean.PagerFilter import com.atlassian.jira.datetime.DateTimeFormatUtils import org.apache.commons.lang.time.DateUtils import java.text.SimpleDateFormat import java.util.Date.* import java.lang.String.* //logging import org.apache.log4j.Logger import org.apache.log4j.Level def log = Logger.getLogger("com.acme.CreateSubtask") log.setLevel(Level.DEBUG) // this function returns list of issues for JQL def findIssues(String jqlQuery) { def issueManager = ComponentAccessor.issueManager def user = ComponentAccessor.jiraAuthenticationContext.user def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser.class) def searchProvider = ComponentAccessor.getComponent(SearchProvider.class) def query = jqlQueryParser.parseQuery(jqlQuery) def results = searchProvider.search(query, user, PagerFilter.unlimitedFilter) results.issues.collect { issue -> issueManager.getIssueObject(issue.id) } } def customFieldManager = ComponentAccessor.getCustomFieldManager() def isd = cfValues['OD Start Date'] def ied = cfValues['OD End Date'] def ie = cfValues['OD Environment'] def inputStartDate def inputEndDate def inputEnvironment = ie.toString() def issues if (! isd || ! ied){ log.debug("Input Start date or Input End Date not available") }else{ inputStartDate = isd.format("YYYY-MM-dd").toString() inputEndDate = ied.format("YYYY-MM-dd").toString() issues = findIssues('project = ODRSRV AND "OD Environment" = '+ inputEnvironment +' AND (("OD Start Date" <= '+ inputStartDate +' AND "OD End Date" >= '+ inputEndDate +') OR ("OD Start Date" <= '+ inputEndDate +' AND "OD Start Date" >= '+ inputStartDate +') OR ("OD Start Date" >= '+ inputStartDate +' AND "OD End Date" <= '+ inputEndDate +') OR ("OD Start Date" <= '+ inputStartDate +' AND "OD End Date" >= '+ inputEndDate +'))' ) } log.debug("inputStartdate: "+inputStartDate) log.debug("inputEndDate: "+inputEndDate) log.debug("inputEnvironment: "+inputEnvironment) log.debug("issues: "+issues+" for "+inputEnvironment) if ( ! issues){ return true log.debug("Issues is " + issues) }else{ return false log.debug("Issues is " + issues) }
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import org.apache.log4j.Logger import org.apache.log4j.Level def log = Logger.getLogger("com.acme.CreateSubtask") log.setLevel(Level.DEBUG) Issue issue = issue def customFieldManager = ComponentAccessor.getCustomFieldManager() def issueManager = ComponentAccessor.getIssueManager() def customField = customFieldManager.getCustomFieldObjectByName("OD Environment") def originalIssue = issueManager.getIssueObject(issue.id) def originalValue = originalIssue.getCustomFieldValue(customField).toString() def newValue = issue.getCustomFieldValue(customField).toString() log.debug("originalIssue ${originalValue}") log.debug("newIssue ${newValue}") if (originalValue.equals("null") ){ if ( newValue != originalValue ) { log.debug("true -> User changed the field") return true }else{ log.debug("false -> User must changed field") return false } }else{ log.debug("true -> OD Environment is not null ${originalValue}") return true }
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import org.apache.log4j.Logger import org.apache.log4j.Level def log = Logger.getLogger("com.acme.CreateSubtask") log.setLevel(Level.DEBUG) Issue issue = issue def customFieldManager = ComponentAccessor.getCustomFieldManager() def issueManager = ComponentAccessor.getIssueManager() def customField = customFieldManager.getCustomFieldObjectByName("OD Environment") def originalIssue = issueManager.getIssueObject(issue.id) def originalValue = originalIssue.getCustomFieldValue(customField).toString() def newValue = issue.getCustomFieldValue(customField).toString() log.debug("originalIssue ${originalValue}") log.debug("newIssue ${newValue}") if ( newValue != originalValue ) { if (! originalValue.equals("null") ){ log.debug("false -> Changing from not None") return false }else{ log.debug("true -> changing from none") return true } }else{ log.debug("true -> not changing") return true }
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue def groupManager = ComponentAccessor.getGroupManager() (issue.projectObject.key == 'ABC' && issue.issueType.name == 'Bug' && currentUser.name in ["XYZ", "TEST"] ) || groupManager.isUserInGroup(currentUser, "JIRAGROUP")
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue def groupManager = ComponentAccessor.getGroupManager() groupManager.isUserInGroup(currentUser, "users")