blob: b6b9feddac79c10c010bc33f941cf7ac84c412e9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ats.workflow.flow;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.osee.ats.util.TeamState;
import org.eclipse.osee.ats.workflow.item.AtsStatePercentCompleteWeightDefaultWorkflowRule;
import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions;
import org.eclipse.osee.ats.workflow.page.AtsAnalyzeWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsAuthorizeWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsCancelledWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsCompletedWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsEndorseWorkPageDefinition;
import org.eclipse.osee.ats.workflow.page.AtsImplementWorkPageDefinition;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.core.exception.OseeStateException;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.ui.skynet.results.XResultData;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkFlowDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageDefinition;
import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkPageType;
/**
* @author Donald G. Dunne
*/
public class TeamWorkflowDefinition extends WorkFlowDefinition {
public final static String ID = "osee.ats.teamWorkflow";
public TeamWorkflowDefinition() {
this(ID, ID);
addWorkItem(AtsStatePercentCompleteWeightDefaultWorkflowRule.ID);
}
public TeamWorkflowDefinition(Artifact artifact) throws OseeCoreException {
super(artifact);
throw new OseeStateException("This constructor should never be used.");
}
/**
* Instantiate workflow as inherited from parentWorkflowId. Default transitions and startPageId are not set as they
* will most likely come from parent.
*/
public TeamWorkflowDefinition(String name, String workflowId, String parentWorkflowId) {
super(name, workflowId, parentWorkflowId);
}
public void config(WriteType writeType, XResultData xResultData) throws OseeCoreException {
AtsWorkDefinitions.importWorkItemDefinitionsIntoDb(writeType, xResultData, getAtsWorkDefinitions());
}
/**
* Instantiate workflow as a TeamWorkflowDefinition with default transitions and startPageId set.
*/
public TeamWorkflowDefinition(String name, String workflowId) {
super(name, workflowId, null);
addDefaultTransitions(this, workflowId);
startPageId = TeamState.Endorse.getPageName();
}
public static List<WorkItemDefinition> getAtsWorkDefinitions() {
List<WorkItemDefinition> workItems = new ArrayList<WorkItemDefinition>();
// Add Team Page and Workflow Definition
workItems.add(new AtsEndorseWorkPageDefinition(1));
workItems.add(new AtsAnalyzeWorkPageDefinition(2));
workItems.add(new AtsAuthorizeWorkPageDefinition(3));
workItems.add(new AtsImplementWorkPageDefinition(4));
workItems.add(new AtsCompletedWorkPageDefinition(5));
workItems.add(new AtsCancelledWorkPageDefinition(6));
workItems.add(new TeamWorkflowDefinition());
return workItems;
}
public static List<WorkItemDefinition> getWorkPageDefinitionsForId(String workflowId) {
List<WorkItemDefinition> workItems = new ArrayList<WorkItemDefinition>();
// Add Team Page and Workflow Definition
workItems.add(new WorkPageDefinition(TeamState.Endorse.getPageName(),
workflowId + "." + TeamState.Endorse.getPageName(), AtsEndorseWorkPageDefinition.ID, WorkPageType.Working, 1));
workItems.add(new WorkPageDefinition(TeamState.Analyze.getPageName(),
workflowId + "." + TeamState.Analyze.getPageName(), AtsAnalyzeWorkPageDefinition.ID, WorkPageType.Working, 2));
workItems.add(new WorkPageDefinition(TeamState.Authorize.getPageName(),
workflowId + "." + TeamState.Authorize.getPageName(), AtsAuthorizeWorkPageDefinition.ID, WorkPageType.Working,
3));
workItems.add(new WorkPageDefinition(TeamState.Implement.getPageName(),
workflowId + "." + TeamState.Implement.getPageName(), AtsImplementWorkPageDefinition.ID, WorkPageType.Working,
4));
workItems.add(new WorkPageDefinition(TeamState.Completed.getPageName(),
workflowId + "." + TeamState.Completed.getPageName(), AtsCompletedWorkPageDefinition.ID,
WorkPageType.Completed, 5));
workItems.add(new WorkPageDefinition(TeamState.Cancelled.getPageName(),
workflowId + "." + TeamState.Cancelled.getPageName(), AtsCancelledWorkPageDefinition.ID,
WorkPageType.Cancelled, 6));
return workItems;
}
public static void addDefaultTransitions(WorkFlowDefinition teamWorkflowDefinition, String workflowId) {
teamWorkflowDefinition.addPageTransition(TeamState.Endorse.getPageName(), TeamState.Analyze.getPageName(),
TransitionType.ToPageAsDefault);
teamWorkflowDefinition.addPageTransition(TeamState.Analyze.getPageName(), TeamState.Authorize.getPageName(),
TransitionType.ToPageAsDefault);
teamWorkflowDefinition.addPageTransition(TeamState.Authorize.getPageName(), TeamState.Implement.getPageName(),
TransitionType.ToPageAsDefault);
teamWorkflowDefinition.addPageTransition(TeamState.Implement.getPageName(), TeamState.Completed.getPageName(),
TransitionType.ToPageAsDefault);
// Add return transitions
teamWorkflowDefinition.addPageTransition(TeamState.Analyze.getPageName(), TeamState.Endorse.getPageName(),
TransitionType.ToPageAsReturn);
teamWorkflowDefinition.addPageTransition(TeamState.Authorize.getPageName(), TeamState.Analyze.getPageName(),
TransitionType.ToPageAsReturn);
teamWorkflowDefinition.addPageTransition(TeamState.Implement.getPageName(), TeamState.Analyze.getPageName(),
TransitionType.ToPageAsReturn);
teamWorkflowDefinition.addPageTransition(TeamState.Implement.getPageName(), TeamState.Authorize.getPageName(),
TransitionType.ToPageAsReturn);
teamWorkflowDefinition.addPageTransition(TeamState.Completed.getPageName(), TeamState.Implement.getPageName(),
TransitionType.ToPageAsReturn);
// Add cancelled transitions
teamWorkflowDefinition.addPageTransitionToPageAndReturn(TeamState.Endorse.getPageName(),
TeamState.Cancelled.getPageName());
teamWorkflowDefinition.addPageTransitionToPageAndReturn(TeamState.Analyze.getPageName(),
TeamState.Cancelled.getPageName());
teamWorkflowDefinition.addPageTransitionToPageAndReturn(TeamState.Authorize.getPageName(),
TeamState.Cancelled.getPageName());
teamWorkflowDefinition.addPageTransitionToPageAndReturn(TeamState.Implement.getPageName(),
TeamState.Cancelled.getPageName());
}
}