public ActionDescriptor getAction(final int id) { return delegate.getAction(id); }
public StepDescriptor getStep(final int id) { return delegate.getStep(id); }
public boolean removeStep(final StepDescriptor stepDescriptor) { // Remove any transitions that end in this step if (!getActionsWithResult(stepDescriptor).isEmpty()) { throw new IllegalArgumentException("Cannot remove step - it is a destination step of at least one transition."); } return descriptor.getSteps().remove(stepDescriptor); }
private static StepDescriptor getInitialStepDescriptor(JiraWorkflow workflow) { List initialActions = workflow.getDescriptor().getInitialActions(); ActionDescriptor initialAction = (ActionDescriptor) initialActions.get(0); int initialStep = initialAction.getUnconditionalResult().getStep(); return workflow.getDescriptor().getStep(initialStep); }
private SortedMap<Integer, ActionDescriptor> getAllActionsMap() { final SortedMap<Integer, ActionDescriptor> actions = new TreeMap<Integer, ActionDescriptor>(); // Register all initial actions addActionsToMap(actions, descriptor.getInitialActions()); // Register all global actions addActionsToMap(actions, descriptor.getGlobalActions()); // Register all common actions actions.putAll(descriptor.getCommonActions()); // Register all normal actions final List steps = descriptor.getSteps(); for (final Object step : steps) { final StepDescriptor stepDescriptor = (StepDescriptor) step; for (final Object o : stepDescriptor.getActions()) { final ActionDescriptor actionDescriptor = (ActionDescriptor) o; // If the action id is already in the list - it is likely to be a common action :) // So no need to add it as it is already in the list if (!actions.containsKey(new Integer(actionDescriptor.getId()))) { actions.put(new Integer(actionDescriptor.getId()), actionDescriptor); } } } return actions; }
@Nonnull @Override public String getNextStatusIdForAction(@Nonnull final Issue issue, final int actionId) { JiraWorkflow workflow = getWorkflow(issue); if (workflow == null) { throw new IllegalStateException("There is no workflow for the issue with key " + issue.getKey()); } ActionDescriptor action = workflow.getDescriptor().getAction(actionId); if (action == null) { throw new IllegalStateException("There is no action descriptor for an action with id " + actionId); } int stepId = action.getUnconditionalResult().getStep(); if (stepId == JiraWorkflow.ACTION_ORIGIN_STEP_ID) { return issue.getStatusObject().getId(); } StepDescriptor step = workflow.getDescriptor().getStep(stepId); return workflow.getLinkedStatusId(step); }
StepDescriptor step = workflow.getDescriptor().getStep(Integer.parseInt(workflowStep)); final List globalActions = workflow.getDescriptor().getGlobalActions(); int globalActionId = Integer.parseInt(globalWorkflowTransition); for (final Object globalAction1 : globalActions) final List initialActions = workflow.getDescriptor().getInitialActions(); int initialActionId = Integer.parseInt(globalWorkflowTransition); for (final Object initialAction1 : initialActions)
List<StepDescriptor> existingSteps = getWorkflow().getDescriptor().getSteps(); for (StepDescriptor existingStep : existingSteps) newStep.setId(WorkflowUtil.getNextId(getWorkflow().getDescriptor().getSteps())); newStep.getMetaAttributes().put(JiraWorkflow.STEP_STATUS_KEY, getStepStatus()); getWorkflow().getDescriptor().addStep(newStep);
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)); }
public void writeXML(final PrintWriter out, final int indent) { delegate.writeXML(out, indent); }
final Integer actionId = (Integer) transientVars.get(ACTION_ID); final Issue originalIssue = (Issue) transientVars.get(ORIGINAL_ISSUE_OBJECT); final ActionDescriptor action = descriptor.getAction(actionId); final String firstStepName = (originalIssue == null) ? "" : originalIssue.getStatusObject().getName(); final String endStepName = descriptor.getStep(action.getUnconditionalResult().getStep()).getName(); final String actionName = action.getName(); final boolean notifyClients = Boolean.parseBoolean((String) args.get(HipChatPostFunctionFactory.NOTIFY_CLIENTS_PARAM));
actions.addAll(descriptor.getInitialActions()); actions.addAll(descriptor.getGlobalActions()); actions.addAll(descriptor.getCommonActions().values()); List<StepDescriptor> steps = descriptor.getSteps(); for (StepDescriptor step: steps)
private StepDescriptor getInitialStepDescriptor(JiraWorkflow workflow) { List initialActions = workflow.getDescriptor().getInitialActions(); ActionDescriptor initialAction = (ActionDescriptor) initialActions.get(0); int initialStep = initialAction.getUnconditionalResult().getStep(); return workflow.getDescriptor().getStep(initialStep); }
/** * Converts a {@link com.opensymphony.workflow.loader.WorkflowDescriptor} to XML. * * @param descriptor The {@link com.opensymphony.workflow.loader.WorkflowDescriptor} to convert * @return An XML representation of the workflowdescritpor passed in. */ public static String convertDescriptorToXML(final WorkflowDescriptor descriptor) { final StringWriter stringWriter = new StringWriter(); final PrintWriter writer = new PrintWriter(stringWriter); writer.println(WorkflowDescriptor.XML_HEADER); writer.println(WorkflowDescriptor.DOCTYPE_DECL); descriptor.writeXML(writer, 0); writer.flush(); writer.close(); return stringWriter.toString(); }
public StepDescriptor getDestinationStepDescriptor() { int targetStepId = resultDescriptor.getStep(); return getWorkflow().getDescriptor().getStep(targetStepId); }
ActionDescriptor getActionDescriptor(Issue issue, int actionId) { final JiraWorkflow workflow = workflowManager.getWorkflow(issue); if (workflow == null) { return null; } final WorkflowDescriptor descriptor = workflow.getDescriptor(); if (descriptor == null) { return null; } return descriptor.getAction(actionId); }
public Set<String> getLinkedStatusIds() { final Set<String> ids = new HashSet(); for (final Object o : descriptor.getSteps()) { final StepDescriptor stepDescriptor = (StepDescriptor) o; ids.add(getLinkedStatusId(stepDescriptor)); } return ImmutableSet.copyOf(ids); }
public StepDescriptor getStepDescriptor(ConditionalResultDescriptor conditionalResultDescriptor) { final int targetStepId = conditionalResultDescriptor.getStep(); return getWorkflow().getDescriptor().getStep(targetStepId); }
public Map<String, Object> toMap(Map transientVars, ApplicationUser user, MutableIssue issue) { final WorkflowEntry entry = (WorkflowEntry) transientVars.get(ENTRY); final ImmutableMap.Builder<String, Object> transition = ImmutableMap.builder(); final Integer actionId = (Integer) transientVars.get(ACTION_ID); final WorkflowDescriptor workflowDescriptor = (WorkflowDescriptor) transientVars.get(WORKFLOW_DESCRIPTOR); final ActionDescriptor actionDescriptor = workflowDescriptor.getAction(actionId); final Step createdStep = (Step) transientVars.get(CREATED_STEP); final WorkflowStore workflowStore = (WorkflowStore) transientVars.get(WORKFLOW_STORE); transition.put(WORKFLOW_ID, entry.getId()) .put(WORKFLOW_NAME, entry.getWorkflowName()) .put(TRANSITION_ID, actionId) .put(TRANSITION_NAME, actionDescriptor.getName()) .put(FROM_STATUS, findPreviousStatus(createdStep, entry, workflowStore, workflowDescriptor)) .put(TO_STATUS, getToStatus(workflowDescriptor, createdStep)); final ImmutableMap.Builder<String, Object> transitionContext = ImmutableMap.builder(); transitionContext.put(TRANSITION_CONTEXT, transition.build()) .put(COMMENT, transientVars.get(COMMENT) != null ? transientVars.get(COMMENT) : "") .put(USER, user != null ? userBeanFactory.createBean(user) : ""); transitionContext.put(ISSUE, issueBeanFactory.createBean(issue)); transitionContext.put(TIMESTAMP, createdStep.getStartDate().getTime()); return transitionContext.build(); }
public List getSteps() { return getNullSafeUnmodifiableList(delegate.getSteps()); }