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.
Online 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.