Hello people ,
I have a problem with my new script. How it works. In our project we have 2 single-choice fields (Urgency, Impact) and this script depending on their values sets priority of ticket. Problem is that...it doesn't change priority . Can somebody look into it and tell me where i made a mistake please?
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.fields.CustomField import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.config.PriorityManager import com.atlassian.jira.issue.priority.Priority import com.atlassian.jira.config.ConstantsManager import org.ofbiz.core.entity.GenericValue MutableIssue currentIssue = issue def customFieldManager = ComponentAccessor.getCustomFieldManager() def urgency = customFieldManager.getCustomFieldObjectByName("Urgency") def impact = customFieldManager.getCustomFieldObjectByName("Impact") def uValue = urgency.getValue(currentIssue).toString() def iValue = impact.getValue(currentIssue).toString() int uNumb, iNumb switch (uValue) { case "Cannot Work": uNumb = 1 break; case "Obstruction of Work": uNumb = 2 break; case "Functionality Problem": uNumb = 3 break; default: System.out.println(); } switch (iValue) { case "Company Wide": iNumb = 1 break; case "More then one project": iNumb = 2 break; case "Single project": iNumb = 3 break; case "Individual": iNumb = 4 break; default: System.out.println(); } int pValue = iNumb + uNumb def priority = " " if(pValue >= 1 && pValue <= 2) priority = "Critical" else if(pValue >= 3 && pValue <= 4) priority = "Major" else if(pValue >= 6 && pValue <=8) priority = "Normal" else priority = "Minor" def cm = ComponentAccessor.getConstantsManager() def priorities = cm.getPriorities() priorities.each { prio -> if(prio.name == priority) currentIssue.setPriorityObject(prio) }
It is set into postfunctions on initial "Create" transition as last one of them, and it shows there is no failures.
Thanks in advance,
Cheers,
Maciej O.
An build-in postfucntion "Save to DB" should be added on create transiton after custom script.
I also refactored your code
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.CustomFieldManager import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.priority.Priority MutableIssue currentIssue = issue CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager() int num; switch (customFieldManager.getCustomFieldObjectByName("Urgency").getValue(currentIssue).toString()) { case "Cannot Work": num = 1; break; case "Obstruction of Work": num = 2 break; case "Functionality Problem": num = 3 break; default: System.out.println(); } switch (customFieldManager.getCustomFieldObjectByName("Impact").getValue(currentIssue).toString()) { case "Company Wide": num += 1 break; case "More then one project": num += 2 break; case "Single project": num += 3 break; case "Individual": num += 4 break; default: System.out.println(); } String priority; switch (num){ case 1: case 2: priority = "Critical"; break; case 3: case 4: priority = "Major"; break; case 6: case 7: case 8: priority = "Normal"; break; default: priority = "Minor" } for(Priority priority1: ComponentAccessor.getConstantsManager().getPriorityObjects()){ if(priority1.getName().equals(priority)){ currentIssue.setPriorityObject(issue) break; } }
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
i guess it hast to be
"currentIssue.setPriorityObject(priority)"
and not
"currentIssue.setPriorityObject(issue)".
However, this is only a guess and it isn't working for me either.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For me works:
currentIssue.setPriorityId(ComponentAccessor.getConstantsManager().getPriorities().find{it.getName().equals("Name of the priority")}.getId());
// Update Issue
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
ComponentAccessor.getIssueManager().updateIssue(user, issue, EventDispatchOption.ISSUE_UPDATED, false)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Atlassian Government Cloud has achieved FedRAMP Authorization at the Moderate level! Join our webinar to learn how you can accelerate mission success and move work forward faster in cloud, all while ensuring your critical data is secure.
Register NowOnline forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.