@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); } } } }
@RequiresXsrfCheck public String doAddWorkflow() throws Exception { if (!WorkflowUtil.isAcceptableName(newWorkflowName,"newWorkflowName",this)) { return INPUT; } else if (workflowManager.workflowExists(newWorkflowName)) { addError("newWorkflowName", getText("admin.errors.a.workflow.with.this.name.already.exists")); } if (invalidInput()) { return INPUT; } ConfigurableJiraWorkflow newWorkflow = new ConfigurableJiraWorkflow(newWorkflowName, workflowManager); newWorkflow.setDescription(description); workflowManager.createWorkflow(getLoggedInUser(), newWorkflow); UrlBuilder builder = new UrlBuilder("EditWorkflowDispatcher.jspa") .addParameter("wfName", newWorkflow.getName()) .addParameter("atl_token", getXsrfToken()); return returnCompleteWithInlineRedirect(builder.asUrlString()); }