diff options
| author | Andrew Branson <andrew.branson@cern.ch> | 2012-07-13 16:29:25 +0200 |
|---|---|---|
| committer | Andrew Branson <andrew.branson@cern.ch> | 2012-07-13 16:29:25 +0200 |
| commit | 1c59e048e46139f7ed6d0ee924901aea3878e67d (patch) | |
| tree | 5570cb76ff0317cde0a0ca22ebcbd9a1bafe0fce | |
| parent | 0b7ccbb852f40b4869918ff793c3db3a586bd3cc (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
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();
|
