private void swapRoleInWorkflows(final ProjectRole role, final ProjectRole swapRole) { ErrorCollection errorCollection = new SimpleErrorCollection(); MultiMap associatedWorkflows = getAssociatedWorkflows(role, errorCollection); String moduleKey = "com.atlassian.jira.plugin.system.workflow:isuserinprojectrole-condition"; String className = "com.atlassian.jira.workflow.condition.InProjectRoleCondition"; for (Object o : associatedWorkflows.keySet()) { if(!(associatedWorkflows.get(o) instanceof Collection)) { throw new IllegalStateException("Associated workflows returned an unexpected map"); } for (ActionDescriptor actionDescriptor: (Collection<ActionDescriptor>)associatedWorkflows.get(o)) { JiraWorkflow jiraWorkflow = (JiraWorkflow) o; //JiraWorkflow clone = workflowManager.getWorkflowClone(jiraWorkflow.getName()); workflowManager.replaceConditionInTransition( actionDescriptor, ImmutableMap.of("jira.projectrole.id", role.getId().toString(), "class.name", className), ImmutableMap.of("jira.projectrole.id", swapRole.getId().toString())); workflowManager.saveWorkflowWithoutAudit(jiraWorkflow); } } }
public void doUpgrade() throws FishEyeUpgradeException { for (Iterator workflows = workflowManager.getWorkflows().iterator(); workflows.hasNext();) { JiraWorkflow workflow = (JiraWorkflow) workflows.next(); if (shouldUpgradeWorkflow(workflow)) { try { workflowManager.saveWorkflowWithoutAudit(workflow); } catch (WorkflowException e) { logError("Exception encountered when attempting to storing updated workflow " + workflow.getName(), e); } } //upgrade the draft workflow as well, if one exists JiraWorkflow draft = workflowManager.getDraftWorkflow(workflow.getName()); if (draft != null) { if (shouldUpgradeWorkflow(draft)) { try { workflowManager.saveWorkflowWithoutAudit(draft); } catch (WorkflowException e) { logError("Exception encountered when attempting to storing updated draft workflow " + draft.getName(), e); } } } } properties.setBoolean(getUpgradeString(), true); }
@Override public void doUpgrade(boolean setupMode) throws Exception { DescriptorFactory descriptorFactory = DescriptorFactory.getFactory(); WorkflowManager workflowManager = ComponentAccessor.getComponentOfType(WorkflowManager.class); for (JiraWorkflow workflow : workflowManager.getWorkflows()) { if (workflow instanceof ConfigurableJiraWorkflow) { ConfigurableJiraWorkflow mutableWorkflow = (ConfigurableJiraWorkflow) workflow; try { Element upgradedDescriptor = upgradeDescriptor(mutableWorkflow.getDescriptor().asXML()); WorkflowDescriptor workflowDescriptor = descriptorFactory.createWorkflowDescriptor(upgradedDescriptor); mutableWorkflow.setDescriptor(workflowDescriptor); workflowManager.saveWorkflowWithoutAudit(mutableWorkflow); log.debug("Upgraded workflow '{}'", mutableWorkflow.getName()); } catch (Exception e) { throw new RuntimeException("Failed to upgrade workflow: " + workflow.getName(), e); } } } }
workflowManager.saveWorkflowWithoutAudit(workflow);