Hi all,
There are two customized workflows defined at the moment. There is a postFunction defined for each of the workflows separately. But, there is a scenario when the transition can happen from one state of workflow1 to another state of workflow2. We cannot set a postfunction for such a transition, but it should happen such that on this particular transition the resolution has to be set to "None". I have to do this in the code itself. Right now am trying with some groovy scripts but it seem not to work, can anyone help me on this scenario.
I had the following groovy which is not serving the purpose. Could anyone please help me?
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.project.Project;
import com.atlassian.jira.project.ProjectManager;
import com.atlassian.jira.issue.issuetype.IssueType;
import com.atlassian.jira.workflow.JiraWorkflow;
import com.atlassian.jira.component.ComponentAccessor;
import com.opensymphony.workflow.loader.ActionDescriptor;
import com.opensymphony.workflow.loader.FunctionDescriptor;
import webwork.dispatcher.ActionResult;
import com.atlassian.core.util.map.EasyMap;
import com.atlassian.core.ofbiz.CoreFactory;
import com.atlassian.jira.ComponentManager;
IssueManager issueManager = ComponentAccessor.getIssueManager();
MutableIssue targetIssue = issueManager.getIssueObject("ALM-1696");
ProjectManager projectManager =ComponentAccessor.getProjectManager();
String tartgetProject=targetIssue.getProjectObject().getKey();
Project targetProject = projectManager.getProjectObjByKey(tartgetProject);
IssueType issueTypeObject=null;
def issueType = "Bug"
def Status = "Code/Hardware Bug (Response/Resolution)"
Collection<IssueType> issueTypes= ComponentAccessor.getIssueTypeSchemeManager().getIssueTypesForProject(targetProject);
Iterator itr=issueTypes.iterator();
// ComponentManager componentManager = ComponentManager.getInstance()
// User remoteUser = componentManager.getJiraAuthenticationContext().getUser()
while(itr.hasNext()){
IssueType projectIssueType=(IssueType)itr.next();
if(issueType.equals(projectIssueType.getName()))
{issueTypeObject=projectIssueType;
break;}
}
JiraWorkflow workflow=ComponentAccessor.getWorkflowManager().getWorkflow(targetProject.getId(), issueTypeObject.getId());
Collection<ActionDescriptor> actions = workflow.getAllActions();
authenticationContext =ComponentAccessor.getJiraAuthenticationContext()
for (final ActionDescriptor actionDescriptor : actions)
{
if (actionDescriptor.getName().contains(Status))
{
targetIssue.setResolution(null);
// targetIssue.store();
// targetIssue.update(ComponentAccessor.getUserManager().getUserObject("some email id"),targetIssue, null,false)
Map actionParams = EasyMap.build("issue", targetIssue.getGenericValue(), "issueObject", targetIssue, "remoteUser", ComponentAccessor.getUserManager().getUserObject("some email id"), "dispatchEvent", Boolean.FALSE);
ActionResult aResult = CoreFactory.getActionDispatcher().execute(ActionNames.ISSUE_UPDATE, actionParams);
}
}
Thanks,
Hemanth
Use IssueTransition validateTransition and transition methods. You can set the resolution in IssueInputParameters.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If you search for samples in this forum or in google, you will find quite a few ;)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I don't know why I typed that comment :P Was too lazy I guess to search. Got it thanks. :)
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.