summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2012-07-13 16:29:25 +0200
committerAndrew Branson <andrew.branson@cern.ch>2012-07-13 16:29:25 +0200
commit1c59e048e46139f7ed6d0ee924901aea3878e67d (patch)
tree5570cb76ff0317cde0a0ca22ebcbd9a1bafe0fce
parent0b7ccbb852f40b4869918ff793c3db3a586bd3cc (diff)
New property 'Breakpoint' in Activity. If set to true, the workflow will
not proceed automatically past that activity after COMPLETE or DONE transitions, but will instead wait for PROCEED or SKIP. AUTOSTART removed. Now composite activities autostart, while atomic ones don't. closes #30
-rw-r--r--src/main/java/com/c2kernel/lifecycle/ActivityDef.java4
-rw-r--r--src/main/java/com/c2kernel/lifecycle/WfCastorHashMap.java8
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Activity.java14
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java3
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java2
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java25
6 files changed, 21 insertions, 35 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/ActivityDef.java b/src/main/java/com/c2kernel/lifecycle/ActivityDef.java
index 235275f..40d1f8a 100644
--- a/src/main/java/com/c2kernel/lifecycle/ActivityDef.java
+++ b/src/main/java/com/c2kernel/lifecycle/ActivityDef.java
@@ -6,7 +6,6 @@ import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.lifecycle.instance.Activity;
import com.c2kernel.lifecycle.instance.WfVertex;
-import com.c2kernel.lifecycle.instance.stateMachine.StateMachine;
import com.c2kernel.utils.FileStringUtility;
/**
* @version $Revision: 1.45 $ $Date: 2005/10/05 07:39:36 $
@@ -26,9 +25,6 @@ public class ActivityDef extends WfVertexDef implements C2KLocalObject
mErrors = new Vector<String>(0, 1);
setProperties(new WfCastorHashMap());
setIsLayoutable(false);
- getProperties().put(StateMachine.SKIPPABLE, new Boolean(false));
- getProperties().put(StateMachine.REPEATABLE, new Boolean(false));
- getProperties().put(StateMachine.IGNORABLE, new Boolean(false));
}
/**
* @see com.c2kernel.graph.model.Vertex#setID(int)
diff --git a/src/main/java/com/c2kernel/lifecycle/WfCastorHashMap.java b/src/main/java/com/c2kernel/lifecycle/WfCastorHashMap.java
index 176f22e..1cf6121 100644
--- a/src/main/java/com/c2kernel/lifecycle/WfCastorHashMap.java
+++ b/src/main/java/com/c2kernel/lifecycle/WfCastorHashMap.java
@@ -12,12 +12,12 @@ public class WfCastorHashMap extends CastorHashMap
*/
public WfCastorHashMap()
{
- put(StateMachine.AUTOSTART, new Boolean(true));
- put(StateMachine.SKIPPABLE, new Boolean(true));
- put(StateMachine.REPEATABLE, new Boolean(true));
+ //put(StateMachine.AUTOSTART, new Boolean(false));
+ put(StateMachine.SKIPPABLE, new Boolean(false));
+ put(StateMachine.REPEATABLE, new Boolean(false));
put(StateMachine.IGNORABLE, new Boolean(false));
- put("Viewpoint", "");
put("Show time", new Boolean(true));
+ put("Breakpoint", new Boolean(false));
put("Description", "");
put("Mail Message", "");
put("Mail event", "");
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
index 8dc6b9d..c91a270 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
@@ -175,13 +175,14 @@ public class Activity extends WfVertex
}
}
}
- if (transitionID == Transitions.COMPLETE && state == States.RSTARTED)
+ if ((transitionID == Transitions.COMPLETE || transitionID == Transitions.DONE) &&
+ (state == States.RSTARTED || getProperties().get("Breakpoint").equals(Boolean.TRUE)))
setActive(false);
- if (transitionID == Transitions.START)
+ else if (transitionID == Transitions.START)
start();
- if ((transitionID == Transitions.SKIP && getActive())
+ else if ((transitionID == Transitions.SKIP && getActive())
|| transitionID == Transitions.DONE
- || (transitionID == Transitions.COMPLETE && state == States.STARTED)
+ || transitionID == Transitions.COMPLETE
|| transitionID == Transitions.PROCEED)
try
{
@@ -402,11 +403,6 @@ public class Activity extends WfVertex
else
{
DateUtility.setToNow(mActiveDate);
- if (((Boolean) getProperties().get(StateMachine.AUTOSTART)).booleanValue() && machine.state == States.WAITING)
- {
- machine.traverse(Transitions.START);
- start();
- }
pushJobsToAgents();
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
index 45d04c0..f3f5a81 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
@@ -11,7 +11,6 @@ import com.c2kernel.entity.agent.Job;
import com.c2kernel.graph.model.GraphModel;
import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.graph.model.GraphableVertex;
-import com.c2kernel.lifecycle.instance.stateMachine.StateMachine;
import com.c2kernel.lifecycle.instance.stateMachine.States;
import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
import com.c2kernel.lookup.AgentPath;
@@ -283,7 +282,7 @@ public class CompositeActivity extends Activity
public void run(AgentPath agent) throws ScriptingEngineException
{
super.run(agent);
- if (getChildrenGraphModel().getStartVertex() != null && getMachine().getCurrentState() != States.FINISHED && ((Boolean) getProperties().get(StateMachine.AUTOSTART)).booleanValue())
+ if (getChildrenGraphModel().getStartVertex() != null && getMachine().getCurrentState() != States.FINISHED)
{
WfVertex first = (WfVertex) getChildrenGraphModel().getStartVertex();
first.run(agent);
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
index 71495c0..4ce6ff8 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
@@ -160,7 +160,7 @@ public class CreateItemFromDescription extends PredefinedStep
String[] colls = new String[1];
for (Iterator<String> iter = collections.iterator(); iter.hasNext();) {
colls[0] = iter.next();
- newItem.requestAction(agent.getSysKey(), "workflow/predefined/AddC2KObject", Transitions.COMPLETE, PredefinedStep.bundleData(colls));
+ newItem.requestAction(agent.getSysKey(), "workflow/predefined/AddC2KObject", Transitions.DONE, PredefinedStep.bundleData(colls));
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java
index 8159106..ddfc838 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/stateMachine/StateMachine.java
@@ -19,7 +19,6 @@ public class StateMachine implements Serializable
public static final String SKIPPABLE = "Skippable";
public static final String REPEATABLE = "Repeatable";
public static final String IGNORABLE = "Ignorable";
- public static final String AUTOSTART = "Autostart";
/**
@@ -38,16 +37,16 @@ public class StateMachine implements Serializable
private int[][] getCurrentMachine()
{
int [][] returnArray =
- { /*RESERVE, START, SKIP, DONE,COMPLETE,SUSPEND,REASIGN,RESUME, REPEAT, IGNORE, PROCEED*/
- /*0 WAITING*/ { 1,getActive()?2:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, -1, -1},/*0 WAITING*/
- /*1 RESERVED*/ { -1,getActive()?2:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, 0, -1},/*1 RESERVED*/
- /*2 STARTED*/ { -1, -1, -1, -1, 4, 3, -1, -1, -1,getIgnorable()?0:-1, -1},/*2 STARTED*/
- /*3 SUSPENDED*/ { -1, -1, -1, -1, -1, -1, 2, 2, -1,getIgnorable()?0:-1, -1},/*3 SUSPENDED*/
- /*4 FINISHED*/ { -1, -1, -1, -1, -1, -1, -1, -1,getRepeatable()?!getAutoStart()?5:7:-1, -1,getActive()?4:-1},/*4 FINISHED*/
- /*5 RWAITING*/ { 6,getActive()?7:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, -1, -1},/*5 RWAITING*/
- /*6 RRESERVED*/ { -1,getActive()?7:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, -1, -1},/*6 RRESERVED*/
- /*7 RSTARTED*/ { -1, -1, -1, -1, 4, 8, -1, -1, -1,getIgnorable()?5:-1, -1},/*7 RSTARTED*/
- /*8 RSUSPENDED*/ { -1, -1, -1, -1, -1, -1, 8, 7, -1, -1, -1} /*8 RSUSPENDED*/
+ { /*RESERVE, START, SKIP, DONE,COMPLETE,SUSPEND,REASSIGN,RESUME, REPEAT, IGNORE, PROCEED*/
+ /*0 WAITING*/ { 1,getActive()?2:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, -1, -1},/*0 WAITING*/
+ /*1 RESERVED*/ { -1,getActive()?2:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, 0, -1},/*1 RESERVED*/
+ /*2 STARTED*/ { -1, -1, -1, -1, 4, 3, -1, -1, -1,getIgnorable()?0:-1, -1},/*2 STARTED*/
+ /*3 SUSPENDED*/ { -1, -1, -1, -1, -1, -1, 2, 2, -1,getIgnorable()?0:-1, -1},/*3 SUSPENDED*/
+ /*4 FINISHED*/ { -1, -1, -1, -1, -1, -1, -1, -1,getRepeatable()?5:-1, -1,getActive()?4:-1},/*4 FINISHED*/
+ /*5 RWAITING*/ { 6,getActive()?7:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, -1, -1},/*5 RWAITING*/
+ /*6 RRESERVED*/ { -1,getActive()?7:-1,getSkippable()?4:-1,getActive()?4:-1, -1, -1, -1, -1, -1, -1, -1},/*6 RRESERVED*/
+ /*7 RSTARTED*/ { -1, -1, -1, -1, 4, 8, -1, -1, -1,getIgnorable()?5:-1, -1},/*7 RSTARTED*/
+ /*8 RSUSPENDED*/ { -1, -1, -1, -1, -1, -1, 8, 7, -1, -1, -1} /*8 RSUSPENDED*/
};
return returnArray;
}
@@ -130,10 +129,6 @@ public class StateMachine implements Serializable
return ((Boolean)activity.getProperties().get(SKIPPABLE)).booleanValue();
}
- public boolean getAutoStart()
- {
- return ((Boolean)activity.getProperties().get(AUTOSTART)).booleanValue();
- }
public boolean getActive()
{
return activity.getActive();