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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.