Hi,
I have a scenario
test1= t1,t2,t3
values= V1, V2, V3
when i edit a custom field "Impact and Urgency" (cascading select) (Example: t1, V2), priority should be calculated automatically become High after clicking update and i am using script runner
I am bit confused which function to use- listeners (issue updated), behaviour, post functions or condition
Kindly advice
Thanks
Swarna
Hi Nic,
The script below shows no error but when i update the custom field, the priority remains the same. I cannot figure what is not working
Code:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.PriorityManager
import com.atlassian.jira.issue.priority.Priority
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.customfields.option.Options
import com.atlassian.jira.issue.fields.config.FieldConfig
MutableIssue mutableIssue = (MutableIssue) issue;
def priorityManager = ComponentAccessor.getComponent(PriorityManager)
def optionsManager = ComponentAccessor.getOptionsManager()
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
CustomField cf = customFieldManager.getCustomFieldObjectByName("Impact and Urgency")
FieldConfig config = cf.getRelevantConfig(issue)
def options = optionsManager.getOptions(config)
def parentOption = options.find {it.value == "test"}
def childOption = parentOption?.childOptions?.find{it.value == "value 1"}
if (parentOption && childOption)
{
mutableIssue.setPriorityId("1") }
else{
mutableIssue.setPriorityId("2")
}
Thanks
Swarna
I think you need to tell Jira to update the issue. Try this at the end
issueManager.updateIssue(user, mutableissue, EventDispatchOption.DO_NOT_DISPATCH,
false
)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Nic,
I am getting error when i add the line issueManager.updateIssue(user, mutableissue, EventDispatchOption.DO_NOT_DISPATCH, false).
I have already defined issue manager and issue but i don't have codes for user
Code:
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType
import org.apache.log4j.Category
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.PriorityManager
import com.atlassian.jira.issue.priority.Priority
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.customfields.option.LazyLoadedOption
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.customfields.option.Options
import com.atlassian.jira.issue.fields.config.FieldConfig
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.ComponentManager
log.setLevel(org.apache.log4j.Level.DEBUG)
def issueManager = ComponentAccessor.getIssueManager()
MutableIssue issue = event.issue as MutableIssue
def priorityManager = ComponentAccessor.getComponent(PriorityManager)
def optionsManager = ComponentAccessor.getOptionsManager()
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
//CustomField cf = customFieldManager.getCustomFieldObjectByName("Impact and Urgency")
//CustomField cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Impact and Urgency" )
def field = customFieldManager.getCustomFieldObjectByName("Impact and Urgency")
Object cfVal = issue.getCustomFieldValue(field)
HashMap<String, Option> hashMapEntries = (HashMap<String, Option>) cfVal
if (hashMapEntries != null) {
Option parent = hashMapEntries.get(CascadingSelectCFType.PARENT_KEY)
Option child = hashMapEntries.get(CascadingSelectCFType.CHILD_KEY)
def first = parent.toString()
def second = child.toString()
log.debug("Cascading values selected: $first - $second")
if (first== "test Ltd/test Group" && second=="Core Services")
{
log.debug("RentrE")
issue.setPriorityId("P1 - Very High")
log.debug("funi " )
//
}
//def wer= mutableIssue.getPriority()
//return log.debug("$wer")
}
issueManager.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Nic,
I have managed to solve the issue. The coding is working...
Thanks :)
Swarna
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Swarna Radha , Could pease post working code here and where did you implemented the code like.. Behaviour or Post function?
Thanks
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It depends on what you want from it.
A condition stops a user using a transition. I can't really see that being of much help here unless you're expecting them to take a guess at the right value and manually set it correctly before then hitting the transition buttons
A behaviour would be able to calculate a value for the field and set it, but let the user overwrite it
A post-function could calculate the value and set it whenever the user creates or transitions an issue
A listener can do the same as a post-function, but can also pick up when the issue is edited.
Another possibility could be a scripted field that means the user would have no way to change the value, but would always be calculated on any issue change
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Nic,
I have used a listener- Issue Updated. Do i need to add the listener in the workflow?
Please find the code below:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.PriorityManager
import com.atlassian.jira.issue.priority.Priority
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.customfields.option.Options
import com.atlassian.jira.issue.fields.config.FieldConfig
MutableIssue mutableIssue = (MutableIssue) issue;
def priorityManager = ComponentAccessor.getComponent(PriorityManager)
def optionsManager = ComponentAccessor.getOptionsManager()
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
CustomField cf = customFieldManager.getCustomFieldObjectByName("Impact and Urgency")
FieldConfig config = cf.getRelevantConfig(issue)
//def config = cf.getRelevantConfig(getIssueContext())// getting error on this line
def options = optionsManager.getOptions(config)// getting error on this line
def parentOption = options.find {it.value == "t1"}
// getting error on this line
def childOption = parentOption?.childOptions?.find{it.value == "V2}
// getting error on this line
if (parentOption){
if (childOption){
mutableIssue.setPriorityId("1") }
}
else{
mutableIssue.setPriorityId("2")
}
The code is not working
Thanks Swarna
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Nic,
I have used a listener- Issue Updated but my script is not working. Do i need to add the listener to workflow transition??
Please see below my codes:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.PriorityManager
import com.atlassian.jira.issue.priority.Priority
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.customfields.view.CustomFieldParams
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.customfields.option.Options
import com.atlassian.jira.issue.fields.config.FieldConfig
MutableIssue mutableIssue = (MutableIssue) issue;
def priorityManager = ComponentAccessor.getComponent(PriorityManager)
def optionsManager = ComponentAccessor.getOptionsManager()
CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()
CustomField cf = customFieldManager.getCustomFieldObjectByName("Impact and Urgency")
FieldConfig config = cf.getRelevantConfig(issue)
//def config = cf.getRelevantConfig(getIssueContext())// getting error on this line
def options = optionsManager.getOptions(config)// getting error on this line
def parentOption = options.find {it.value == "Test1"}
// getting error on this line
def childOption = parentOption?.childOptions?.find{it.value == "V2"}
// getting error on this line
if (parentOption){
if (childOption){
mutableIssue.setPriorityId("1") }
}
else{
mutableIssue.setPriorityId("2")
}
Thanks
Swarna
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I can't quite make out how your code might be working - it looks like you've got duplicate lines and I'm not sure what is commented out and what isn't working. The error messages would be helpful too.
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.