public static TransitionOptions toTransitionOptions(Map<String, Object> workflowMap) { return new TransitionOptions( getBooleanValue(SKIP_CONDITIONS_WORKFLOW_PARAMETER, workflowMap), getBooleanValue(SKIP_VALIDATORS_WORKFLOW_PARAMETER, workflowMap), false, getBooleanValue(AUTOMATIC_TRANSITION_WORKFLOW_PARAMETER, workflowMap) ); }
@Override public boolean passesCondition(Map transientVars, Map args, PropertySet ps) throws WorkflowException { TransitionOptions transitionOptions= TransitionOptions.toTransitionOptions(transientVars); if (transitionOptions.skipConditions()) { return true; } return condition.passesCondition(transientVars, args, ps); }
@Override public void validate(Map transientVars, Map args, PropertySet ps) throws InvalidInputException, WorkflowException { TransitionOptions transitionOptions= TransitionOptions.toTransitionOptions(transientVars); if (transitionOptions.skipValidators()) { return; } validator.validate(transientVars, args, ps); }
@Override public List<ActionDescriptor> getSortedAvailableActions(final Issue issue, final ApplicationUser user) { return getSortedAvailableActions(issue, TransitionOptions.defaults(), user); }
@VisibleForTesting int[] getAvailableActionIds(final Issue issue, final TransitionOptions transitionOptions, final ApplicationUser user) if (!transitionOptions.skipPermissions() && !permissionManager.hasPermission(ProjectPermissions.TRANSITION_ISSUES, issue, user)) inputs.putAll(transitionOptions.getWorkflowParams()); return workflow.getAvailableActions(issueObject.getWorkflowId(), inputs);
private void triggerEventsForManualTransition(IssueResult issueResult, TransitionValidationResult transitionResult) { TransitionOptions transitionOptions = TransitionOptions.toTransitionOptions(transitionResult.getAdditionInputs()); if (!transitionOptions.isAutomaticTransition()) { eventPublisher.publish(new WorkflowManualTransitionExecutionEvent(issueResult.getIssue().getKey(), transitionResult.getActionId(), issueResult.isValid())); Instrumentation.pullCounter(InstrumentationName.WORKFLOW_MANUAL_TRANSITION).incrementAndGet(); } else { Instrumentation.pullCounter(InstrumentationName.WORKFLOW_AUTOMATIC_TRANSITION).incrementAndGet(); } }
/** * Default options for transitioning. * * This will not skip conditions, validators or permissions. Business as usual. * * @return default TransitionOptions */ public static TransitionOptions defaults() { return new TransitionOptions(false, false, false, false); }
Map<String, Object> createAdditionalParameters(final ApplicationUser user, final Map<String, Object> fieldValuesHolder, TransitionOptions transitionOptions, final HistoryMetadata historyMetadata, final String originalAssigneeId) { final Map<String, Object> additionalParams = new HashMap<String, Object>(); // put the user info into the additional params WorkflowFunctionUtils.populateParamsWithUser(additionalParams, user); ///JRA-20604, JRADEV-1246: Need to populate the comment parameters into the additionalParams so they will be available //to the workflow actions. Importantly, this means that the event fired by the workflow will contain a comment if provided //by the user. final CommentSystemField commentSystemField = (CommentSystemField) fieldManager.getOrderableField(IssueFieldConstants.COMMENT); commentSystemField.populateAdditionalInputs(fieldValuesHolder, additionalParams); additionalParams.putAll(transitionOptions.getWorkflowParams()); if (historyMetadata != null) { additionalParams.put(DefaultChangeHistoryManager.HISTORY_METADATA_KEY, historyMetadata); } additionalParams.put("originalAssigneeId", originalAssigneeId); return additionalParams; }
@Override public boolean isValidAction(final Issue issue, final int actionId, final ApplicationUser user) { return isValidAction(issue, actionId, TransitionOptions.defaults(), user); }
public TransitionOptions build() { return new TransitionOptions(skipConditions, skipValidators, skipPermissions, automaticTransition); } }
@Override public Collection<ActionDescriptor> getAvailableActions(final Issue issue, final ApplicationUser user) { return getAvailableActions(issue, TransitionOptions.defaults(), user); }
@Override public TransitionValidationResult validateTransition(ApplicationUser user, Long issueId, int actionId, IssueInputParameters issueInputParameters) { return validateTransition(user, issueId, actionId, issueInputParameters, TransitionOptions.defaults()); }
@Deprecated @Override public Collection<ActionDescriptor> getAvailableActions(final Issue issue) { return getAvailableActions(issue, TransitionOptions.defaults(), authenticationContext.getUser()); }
@Deprecated @Override public boolean isValidAction(final Issue issue, final int actionid) { return isValidAction(issue, actionid, TransitionOptions.defaults(), authenticationContext.getUser()); }
@Deprecated @Override public List<ActionDescriptor> getSortedAvailableActions(final Issue issue) { return getSortedAvailableActions(issue, TransitionOptions.defaults(), authenticationContext.getUser()); }