blob: 36922dc83041a0433dcf02a49e2238afa6fe4f15 [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.AtsStatePercentCompleteWeightSimpleWorkflowRule;
import org.eclipse.osee.ats.workflow.item.AtsWorkDefinitions;
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.AtsSimpleInWorkWorkPageDefinition;
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 SimpleWorkflowDefinition extends WorkFlowDefinition {
public final static String ID = "osee.ats.simpleTeamWorkflow";
public static enum SimpleState {
Endorse,
InWork,
Completed,
Cancelled
};
public final static String ENDORSE_STATE_ID = ID + "." + SimpleState.Endorse.name();
public final static String INWORK_STATE_ID = ID + "." + SimpleState.InWork.name();
public final static String COMPLETED_STATE_ID = ID + "." + SimpleState.Completed.name();
public final static String CANCELLED_STATE_ID = ID + "." + SimpleState.Cancelled.name();
public SimpleWorkflowDefinition(Artifact artifact) throws OseeCoreException {
super(artifact);
throw new OseeStateException("This constructor should never be used.");
}
public SimpleWorkflowDefinition() {
this(ID, ID);
addWorkItem(AtsStatePercentCompleteWeightSimpleWorkflowRule.ID);
}
public SimpleWorkflowDefinition(String name, String workflowId) {
super(name, workflowId, null);
addDefaultTransitions(this, workflowId);
startPageId = SimpleState.Endorse.name();
}
public void config(WriteType writeType, XResultData xResultData) throws OseeCoreException {
AtsWorkDefinitions.importWorkItemDefinitionsIntoDb(writeType, xResultData, getAtsWorkDefinitions());
}
public static void addDefaultTransitions(WorkFlowDefinition teamWorkflowDefinition, String workflowId) {
teamWorkflowDefinition.addPageTransition(SimpleState.Endorse.name(), SimpleState.InWork.name(),
TransitionType.ToPageAsDefault);
teamWorkflowDefinition.addPageTransition(SimpleState.InWork.name(), SimpleState.Completed.name(),
TransitionType.ToPageAsDefault);
// Add return transitions
teamWorkflowDefinition.addPageTransition(SimpleState.InWork.name(), SimpleState.Endorse.name(),
TransitionType.ToPageAsReturn);
teamWorkflowDefinition.addPageTransition(SimpleState.Completed.name(), SimpleState.InWork.name(),
TransitionType.ToPageAsReturn);
// Add cancelled transitions
teamWorkflowDefinition.addPageTransitionToPageAndReturn(SimpleState.Endorse.name(), SimpleState.Cancelled.name());
teamWorkflowDefinition.addPageTransitionToPageAndReturn(SimpleState.InWork.name(), SimpleState.Cancelled.name());
}
public static List<WorkItemDefinition> getAtsWorkDefinitions() {
List<WorkItemDefinition> workItems = new ArrayList<WorkItemDefinition>();
workItems.add(new WorkPageDefinition(SimpleState.Endorse.name(), SimpleWorkflowDefinition.ENDORSE_STATE_ID,
AtsEndorseWorkPageDefinition.ID, WorkPageType.Working, 1));
workItems.add(new AtsSimpleInWorkWorkPageDefinition(2));
workItems.add(new WorkPageDefinition(TeamState.Completed.getPageName(),
SimpleWorkflowDefinition.COMPLETED_STATE_ID, AtsCompletedWorkPageDefinition.ID, WorkPageType.Completed, 3));
workItems.add(new WorkPageDefinition(TeamState.Cancelled.getPageName(),
SimpleWorkflowDefinition.CANCELLED_STATE_ID, AtsCancelledWorkPageDefinition.ID, WorkPageType.Cancelled, 4));
workItems.add(new SimpleWorkflowDefinition());
return workItems;
}
}