Interface SimplifiedWorkflowService
- All Known Implementing Classes:
SimplifiedWorkflowServiceImpl
public interface SimplifiedWorkflowService
Service which encapsulates the "Simplified Workflow" feature.
Due to limitations in OS Workflow, this feature will only work on JIRA versions 5.0.4 and above.
-
Method Summary
Modifier and TypeMethodDescriptionaddStatusToGreenHopperSimplifiedWorkflow
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.workflow.JiraWorkflow workflow, com.atlassian.jira.issue.status.Status status) Modifies the GreenHopper Simplified Workflow to include the specifiedStatus
as a step with its associated global transitions.ServiceOutcome
<com.atlassian.jira.issue.status.Status> canStatusBeRemovedFromGreenHopperSimplifiedWorkflow
(com.atlassian.jira.workflow.JiraWorkflow workflow, String statusId) Checks to see if the specified status can be removed from the specifiedJiraWorkflow
.checkForSimplifiedWorkflowNamedAfterProject
(String projectKey) Look for the existence of workflows or workflow schemes with the reserved name for "GreenHopper Simplified Workflow" for the given project.ServiceOutcome
<com.atlassian.jira.workflow.JiraWorkflow> convertTransitionsToSimplified
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.workflow.JiraWorkflow workflow, List<com.atlassian.jira.issue.status.Status> resolutionDoneStatuses) Converts a workflow so that it will have only global transitions to all steps.ServiceOutcome
<com.atlassian.jira.scheme.Scheme> createSimplifiedWorkflowForExistingProject
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.project.Project project, List<com.atlassian.jira.issue.status.Status> resolutionDoneStatuses) Take the workflow of the existing project, and create a copy which is a GreenHopper Simplified Workflow.createSimplifiedWorkflowForNewProject
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.project.Project project, SimplifiedWorkflowPresets preset) Create a "GreenHopper Simplified Workflow" workflow scheme and workflow for the newly created project and associate it with the provided projectServiceOutcome
<com.atlassian.jira.util.lang.Pair<com.atlassian.jira.workflow.JiraWorkflow, com.atlassian.jira.scheme.Scheme>> createSimplifiedWorkflowForNewProject
(com.atlassian.jira.user.ApplicationUser user, String projectKey, SimplifiedWorkflowPresets preset) Create a "GreenHopper Simplified Workflow" workflow scheme and workflow for a project with key projectKey.ServiceOutcome
<com.atlassian.jira.util.lang.Pair<com.atlassian.jira.workflow.JiraWorkflow, com.atlassian.jira.project.Project>> getGreenHopperSimplifiedWorkflow
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.query.Query query) Attempts to retrieve the GreenHopper Simplified Workflow that is backing theQuery
.ServiceOutcome
<com.atlassian.jira.util.lang.Pair<com.atlassian.jira.workflow.JiraWorkflow, com.atlassian.jira.project.Project>> getPotentialWorkflowForConversion
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.query.Query query) Attempts to retrieve a potential GreenHopper Simplified Workflow that is backing theQuery
.get the map from WorkflowPreset enum to the bean encapsulating preset databoolean
isStatusResolutionDone
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.workflow.JiraWorkflow workflow, com.atlassian.jira.issue.status.Status status) Check if this status is marked as done in simplified workflowremoveStatusFromGreenHopperSimplifiedWorkflow
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.workflow.JiraWorkflow workflow, com.atlassian.jira.issue.status.Status status) Removes the specifiedStatus
associated step and global transition from the GreenHopper Simplified Workflow.ServiceOutcome
<com.atlassian.jira.workflow.JiraWorkflow> replaceInitialStatusInGreenHopperSimplifiedWorkflow
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.workflow.JiraWorkflow workflow, com.atlassian.jira.issue.status.Status oldInitialStatus, com.atlassian.jira.issue.status.Status newInitialStatus) Replaces the initial status specified in the workflow with a new one.setStatusResolutionDone
(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.workflow.JiraWorkflow workflow, com.atlassian.jira.issue.status.Status status, boolean done) Switches on/off the resolution to done for a certain workflow status
-
Method Details
-
isFeatureEnabled
boolean isFeatureEnabled()- Returns:
- if the feature is able to be used based on the JIRA version.
-
getGreenHopperSimplifiedWorkflow
@Nonnull ServiceOutcome<com.atlassian.jira.util.lang.Pair<com.atlassian.jira.workflow.JiraWorkflow,com.atlassian.jira.project.Project>> getGreenHopperSimplifiedWorkflow(com.atlassian.jira.user.ApplicationUser user, com.atlassian.query.Query query) Attempts to retrieve the GreenHopper Simplified Workflow that is backing theQuery
. This will fail if the query does not meet the criteria for a Simplified Workflow. The criteria is as follows:- There is only one project in this query
- That one project only uses one workflow
- That one workflow is not JIRA's Default Workflow
- That one workflow is not used by any other projects
- That one workflow has a global transition for each step (may have non-global transitions too)
- That one workflow's name starts with our simplified workflow prefix
SimplifiedWorkflowStringsFactory.SimplifiedWorkflowStrings.getSimplifiedWorkflowNamePrefix()
- Parameters:
user
- the user trying to retrieve the workflowquery
- the query to look at- Returns:
- the result
-
getPotentialWorkflowForConversion
@Nonnull ServiceOutcome<com.atlassian.jira.util.lang.Pair<com.atlassian.jira.workflow.JiraWorkflow,com.atlassian.jira.project.Project>> getPotentialWorkflowForConversion(com.atlassian.jira.user.ApplicationUser user, @Nonnull com.atlassian.query.Query query) Attempts to retrieve a potential GreenHopper Simplified Workflow that is backing theQuery
. It is necessary that a Simplified Workflow is a potential Simplified Workflow, but not the other way around. This will just determine if the user may be allowed to kick off a conversion. The criteria here is less stringent:- There is only one project in this query
- That one project only uses one workflow
- Parameters:
user
- the user retrieving the workflowquery
- the query to look at- Returns:
- the result
-
canStatusBeRemovedFromGreenHopperSimplifiedWorkflow
@Nonnull ServiceOutcome<com.atlassian.jira.issue.status.Status> canStatusBeRemovedFromGreenHopperSimplifiedWorkflow(@Nonnull com.atlassian.jira.workflow.JiraWorkflow workflow, @Nonnull String statusId) Checks to see if the specified status can be removed from the specifiedJiraWorkflow
. It assumes that the workflow is a GreenHopper Simplified Workflow. The status can only be removed if:- The status has an associated step in the workflow
- The step only has global transition(s) going into it
- Parameters:
workflow
- the workflowstatusId
- the ID of the status to look for- Returns:
- the outcome
-
removeStatusFromGreenHopperSimplifiedWorkflow
@Nonnull ServiceResult removeStatusFromGreenHopperSimplifiedWorkflow(com.atlassian.jira.user.ApplicationUser user, @Nonnull com.atlassian.jira.workflow.JiraWorkflow workflow, @Nonnull com.atlassian.jira.issue.status.Status status) Removes the specifiedStatus
associated step and global transition from the GreenHopper Simplified Workflow. Assumes that the workflow is a GreenHopper Simplified Workflow. If the status is no longer in use by any workflow, it will be removed from the system entirely.- Parameters:
user
- the userworkflow
- the workflowstatus
- the status to remove- Returns:
- the result
-
replaceInitialStatusInGreenHopperSimplifiedWorkflow
@Nonnull ServiceOutcome<com.atlassian.jira.workflow.JiraWorkflow> replaceInitialStatusInGreenHopperSimplifiedWorkflow(com.atlassian.jira.user.ApplicationUser user, @Nonnull com.atlassian.jira.workflow.JiraWorkflow workflow, @Nonnull com.atlassian.jira.issue.status.Status oldInitialStatus, @Nonnull com.atlassian.jira.issue.status.Status newInitialStatus) Replaces the initial status specified in the workflow with a new one. Assumes that the workflow is a GreenHopper Simplified Workflow.- Parameters:
user
- the userworkflow
- the workflowoldInitialStatus
- the status to removenewInitialStatus
- the status to replace it with- Returns:
- the result
-
addStatusToGreenHopperSimplifiedWorkflow
@Nonnull ServiceResult addStatusToGreenHopperSimplifiedWorkflow(com.atlassian.jira.user.ApplicationUser user, @Nonnull com.atlassian.jira.workflow.JiraWorkflow workflow, @Nonnull com.atlassian.jira.issue.status.Status status) Modifies the GreenHopper Simplified Workflow to include the specifiedStatus
as a step with its associated global transitions. If the status already exists in the specified workflow, nothing will be changed.- Parameters:
user
- the userworkflow
- the workflow to modify - must be a GreenHopper Simplified Workflowstatus
- the status- Returns:
- the result
-
convertTransitionsToSimplified
@Nonnull ServiceOutcome<com.atlassian.jira.workflow.JiraWorkflow> convertTransitionsToSimplified(com.atlassian.jira.user.ApplicationUser user, @Nonnull com.atlassian.jira.workflow.JiraWorkflow workflow, List<com.atlassian.jira.issue.status.Status> resolutionDoneStatuses) Converts a workflow so that it will have only global transitions to all steps. These transitions will not have any conditions, validators or screens, and will have the default post functions applied.- Parameters:
user
- the userworkflow
- the original workflowresolutionDoneStatuses
- optional status which will be marked as done- Returns:
- the new workflow
-
checkForSimplifiedWorkflowNamedAfterProject
@Nonnull ServiceOutcome<CheckWorkflowEntitiesByNameResult> checkForSimplifiedWorkflowNamedAfterProject(String projectKey) Look for the existence of workflows or workflow schemes with the reserved name for "GreenHopper Simplified Workflow" for the given project. This is used when attempting to convert an existing project's workflow into the GreenHopper Simplified Workflow.- Parameters:
projectKey
-- Returns:
- the result
- See Also:
-
createSimplifiedWorkflowForNewProject
@Nonnull ServiceOutcome<com.atlassian.jira.util.lang.Pair<com.atlassian.jira.workflow.JiraWorkflow,com.atlassian.jira.scheme.Scheme>> createSimplifiedWorkflowForNewProject(com.atlassian.jira.user.ApplicationUser user, String projectKey, SimplifiedWorkflowPresets preset) Create a "GreenHopper Simplified Workflow" workflow scheme and workflow for a project with key projectKey. Does not associate scheme with project.- See Also:
-
createSimplifiedWorkflowForNewProject
@Nonnull ServiceResult createSimplifiedWorkflowForNewProject(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.project.Project project, SimplifiedWorkflowPresets preset) Create a "GreenHopper Simplified Workflow" workflow scheme and workflow for the newly created project and associate it with the provided project -
createSimplifiedWorkflowForExistingProject
@Nonnull ServiceOutcome<com.atlassian.jira.scheme.Scheme> createSimplifiedWorkflowForExistingProject(com.atlassian.jira.user.ApplicationUser user, com.atlassian.jira.project.Project project, List<com.atlassian.jira.issue.status.Status> resolutionDoneStatuses) Take the workflow of the existing project, and create a copy which is a GreenHopper Simplified Workflow. Does not associate the project to the workflow scheme.- Parameters:
user
- the userproject
- the existing project- Returns:
- the new scheme which the project could be associated to
-
getPresetDefinitions
get the map from WorkflowPreset enum to the bean encapsulating preset data -
isStatusResolutionDone
@Nonnull ServiceOutcome<Boolean> isStatusResolutionDone(com.atlassian.jira.user.ApplicationUser user, @Nonnull com.atlassian.jira.workflow.JiraWorkflow workflow, @Nonnull com.atlassian.jira.issue.status.Status status) Check if this status is marked as done in simplified workflow- Parameters:
user
- the userworkflow
- the workflowstatus
- the status- Returns:
-
setStatusResolutionDone
ServiceResult setStatusResolutionDone(com.atlassian.jira.user.ApplicationUser user, @Nonnull com.atlassian.jira.workflow.JiraWorkflow workflow, @Nonnull com.atlassian.jira.issue.status.Status status, boolean done) Switches on/off the resolution to done for a certain workflow status- Parameters:
user
- the userworkflow
- the workflowstatus
- the statusdone
- whether to clear or set as done the resolution field- Returns:
-