public ConfigurableJiraWorkflow(final String name, final WorkflowManager workflowManager) { super(workflowManager, new WorkflowDescriptor()); this.name = name; // create the initial step - useful to have one of these :) final StepDescriptor step = DescriptorFactory.getFactory().createStepDescriptor(); step.setId(1); step.setName("Open"); step.getMetaAttributes().put(JiraWorkflow.STEP_STATUS_KEY, "1"); step.setParent(descriptor); descriptor.addStep(step); // create the initial action final ActionDescriptor initialAction = DescriptorFactory.getFactory().createActionDescriptor(); initialAction.setId(1); initialAction.setName("Create"); initialAction.setParent(descriptor); descriptor.addInitialAction(initialAction); // add create issue permission validator initialAction.getValidators().add(PermissionValidator.makeDescriptor("Create Issue")); // setup result to always be step 1 final ResultDescriptor resultDescriptor = DescriptorFactory.getFactory().createResultDescriptor(); resultDescriptor.setStep(1); resultDescriptor.setStatus("open"); initialAction.setUnconditionalResult(resultDescriptor); // setup post functions resultDescriptor.getPostFunctions().add(IssueCreateFunction.makeDescriptor()); resultDescriptor.getPostFunctions().add(IssueReindexFunction.makeDescriptor()); resultDescriptor.getPostFunctions().add(FireIssueEventFunction.makeDescriptor(EventType.ISSUE_CREATED_ID)); }
@RequiresXsrfCheck protected String doExecute() throws Exception { // setup the transition action ActionDescriptor action = DescriptorFactory.getFactory().createActionDescriptor(); action.setId(getWorkflow().getNextActionId()); action.setName(getTransitionName()); action.getMetaAttributes().put(JiraWorkflow.WORKFLOW_DESCRIPTION_ATTRIBUTE, getDescription()); setActionScreen(action, stringSet(getView()) ? getFieldScreen() : null); // setup the result ResultDescriptor result = DescriptorFactory.getFactory().createResultDescriptor(); action.setUnconditionalResult(result); result.setStep(getDestinationStep()); result.setOldStatus("Not Done"); result.setStatus("Done"); initialiseTransition(action); action.setParent(getStep()); getStep().getActions().add(action); workflowService.updateWorkflow(getJiraServiceContext(), getWorkflow()); return getRedirect(getCancelUrl()); }