Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorddunne2011-01-20 23:31:21 +0000
committerRyan D. Brooks2011-01-20 23:31:21 +0000
commita62cd90384e574d523bd91c45d92a6b47cb3b13a (patch)
tree0822e0007bfbb59f699d37a1fe4af04f5b2708e5
parent7f9564c5bab058713ba2dff9fe8ef77a5261f83c (diff)
downloadorg.eclipse.osee-a62cd90384e574d523bd91c45d92a6b47cb3b13a.tar.gz
org.eclipse.osee-a62cd90384e574d523bd91c45d92a6b47cb3b13a.tar.xz
org.eclipse.osee-a62cd90384e574d523bd91c45d92a6b47cb3b13a.zip
feature[ats_RBQCB]: Add task functionality to CPCR/TPCR workflows
-rw-r--r--plugins/org.eclipse.osee.ats/images/workDef.gifbin0 -> 361 bytes
-rw-r--r--plugins/org.eclipse.osee.ats/plugin.xml1
-rw-r--r--plugins/org.eclipse.osee.ats/schema/AtsWorkDefinitionSheetProvider.exsd102
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java2
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java6
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactTypes.java1
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java3
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java27
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java73
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java135
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java12
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionSheetProvider.java13
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java48
-rw-r--r--plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionSheet.java39
-rw-r--r--plugins/org.eclipse.osee.ats/support/OseeTypes_ATS.osee13
-rw-r--r--plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats51
-rw-r--r--plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats169
20 files changed, 642 insertions, 56 deletions
diff --git a/plugins/org.eclipse.osee.ats/images/workDef.gif b/plugins/org.eclipse.osee.ats/images/workDef.gif
new file mode 100644
index 00000000000..6b33feb4267
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/images/workDef.gif
Binary files differ
diff --git a/plugins/org.eclipse.osee.ats/plugin.xml b/plugins/org.eclipse.osee.ats/plugin.xml
index 68dfbea4134..06ca69cf7e2 100644
--- a/plugins/org.eclipse.osee.ats/plugin.xml
+++ b/plugins/org.eclipse.osee.ats/plugin.xml
@@ -12,6 +12,7 @@
<extension-point id="AtsAdvancedOperationAction" name="AtsAdvancedOperationAction" schema="schema/AtsAdvancedOperationAction.exsd"/>
<extension-point id="AtsMenuAction" name="AtsMenuAction" schema="schema/AtsMenuAction.exsd"/>
<extension-point id="AtsWorkDefinitionProvider" name="AtsWorkDefinitionProvider" schema="schema/AtsWorkDefinitionProvider.exsd"/>
+ <extension-point id="AtsWorkDefinitionSheetProvider" name="AtsWorkDefinitionSheetProvider" schema="schema/AtsWorkDefinitionSheetProvider.exsd"/>
<extension
point="org.eclipse.ui.editors">
<editor
diff --git a/plugins/org.eclipse.osee.ats/schema/AtsWorkDefinitionSheetProvider.exsd b/plugins/org.eclipse.osee.ats/schema/AtsWorkDefinitionSheetProvider.exsd
new file mode 100644
index 00000000000..207fd8a3622
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/schema/AtsWorkDefinitionSheetProvider.exsd
@@ -0,0 +1,102 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.osee.ats" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.osee.ats" id="AtsWorkDefinitionSheetProvider" name="AtsWorkDefinitionSheetProvider"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <sequence>
+ <element ref="AtsWorkDefinitionSheetProvider"/>
+ </sequence>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="AtsWorkDefinitionSheetProvider">
+ <complexType>
+ <attribute name="classname" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.osee.ats.workdef.IAtsWorkDefinitionSheetProvider"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java
index f98bd607099..51f1cde7e34 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsArtifactImageProvider.java
@@ -39,6 +39,7 @@ public class AtsArtifactImageProvider extends ArtifactImageProvider {
ArtifactImageManager.registerBaseImage(AtsArtifactTypes.ActionableItem, AtsImage.ACTIONABLE_ITEM, this);
ArtifactImageManager.registerBaseImage(AtsArtifactTypes.TeamWorkflow, AtsImage.TEAM_WORKFLOW, this);
ArtifactImageManager.registerBaseImage(AtsArtifactTypes.TeamDefinition, AtsImage.TEAM_DEFINITION, this);
+ ArtifactImageManager.registerBaseImage(AtsArtifactTypes.WorkDefinition, AtsImage.WORK_DEFINITION, this);
ArtifactImageManager.registerBaseImage(AtsArtifactTypes.Goal, AtsImage.GOAL, this);
ArtifactImageManager.registerBaseImage(AtsArtifactTypes.PeerToPeerReview, AtsImage.REVIEW, this);
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java
index 449b0d195f6..fa3e3e36322 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/AtsImage.java
@@ -68,6 +68,7 @@ public enum AtsImage implements KeyedImage {
TRANSITION("transition.gif"),
VERSION_LOCKED("yellowV_8_8.gif"),
WORKFLOW_CONFIG("workflow.gif"),
+ WORK_DEFINITION("workDef.gif"),
TOOL("T.gif"),
ZOOM("zoom_in.gif"),
ZOOM_IN("zoom_in.gif"),
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java
index c83509303b7..a956a4b22b0 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/artifact/AtsAttributeTypes.java
@@ -54,6 +54,7 @@ public class AtsAttributeTypes extends NamedIdentity implements IAttributeType {
public static final IAttributeType DecisionReviewOptions = new AtsAttributeTypes("AAMFEd5hRy1+SRJRqfwA", "Decision Review Options", "Options available for selection in review. Each line is a separate option. Format: <option name>;<state to transition to>;<assignee>");
public static final IAttributeType Description = new AtsAttributeTypes("AAMFEdWJ_ChxX6+YKbwA", "Description", "Detailed explanation.");
+ public static final IAttributeType DslSheet = new AtsAttributeTypes("AGrqojZDowPDaLh4kBAA", "DSL Sheet", "XText DSL Sheet for ATS");
public static final IAttributeType EstimatedCompletionDate = new AtsAttributeTypes("AAMFEc18k3Gh+GP7zqAA", "Estimated Completion Date", "Date the changes will be completed.");
public static final IAttributeType EstimatedHours = new AtsAttributeTypes("AAMFEdCSqBh+cPyadiwA", "Estimated Hours", "Hours estimated to implement the changes associated with this Action.\nIncludes estimated hours for workflows, tasks and reviews.");
public static final IAttributeType EstimatedReleaseDate = new AtsAttributeTypes("AAMFEcy6VB7Ble5SP1QA", "Estimated Release Date", "Date the changes will be made available to the users.");
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java
index c8052ee9207..9260be8b8f2 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/config/AtsDatabaseConfig.java
@@ -12,6 +12,7 @@ package org.eclipse.osee.ats.config;
import org.eclipse.osee.ats.util.AtsFolderUtil;
import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.ats.workdef.AtsWorkDefinitionSheetProviders;
import org.eclipse.osee.ats.workflow.flow.DecisionWorkflowDefinition;
import org.eclipse.osee.ats.workflow.flow.GoalWorkflowDefinition;
import org.eclipse.osee.ats.workflow.flow.PeerToPeerWorkflowDefinition;
@@ -30,6 +31,7 @@ public class AtsDatabaseConfig implements IDbInitializationTask {
public void run() throws OseeCoreException {
AtsFolderUtil.createAtsFolders();
+ AtsWorkDefinitionSheetProviders.initializeDatabase();
configWorkItemDefinitions(WriteType.New, null);
AtsUtil.getAtsAdminGroup().getGroupArtifact().persist();
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java
index 06aeadc2863..b3451fd5fbd 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/navigate/ConvertWorkFlowDefinitions.java
@@ -14,7 +14,6 @@ import java.util.HashMap;
import java.util.Map;
import org.eclipse.osee.ats.AtsImage;
import org.eclipse.osee.ats.workdef.AtsWorkDefinitionProviders;
-import org.eclipse.osee.ats.workdef.IAtsWorkDefinitionProvider;
import org.eclipse.osee.ats.workdef.WorkDefinition;
import org.eclipse.osee.ats.workdef.WorkDefinitionFactory;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
@@ -31,7 +30,7 @@ import org.eclipse.osee.framework.ui.skynet.widgets.workflow.WorkItemDefinitionF
public class ConvertWorkFlowDefinitions extends XNavigateItemAction {
public ConvertWorkFlowDefinitions(XNavigateItem parent) {
- super(parent, "Convert Work Flow Definition(s)", AtsImage.REPORT);
+ super(parent, "Convert Work Flow Definition(s)", AtsImage.WORK_DEFINITION);
}
@Override
@@ -86,7 +85,6 @@ public class ConvertWorkFlowDefinitions extends XNavigateItemAction {
private void convert(WorkFlowDefinition workFlowDef, XResultData resultData, String filename) throws OseeCoreException {
WorkDefinition workDef = WorkDefinitionFactory.translateToWorkDefinition(workFlowDef);
- IAtsWorkDefinitionProvider provider = AtsWorkDefinitionProviders.getAtsTeamWorkflowExtensions().iterator().next();
- provider.convertAndOpenAtsDsl(workDef, resultData, filename);
+ AtsWorkDefinitionProviders.convertAndOpenAtsDsl(workDef, resultData, filename);
}
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactTypes.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactTypes.java
index 5e9a60a6257..4b9a7d15b91 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactTypes.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsArtifactTypes.java
@@ -28,6 +28,7 @@ public class AtsArtifactTypes extends NamedIdentity implements IArtifactType {
public static final IArtifactType Version = new AtsArtifactTypes("AAMFDhder0oETnv14xQA", "Version");
public static final IArtifactType Goal = new AtsArtifactTypes("ABMgU119UjI_Q23Yu+gA", "Goal");
public static final IArtifactType AtsArtifact = new AtsArtifactTypes("ABMaLS0jvw92SE+4ZJQA", "ats.Ats Artifact");
+ public static final IArtifactType WorkDefinition = new AtsArtifactTypes("AGrU8fWa3AJ6uoWYP7wA", "Work Definition");
// @formatter:on
private AtsArtifactTypes(String guid, String name) {
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java
index 6326f36b2d8..47a7cd18dc1 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/AtsFolderUtil.java
@@ -34,7 +34,8 @@ public class AtsFolderUtil {
WorkFlow("Work Flows", "Work Flows", CoreArtifactTypes.Folder),
WorkRules("Work Rules", "Work Rules", CoreArtifactTypes.Folder),
WorkWidgets("Work Widgets", "Work Widgets", CoreArtifactTypes.Folder),
- WorkPages("Work Pages", "Work Pages", CoreArtifactTypes.Folder);
+ WorkPages("Work Pages", "Work Pages", CoreArtifactTypes.Folder),
+ WorkDefinitions("Work Definitions", "Work Definitions", CoreArtifactTypes.Folder);
final String displayName;
final String staticId;
final IArtifactType artifactType;
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java
index dc8c220615f..81058f62f43 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/util/DoesNotWorkItemAts.java
@@ -10,7 +10,14 @@
*******************************************************************************/
package org.eclipse.osee.ats.util;
+import java.io.File;
+import java.util.logging.Level;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.workdef.AtsWorkDefinitionProviders;
+import org.eclipse.osee.ats.workdef.WorkDefinitionSheet;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.PluginUtil;
import org.eclipse.osee.framework.ui.plugin.PluginUiImage;
import org.eclipse.osee.framework.ui.plugin.util.AWorkbench;
import org.eclipse.osee.framework.ui.plugin.xnavigate.XNavigateComposite.TableLoadOption;
@@ -24,7 +31,7 @@ import org.eclipse.osee.framework.ui.swt.Displays;
public class DoesNotWorkItemAts extends XNavigateItemAction {
public DoesNotWorkItemAts(XNavigateItem parent) {
- super(parent, "Does Not Work - ATS - fixAtsNotesAndDefectItemsUserIds", PluginUiImage.ADMIN);
+ super(parent, "Does Not Work - ATS - Load WorkDef_Team_Default.ats old/new way", PluginUiImage.ADMIN);
}
@Override
@@ -32,6 +39,23 @@ public class DoesNotWorkItemAts extends XNavigateItemAction {
if (!MessageDialog.openConfirm(Displays.getActiveShell(), getName(), getName())) {
return;
}
+ AtsWorkDefinitionProviders.loadTeamWorkDefFromFileOldWay();
+ AtsWorkDefinitionProviders.loadTeamWorkDefFromFileNewWay();
+
+ PluginUtil util = new PluginUtil("org.eclipse.osee.ats");
+ String filename = "support/WorkDef_Team_Default.ats";
+ try {
+ File file = util.getPluginFile(filename);
+ if (!file.exists()) {
+ System.err.println("File " + filename + " doesn't exist");
+ }
+
+ WorkDefinitionSheet sheet = new WorkDefinitionSheet("WorkDef_Team_Default", "osee.ats.teamWorkflow", file);
+ AtsWorkDefinitionProviders.loadWorkFlowDefinitionFromFile(sheet);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE, ex);
+ }
+
// SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Admin Cleanup");
// Artifact verArt =
// ArtifactQuery.getArtifactFromTypeAndName(AtsArtifactTypes.Version, "0.9.0", AtsUtil.getAtsBranch());
@@ -56,5 +80,4 @@ public class DoesNotWorkItemAts extends XNavigateItemAction {
AWorkbench.popup("Completed", "Complete");
}
-
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java
index 07640bea69b..b6db036c7bc 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionProviders.java
@@ -10,15 +10,17 @@
*******************************************************************************/
package org.eclipse.osee.ats.workdef;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.logging.Level;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.Platform;
import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
import org.eclipse.osee.framework.logging.OseeLevel;
import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.ui.skynet.results.XResultData;
import org.osgi.framework.Bundle;
/**
@@ -26,26 +28,71 @@ import org.osgi.framework.Bundle;
*/
public final class AtsWorkDefinitionProviders {
- private static Set<IAtsWorkDefinitionProvider> teamWorkflowExtensionItems;
+ private static IAtsWorkDefinitionProvider provider = null;
private AtsWorkDefinitionProviders() {
// private constructor
}
+ public static boolean providerExists() {
+ return getProvider() != null;
+ }
+
+ public static Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet) throws OseeCoreException {
+ if (!providerExists()) {
+ return null;
+ }
+ return getProvider().importWorkDefinitionSheetToDb(sheet);
+ }
+
+ public static WorkDefinition loadWorkFlowDefinitionFromFile(WorkDefinitionSheet sheet) throws OseeCoreException {
+ if (!providerExists()) {
+ return null;
+ }
+ return getProvider().loadWorkFlowDefinitionFromFile(sheet);
+ }
+
+ public static WorkDefinition loadTeamWorkDefFromFileOldWay() {
+ if (!providerExists()) {
+ return null;
+ }
+ return getProvider().loadTeamWorkDefFromFileOldWay();
+ }
+
+ public static WorkDefinition loadTeamWorkDefFromFileNewWay() {
+ if (!providerExists()) {
+ return null;
+ }
+ return getProvider().loadTeamWorkDefFromFileNewWay();
+ }
+
+ public static WorkDefinition getWorkFlowDefinition(String id) throws OseeCoreException {
+ if (!providerExists()) {
+ return null;
+ }
+ return getProvider().getWorkFlowDefinition(id);
+ }
+
+ public static void convertAndOpenAtsDsl(WorkDefinition workDef, XResultData resultData, String filename) throws OseeCoreException {
+ if (!providerExists()) {
+ return;
+ }
+ getProvider().convertAndOpenAtsDsl(workDef, resultData, filename);
+ }
+
/*
* due to lazy initialization, this function is non-reentrant therefore, the synchronized keyword is necessary
*/
- public synchronized static Set<IAtsWorkDefinitionProvider> getAtsTeamWorkflowExtensions() {
- if (teamWorkflowExtensionItems != null) {
- return teamWorkflowExtensionItems;
+ private synchronized static IAtsWorkDefinitionProvider getProvider() {
+ if (provider != null) {
+ return provider;
}
- teamWorkflowExtensionItems = new HashSet<IAtsWorkDefinitionProvider>();
IExtensionPoint point =
Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsWorkDefinitionProvider");
if (point == null) {
OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP, "Can't access AtsWorkDefinitionProvider extension point");
- return teamWorkflowExtensionItems;
+ return null;
}
IExtension[] extensions = point.getExtensions();
for (IExtension extension : extensions) {
@@ -54,6 +101,10 @@ public final class AtsWorkDefinitionProviders {
String bundleName = null;
for (IConfigurationElement el : elements) {
if (el.getName().equals("AtsWorkDefinitionProvider")) {
+ if (provider != null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP,
+ "Error can not be two AtsWorkDefinitionProviders");
+ }
classname = el.getAttribute("classname");
bundleName = el.getContributor().getName();
if (classname != null && bundleName != null) {
@@ -61,7 +112,7 @@ public final class AtsWorkDefinitionProviders {
try {
Class<?> taskClass = bundle.loadClass(classname);
Object obj = taskClass.newInstance();
- teamWorkflowExtensionItems.add((IAtsWorkDefinitionProvider) obj);
+ provider = ((IAtsWorkDefinitionProvider) obj);
} catch (Exception ex) {
OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP,
"Error loading AtsWorkDefinitionProvider extension", ex);
@@ -70,7 +121,7 @@ public final class AtsWorkDefinitionProviders {
}
}
}
- return teamWorkflowExtensionItems;
+ OseeLog.log(AtsPlugin.class, Level.INFO, "No AtsWorkDefinitionProvider Loaded");
+ return provider;
}
-
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java
new file mode 100644
index 00000000000..8eb39c64fa1
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/AtsWorkDefinitionSheetProviders.java
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ * 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.workdef;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.logging.Level;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+import org.eclipse.core.runtime.IExtensionPoint;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.osee.ats.internal.AtsPlugin;
+import org.eclipse.osee.ats.util.AtsFolderUtil;
+import org.eclipse.osee.ats.util.AtsFolderUtil.AtsFolder;
+import org.eclipse.osee.ats.util.AtsUtil;
+import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.logging.OseeLevel;
+import org.eclipse.osee.framework.logging.OseeLog;
+import org.eclipse.osee.framework.plugin.core.PluginUtil;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
+import org.eclipse.osee.framework.skynet.core.transaction.SkynetTransaction;
+import org.osgi.framework.Bundle;
+
+/**
+ * @author Donald G. Dunne
+ */
+public final class AtsWorkDefinitionSheetProviders {
+
+ private static Set<IAtsWorkDefinitionSheetProvider> teamWorkflowExtensionItems;
+
+ private AtsWorkDefinitionSheetProviders() {
+ // private constructor
+ }
+
+ public static String getOverrideId(String id) {
+ for (WorkDefinitionSheet sheet : getWorkDefinitionSheets()) {
+ if (sheet.getLegacyOverrideId().equals(id)) {
+ return sheet.getName();
+ }
+ }
+ return null;
+ }
+
+ public static void initializeDatabase() throws OseeCoreException {
+ SkynetTransaction transaction = new SkynetTransaction(AtsUtil.getAtsBranch(), "Import ATS Work Definitions");
+ Artifact folder = AtsFolderUtil.getFolder(AtsFolder.WorkDefinitions);
+ folder.persist(transaction);
+ for (WorkDefinitionSheet sheet : getWorkDefinitionSheets()) {
+ Artifact artifact = AtsWorkDefinitionProviders.importWorkDefinitionSheetToDb(sheet);
+ if (artifact != null) {
+ folder.addChild(artifact);
+ artifact.persist(transaction);
+ }
+ }
+ transaction.execute();
+ }
+
+ private static List<WorkDefinitionSheet> getWorkDefinitionSheets() {
+ List<WorkDefinitionSheet> sheets = new ArrayList<WorkDefinitionSheet>();
+ sheets.add(new WorkDefinitionSheet("WorkDef_Team_Default", "osee.ats.teamWorkflow",
+ getSupportFile("support/WorkDef_Team_Default.ats")));
+ sheets.add(new WorkDefinitionSheet("WorkDef_Task_Default", "osee.ats.taskWorkflow",
+ getSupportFile("support/WorkDef_Task_Default.ats")));
+ for (IAtsWorkDefinitionSheetProvider provider : getProviders()) {
+ sheets.addAll(provider.getWorkDefinitionSheets());
+ }
+ return sheets;
+ }
+
+ public static File getSupportFile(String filename) {
+ try {
+ PluginUtil util = new PluginUtil(AtsPlugin.PLUGIN_ID);
+ return util.getPluginFile(filename);
+ } catch (IOException ex) {
+ OseeLog.log(AtsPlugin.class, Level.SEVERE,
+ String.format("Unable to access work definition sheet [%s]", filename), ex);
+ }
+ return null;
+ }
+
+ /*
+ * due to lazy initialization, this function is non-reentrant therefore, the synchronized keyword is necessary
+ */
+ private synchronized static Set<IAtsWorkDefinitionSheetProvider> getProviders() {
+ if (teamWorkflowExtensionItems != null) {
+ return teamWorkflowExtensionItems;
+ }
+ teamWorkflowExtensionItems = new HashSet<IAtsWorkDefinitionSheetProvider>();
+
+ IExtensionPoint point =
+ Platform.getExtensionRegistry().getExtensionPoint("org.eclipse.osee.ats.AtsWorkDefinitionSheetProvider");
+ if (point == null) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP,
+ "Can't access AtsWorkDefinitionSheetProvider extension point");
+ return teamWorkflowExtensionItems;
+ }
+ IExtension[] extensions = point.getExtensions();
+ for (IExtension extension : extensions) {
+ IConfigurationElement[] elements = extension.getConfigurationElements();
+ String classname = null;
+ String bundleName = null;
+ for (IConfigurationElement el : elements) {
+ if (el.getName().equals("AtsWorkDefinitionSheetProvider")) {
+ classname = el.getAttribute("classname");
+ bundleName = el.getContributor().getName();
+ if (classname != null && bundleName != null) {
+ Bundle bundle = Platform.getBundle(bundleName);
+ try {
+ Class<?> taskClass = bundle.loadClass(classname);
+ Object obj = taskClass.newInstance();
+ teamWorkflowExtensionItems.add((IAtsWorkDefinitionSheetProvider) obj);
+ } catch (Exception ex) {
+ OseeLog.log(AtsPlugin.class, OseeLevel.SEVERE_POPUP,
+ "Error loading AtsWorkDefinitionSheetProvider extension", ex);
+ }
+ }
+ }
+ }
+ }
+ return teamWorkflowExtensionItems;
+ }
+
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java
index 576fb3ffb79..84ef6e598b4 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionProvider.java
@@ -6,11 +6,21 @@
package org.eclipse.osee.ats.workdef;
import org.eclipse.osee.framework.core.exception.OseeCoreException;
+import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.ui.skynet.results.XResultData;
public interface IAtsWorkDefinitionProvider {
- WorkDefinition getWorkFlowDefinition(String id);
+ WorkDefinition loadWorkFlowDefinitionFromFile(WorkDefinitionSheet sheet) throws OseeCoreException;
+
+ WorkDefinition getWorkFlowDefinition(String id) throws OseeCoreException;
+
+ Artifact importWorkDefinitionSheetToDb(WorkDefinitionSheet sheet) throws OseeCoreException;
void convertAndOpenAtsDsl(WorkDefinition workDef, XResultData resultData, String filename) throws OseeCoreException;
+
+ public WorkDefinition loadTeamWorkDefFromFileOldWay();
+
+ public WorkDefinition loadTeamWorkDefFromFileNewWay();
+
}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionSheetProvider.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionSheetProvider.java
new file mode 100644
index 00000000000..df836964ee8
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/IAtsWorkDefinitionSheetProvider.java
@@ -0,0 +1,13 @@
+/*
+ * Created on Jan 19, 2011
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.workdef;
+
+import java.util.Collection;
+
+public interface IAtsWorkDefinitionSheetProvider {
+
+ public Collection<WorkDefinitionSheet> getWorkDefinitionSheets();
+}
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java
index 050eee1e6a9..42c89bbc144 100644
--- a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionFactory.java
@@ -96,19 +96,19 @@ public class WorkDefinitionFactory {
}
public static WorkDefinitionMatch getWorkDefinition(String id) throws OseeCoreException {
- String translatedId = WorkDefinitionFactory.getOverrideWorkDefId(id);
if (!idToWorkDefintion.containsKey(id) || AtsUtil.isForceReloadWorkDefinitions()) {
WorkDefinitionMatch match = new WorkDefinitionMatch();
- for (IAtsWorkDefinitionProvider provider : AtsWorkDefinitionProviders.getAtsTeamWorkflowExtensions()) {
- WorkDefinition workDef = provider.getWorkFlowDefinition(translatedId);
+ String translatedId = WorkDefinitionFactory.getOverrideWorkDefId(id);
+ // Try to get from new DSL provider if configured to use it
+ if (!match.isMatched() && AtsUtil.isUseNewWorkDefinitions()) {
+ WorkDefinition workDef = AtsWorkDefinitionProviders.getWorkFlowDefinition(translatedId);
if (workDef != null) {
match.setWorkDefinition(workDef);
match.getTrace().add(
- (String.format("from provider [%s] for id [%s] and override translated Id [%s]",
- provider.getClass().getSimpleName(), id, translatedId)));
- break;
+ (String.format("from DSL provider loaded id [%s] and override translated Id [%s]", id, translatedId)));
}
}
+ // Otherwise, just translate legacy WorkFlowDefinition from artifact
if (!match.isMatched()) {
WorkDefinition workDef =
translateToWorkDefinition((WorkFlowDefinition) WorkItemDefinitionFactory.getWorkItemDefinition(id));
@@ -390,39 +390,13 @@ public class WorkDefinitionFactory {
public static String getOverrideWorkDefId(String id) {
// Don't override if no providers available (dsl plugins not released)
- if (AtsUtil.isUseNewWorkDefinitions() && AtsWorkDefinitionProviders.getAtsTeamWorkflowExtensions().size() > 0) {
- Map<String, String> idToName = new HashMap<String, String>();
- // To Be Converted
- idToName.put("ah6.common", "WorkDef_Team_Ah6i_Common");
- idToName.put("ah6.issue", "WorkDef_Team_Ah6i_Issue");
- idToName.put("lba.common.code", "WorkDef_Team_LbaCode");
- idToName.put("lba.common.pids.req", "WorkDef_Team_LbaPids");
- idToName.put("lba.common.sw_techappr", "WorkDef_Team_Lba_SwTechAppr");
- idToName.put("lba.common.swdesign", "WorkDef_Team_Lba_SwDesign");
- idToName.put("lba.common.test", "WorkDef_Team_Lba_Test_Default");
- idToName.put("lba.common.test_procedures", "WorkDef_Team_Lba_Procedures");
- idToName.put("lba.cte", "WorkDef_Team_Cte");
- idToName.put("lba.deliverable", "WorkDef_Team_Deliverable");
- idToName.put("lba.processTeam", "WorkDef_Team_Processes");
- idToName.put("osee.decisionReview", "WorkDef_Review_Decision");
- idToName.put("osee.goalWorkflow", "WorkDef_Goal");
- idToName.put("osee.peerToPeerReview", "WorkDef_Review_PeerToPeer");
- idToName.put("osee.simpleTeamWorkflow", "WorkDef_Team_Simple");
- idToName.put("demo.code", "WorkDef_Team_Demo_Code");
- idToName.put("demo.req", "WorkDef_Team_Demo_Req");
- idToName.put("demo.swdesign", "WorkDef_Team_Demo_SwDesign");
- idToName.put("demo.test", "WorkDef_Team_Demo_Test");
- // Done converting
- idToName.put("osee.taskWorkflow", "WorkDef_Task_Default");
- idToName.put("lba.common.req", "WorkDef_Team_Lba_Req");
- idToName.put("osee.ats.teamWorkflow", "WorkDef_Team_Default");
- idToName.put("osee.ats.taskWorkflow", "WorkDef_Task_Default");
- idToName.put("lba.common.test.tpcr", "WorkDef_Team_Lba_Test_Tpcr");
+ if (AtsUtil.isUseNewWorkDefinitions() && AtsWorkDefinitionProviders.providerExists()) {
- if (idToName.containsKey(id)) {
+ String overrideId = AtsWorkDefinitionSheetProviders.getOverrideId(id);
+ if (Strings.isValid(overrideId)) {
OseeLog.log(AtsPlugin.class, Level.INFO,
- String.format("Override WorkDefinition [%s] with [%s]", id, idToName.get(id)));
- return idToName.get(id);
+ String.format("Override WorkDefinition [%s] with [%s]", id, overrideId));
+ return overrideId;
}
}
return id;
diff --git a/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionSheet.java b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionSheet.java
new file mode 100644
index 00000000000..0728e16c3e1
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/src/org/eclipse/osee/ats/workdef/WorkDefinitionSheet.java
@@ -0,0 +1,39 @@
+/*
+ * Created on Jan 19, 2011
+ *
+ * PLACE_YOUR_DISTRIBUTION_STATEMENT_RIGHT_HERE
+ */
+package org.eclipse.osee.ats.workdef;
+
+import java.io.File;
+
+public class WorkDefinitionSheet {
+
+ public File file;
+ public String name;
+ public String legacyOverrideId;
+
+ public WorkDefinitionSheet(String name, String legacyOverrideId, File file) {
+ super();
+ this.file = file;
+ this.name = name;
+ this.legacyOverrideId = legacyOverrideId;
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getLegacyOverrideId() {
+ return legacyOverrideId;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s filename[%s] overrideId[%s]", name, file, legacyOverrideId);
+ }
+}
diff --git a/plugins/org.eclipse.osee.ats/support/OseeTypes_ATS.osee b/plugins/org.eclipse.osee.ats/support/OseeTypes_ATS.osee
index 878fe4b64c5..05b5056e46e 100644
--- a/plugins/org.eclipse.osee.ats/support/OseeTypes_ATS.osee
+++ b/plugins/org.eclipse.osee.ats/support/OseeTypes_ATS.osee
@@ -5,6 +5,11 @@ abstract artifactType "ats.Release Artifact" extends "Artifact" {
attribute "ats.Released"
}
+artifactType "Work Definition" extends "Artifact" {
+ guid "AGrU8fWa3AJ6uoWYP7wA"
+ attribute "ats.DSL Sheet"
+}
+
abstract artifactType "ats.Ats Artifact" extends "Artifact" {
guid "ABMaLS0jvw92SE+4ZJQA"
attribute "ats.Description"
@@ -545,6 +550,14 @@ attributeType "ats.Description" extends StringAttribute {
fileExtension "txt"
}
+attributeType "ats.DSL Sheet" extends StringAttribute {
+ guid "AGrqojZDowPDaLh4kBAA"
+ dataProvider DefaultAttributeDataProvider
+ min 0
+ max 1
+ fileExtension "txt"
+}
+
attributeType "ats.Full Name" extends StringAttribute {
guid "AAMFEdZI9XLT34cTonAA"
dataProvider DefaultAttributeDataProvider
diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats
new file mode 100644
index 00000000000..f921d81fe7a
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Task_Default.ats
@@ -0,0 +1,51 @@
+workDefinition "WorkDef_Task_Default" {
+ id "WorkDef_Task_Default"
+ startState "InWork"
+
+ widgetDefinition "Title" {
+ attributeName "Name"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Description" {
+ attributeName "ats.Description"
+ xWidgetName "XTextDam"
+ height 80
+ option FILL_VERTICALLY
+ }
+
+ state "InWork" {
+ type Working
+ ordinal 1
+ to "Complete" AsDefault
+ to "Cancelled" OverrideAttributeValidation
+ rule RequireStateHourSpentPrompt
+ layout {
+ widget "Title"
+ widget "Description"
+ composite {
+ numColumns 6
+ attributeWidget "ats.Estimated Hours" with REQUIRED_FOR_TRANSITION
+ attributeWidget "ats.Estimated Completion Date"
+ attributeWidget "ats.Related To State"
+ }
+ composite {
+ numColumns 4
+ attributeWidget "ats.SMA Note"
+ attributeWidget "ats.Category"
+ }
+ }
+ }
+
+ state "Complete" {
+ type Completed
+ ordinal 2
+ rule AddDecisionValidateBlockingReview
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 3
+ }
+} \ No newline at end of file
diff --git a/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats b/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats
new file mode 100644
index 00000000000..8edd21ff65e
--- /dev/null
+++ b/plugins/org.eclipse.osee.ats/support/WorkDef_Team_Default.ats
@@ -0,0 +1,169 @@
+workDefinition "WorkDef_Team_Default" {
+ id "WorkDef_Team_Default"
+ startState "Endorse"
+
+ widgetDefinition "Work Package" {
+ attributeName "ats.Work Package"
+ xWidgetName "XTextDam"
+ option HORIZONTAL_LABEL
+ }
+
+ widgetDefinition "Problem" {
+ attributeName "ats.Problem"
+ xWidgetName "XTextDam"
+ option FILL_VERTICALLY
+ }
+
+ widgetDefinition "Proposed Resolution" {
+ attributeName "ats.Proposed Resolution"
+ xWidgetName "XTextDam"
+ option FILL_VERTICALLY
+ }
+
+ widgetDefinition "Change Type" {
+ attributeName "ats.Change Type"
+ xWidgetName "XComboDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Priority" {
+ attributeName "ats.Priority"
+ xWidgetName "XComboDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Need By" {
+ attributeName "ats.Need By"
+ xWidgetName "XDateDam"
+ option HORIZONTAL_LABEL
+ }
+
+ widgetDefinition "Estimated Hours" {
+ attributeName "ats.Estimated Hours"
+ xWidgetName "XFloatDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Title" {
+ attributeName "Name"
+ xWidgetName "XTextDam"
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Description" {
+ attributeName "ats.Description"
+ xWidgetName "XTextDam"
+ option FILL_VERTICALLY
+ option REQUIRED_FOR_TRANSITION
+ }
+
+ widgetDefinition "Validation Required" {
+ attributeName "ats.Validation Required"
+ xWidgetName "XCheckBoxDam"
+ option HORIZONTAL_LABEL
+ }
+
+ widgetDefinition "User Community" {
+ attributeName "ats.User Community"
+ xWidgetName "XListDam(OPTIONS_FROM_ATTRIBUTE_VALIDITY)"
+ option HORIZONTAL_LABEL
+ }
+
+ widgetDefinition "Estimated Completion Date" {
+ attributeName "ats.Estimated Completion Date"
+ xWidgetName "XDateDam"
+ option HORIZONTAL_LABEL
+ }
+
+ widgetDefinition "Resolution" {
+ attributeName "ats.Resolution"
+ xWidgetName "XTextDam"
+ option FILL_VERTICALLY
+ }
+
+ state "Analyze" {
+ type Working
+ ordinal 2
+ to "Cancelled"
+ to "Authorize" AsDefault
+ to "Endorse" OverrideAttributeValidation
+ rule RequireStateHourSpentPrompt
+ layout {
+ widget "Work Package"
+ widget "Problem"
+ widget "Proposed Resolution"
+ composite {
+ numColumns 6
+ widget "Change Type"
+ widget "Priority"
+ widget "Need By"
+ }
+ widget "Estimated Hours"
+ }
+ }
+
+ state "Endorse" {
+ type Working
+ ordinal 1
+ to "Cancelled"
+ to "Analyze" AsDefault
+ rule RequireStateHourSpentPrompt
+ layout {
+ widget "Title"
+ widget "Description"
+ widget "Proposed Resolution"
+ composite {
+ numColumns 6
+ widget "Change Type"
+ widget "Priority"
+ widget "Need By"
+ }
+ widget "Validation Required"
+ widget "Work Package"
+ widget "User Community"
+ }
+ }
+
+ state "Cancelled" {
+ type Cancelled
+ ordinal 6
+ to "Analyze" OverrideAttributeValidation
+ to "Authorize" OverrideAttributeValidation
+ to "Implement" OverrideAttributeValidation
+ to "Endorse" OverrideAttributeValidation
+ }
+
+ state "Authorize" {
+ type Working
+ ordinal 3
+ to "Cancelled"
+ to "Implement" AsDefault
+ to "Analyze" OverrideAttributeValidation
+ layout {
+ widget "Work Package"
+ widget "Estimated Completion Date"
+ }
+ }
+
+ state "Implement" {
+ type Working
+ ordinal 4
+ to "Cancelled"
+ to "Completed" AsDefault
+ to "Analyze" OverrideAttributeValidation
+ to "Authorize" OverrideAttributeValidation
+ rule RequireStateHourSpentPrompt
+ layout {
+ widget "Work Package"
+ widget "Estimated Completion Date"
+ widget "Resolution"
+ }
+ }
+
+ state "Completed" {
+ type Completed
+ ordinal 5
+ to "Implement" OverrideAttributeValidation
+ rule AddDecisionValidateBlockingReview
+ }
+} \ No newline at end of file

Back to the top