summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-10-24 13:12:52 +0200
committerAndrew Branson <andrew.branson@cern.ch>2013-10-24 13:12:52 +0200
commit04048a6c4026b47fc6c372e792ffb60726baee56 (patch)
treef45ead5986b8df26d4f9171350638b418fca3e47
parent8b32fe15554c0103585321c3d397f6e46dd451b4 (diff)
Clear of exceptions
-rw-r--r--src/main/java/com/c2kernel/entity/agent/Job.java5
-rw-r--r--src/main/java/com/c2kernel/entity/proxy/AgentProxy.java2
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Activity.java24
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/AdvancementCalculator.java5
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java6
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java35
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Join.java18
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Loop.java9
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/ParserWF.java356
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Split.java20
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java29
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Workflow.java23
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java8
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java2
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java8
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java4
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java3
-rw-r--r--src/main/java/com/c2kernel/process/Bootstrap.java5
-rw-r--r--src/main/java/com/c2kernel/process/UserCodeProcess.java49
-rw-r--r--src/main/resources/boot/SM/CompositeActivity.xml11
-rw-r--r--src/main/resources/boot/SM/Default.xml16
-rw-r--r--src/main/resources/boot/SM/PredefinedStep.xml9
-rw-r--r--src/main/resources/boot/allbootitems.txt2
23 files changed, 208 insertions, 441 deletions
diff --git a/src/main/java/com/c2kernel/entity/agent/Job.java b/src/main/java/com/c2kernel/entity/agent/Job.java
index f2a401a..715ee9c 100644
--- a/src/main/java/com/c2kernel/entity/agent/Job.java
+++ b/src/main/java/com/c2kernel/entity/agent/Job.java
@@ -24,6 +24,7 @@ import com.c2kernel.utils.Logger;
* @author $Author: abranson $ $Date: 2005/05/20 13:07:49 $
* @version $Revision: 1.62 $
******************************************************************************/
+
public class Job implements C2KLocalObject
{
// persistent
@@ -88,8 +89,8 @@ public class Job implements C2KLocalObject
setItemSysKey(itemSysKey);
setStepPath(act.getPath());
setTransitionId(transition.getId());
- setCurrentStateId(transition.getOriginStateCode());
- setTargetStateId(transition.getTerminalStateCode());
+ setCurrentStateId(transition.getOriginStateId());
+ setTargetStateId(transition.getTargetStateId());
setStepName(act.getName());
setActProps(act.getProperties());
setStepType(act.getType());
diff --git a/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java b/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java
index d803079..3569421 100644
--- a/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java
+++ b/src/main/java/com/c2kernel/entity/proxy/AgentProxy.java
@@ -240,7 +240,7 @@ public class AgentProxy extends EntityProxy
PersistencyException,
ObjectAlreadyExistsException
{
- item.requestAction(getSystemKey(), "workflow/predefined/"+predefStep, Transitions.DONE, PredefinedStep.bundleData(params));
+ item.requestAction(getSystemKey(), "workflow/predefined/"+predefStep, PredefinedStep.DONE, PredefinedStep.bundleData(params));
}
/** Wrappers for scripts */
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
index 6e03d01..bb0ce0d 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
@@ -109,7 +109,7 @@ public class Activity extends WfVertex
/** cf Item request
* @throws ObjectNotFoundException
* @throws PersistencyException */
- public void request(AgentPath agent, int itemSysKey, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectAlreadyExistsException, ObjectNotFoundException, PersistencyException
+ public void request(AgentPath agent, int itemSysKey, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectNotFoundException, PersistencyException
{
// Find requested transition
@@ -249,9 +249,14 @@ public class Activity extends WfVertex
loopTested = false;
return loop2;
}
- /** sets the next activity available if possible */
+ /** sets the next activity available if possible
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
+ * @throws ObjectAlreadyExistsException */
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
setActive(false);
try
@@ -328,10 +333,14 @@ public class Activity extends WfVertex
/**
* called by precedent Activity runNext() for setting the activity able to be executed
* @throws InvalidDataException
+ * @throws ObjectAlreadyExistsException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
* @throws ObjectNotFoundException
+ * @throws PersistencyException
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
Logger.debug(8, getPath() + " run " + getState());
@@ -350,9 +359,14 @@ public class Activity extends WfVertex
/**
* sets the activity available to be executed on start of Workflow or composite activity (when it is the first one of the (sub)process
* @throws InvalidDataException
+ * @throws ObjectAlreadyExistsException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
*/
@Override
- public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
Logger.debug(8, getPath() + " runfirst");
run(agent, itemSysKey);
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/AdvancementCalculator.java b/src/main/java/com/c2kernel/lifecycle/instance/AdvancementCalculator.java
index 6011c13..6302dc7 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/AdvancementCalculator.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/AdvancementCalculator.java
@@ -3,6 +3,7 @@ package com.c2kernel.lifecycle.instance;
import java.io.Serializable;
import java.util.Hashtable;
+import com.c2kernel.common.InvalidDataException;
import com.c2kernel.graph.model.Vertex;
//import com.c2kernel.utils.Logger;
/** @author XSeb74 */
@@ -27,7 +28,7 @@ public class AdvancementCalculator implements Serializable
HasNextMarked = new Hashtable<Vertex, Vertex>();
hasprevActive = new Hashtable<String, Vertex>();
}
- public void calculate(CompositeActivity act)
+ public void calculate(CompositeActivity act) throws InvalidDataException
{
// Logger.debug(0, act.getName()+" >>>>>>>>>");
if (act instanceof Workflow)
@@ -57,7 +58,7 @@ public class AdvancementCalculator implements Serializable
j++;
if (j != 0 && j==nexts.length) current.HasNextMarked.put(v, nexts[0]);
}
- private void calc(Vertex v, AdvancementCalculator current)
+ private void calc(Vertex v, AdvancementCalculator current) throws InvalidDataException
{
if (current.isMarked.get(v) != null && !(v instanceof Join))
return;
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java b/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java
index 3e9ef3c..0ecdb7f 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/AndSplit.java
@@ -1,5 +1,9 @@
package com.c2kernel.lifecycle.instance;
+import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.InvalidTransitionException;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.lookup.AgentPath;
/**
@@ -16,7 +20,7 @@ public class AndSplit extends Split
super();
}
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
AdvancementCalculator adv = new AdvancementCalculator();
adv.calculate((CompositeActivity) getParent());
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
index f7d39ae..2f475c7 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java
@@ -5,14 +5,13 @@ import java.util.ArrayList;
import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
import com.c2kernel.common.InvalidTransitionException;
-import com.c2kernel.common.ObjectAlreadyExistsException;
import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.common.PersistencyException;
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.lookup.AgentPath;
-import com.c2kernel.scripting.ScriptingEngineException;
import com.c2kernel.utils.Logger;
/**
@@ -21,9 +20,9 @@ import com.c2kernel.utils.Logger;
*/
public class CompositeActivity extends Activity
{
- /**
- * @see java.lang.Object#Object()
- */
+
+ public static final int START = 0;
+ public static final int COMPLETE = 1;
/*
* --------------------------------------------
* ----------------CONSTRUCTOR-----------------
@@ -275,10 +274,14 @@ public class CompositeActivity extends Activity
/**
* @throws InvalidDataException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
* @see com.c2kernel.lifecycle.instance.WfVertex#run()
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
super.run(agent, itemSysKey);
if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished())
@@ -289,10 +292,10 @@ public class CompositeActivity extends Activity
}
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, AccessRightsException, InvalidTransitionException, ObjectNotFoundException, PersistencyException
{
if (!getStateMachine().getState(state).isFinished())
- getMachine().traverse(Transitions.COMPLETE);
+ request(agent, itemSysKey, CompositeActivity.COMPLETE, null);
super.runNext(agent, itemSysKey);
}
@@ -393,10 +396,11 @@ public class CompositeActivity extends Activity
}
/**
+ * @throws InvalidDataException
*
*/
@Override
- public void reinit(int idLoop)
+ public void reinit(int idLoop) throws InvalidDataException
{
super.reinit(idLoop);
if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished())
@@ -404,16 +408,11 @@ public class CompositeActivity extends Activity
}
@Override
- public void request(AgentPath agent, int itemSysKey, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectAlreadyExistsException
+ public void request(AgentPath agent, int itemSysKey, int transitionID, String requestData) throws AccessRightsException, InvalidTransitionException, InvalidDataException, ObjectNotFoundException, PersistencyException
{
- if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished() && transitionID == Transitions.START)
- try
- {
- ((WfVertex) getChildrenGraphModel().getStartVertex()).run(agent);
- } catch (ScriptingEngineException e)
- {
- Logger.error(e);
- }
+ if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished() && transitionID == CompositeActivity.START)
+ ((WfVertex) getChildrenGraphModel().getStartVertex()).run(agent, itemSysKey);
+
super.request(agent, itemSysKey, transitionID, requestData);
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Join.java b/src/main/java/com/c2kernel/lifecycle/instance/Join.java
index 173f57c..7f50ece 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Join.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Join.java
@@ -1,7 +1,11 @@
package com.c2kernel.lifecycle.instance;
import java.util.Vector;
+import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.InvalidTransitionException;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.graph.traversal.GraphTraversal;
import com.c2kernel.lookup.AgentPath;
@@ -25,10 +29,14 @@ public class Join extends WfVertex
/**
* @throws InvalidDataException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
* @see com.c2kernel.lifecycle.instance.WfVertex#runNext()
*/
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
AdvancementCalculator adv = new AdvancementCalculator();
adv.calculate((CompositeActivity) getParent());
@@ -142,10 +150,14 @@ public class Join extends WfVertex
}
/**
* @throws InvalidDataException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
* @see com.c2kernel.lifecycle.instance.WfVertex#run()
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
runNext(agent, itemSysKey);
}
@@ -176,7 +188,7 @@ public class Join extends WfVertex
return loop2;
}
@Override
- public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
runNext(agent, itemSysKey);
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Loop.java b/src/main/java/com/c2kernel/lifecycle/instance/Loop.java
index 76ad7d5..51d6133 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Loop.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Loop.java
@@ -1,5 +1,9 @@
package com.c2kernel.lifecycle.instance;
+import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.InvalidTransitionException;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.graph.traversal.GraphTraversal;
import com.c2kernel.lookup.AgentPath;
@@ -26,7 +30,7 @@ public class Loop extends XOrSplit
return true;
}
@Override
- public void followNext(Next activeNext, AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void followNext(Next activeNext, AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
WfVertex v = activeNext.getTerminusVertex();
if (!isInPrev(v))
@@ -38,10 +42,11 @@ public class Loop extends XOrSplit
}
}
/**
+ * @throws InvalidDataException
* @see com.c2kernel.lifecycle.instance.WfVertex#reinit(int)
*/
@Override
- public void reinit(int idLoop)
+ public void reinit(int idLoop) throws InvalidDataException
{
Logger.msg(8, "Loop.reinit");
if (idLoop == getID())
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/ParserWF.java b/src/main/java/com/c2kernel/lifecycle/instance/ParserWF.java
deleted file mode 100644
index 1e52e6b..0000000
--- a/src/main/java/com/c2kernel/lifecycle/instance/ParserWF.java
+++ /dev/null
@@ -1,356 +0,0 @@
-package com.c2kernel.lifecycle.instance;
-
-import java.io.IOException;
-import java.util.Vector;
-
-import com.c2kernel.graph.model.GraphPoint;
-import com.c2kernel.lookup.AgentPath;
-import com.c2kernel.utils.CastorHashMap;
-import com.c2kernel.utils.Logger;
-
-/**
- * @version $Revision: 1.26 $ $Date: 2006/03/03 13:52:21 $
- * @author $Author: abranson $
- */
-public class ParserWF
-{
- static Vector<String[]> nexts;
- static String file = "";
- static int i;
- static CastorHashMap mInfo = new CastorHashMap();
-
- /**
- * Method addStep.
- * @param act
- * @param xmlfile
- * @return CompositeActivity
- * @throws IOException
- */
- /**
- * @associates <{com.c2kernel.lifecycle.instance.Workflow}>
- * @label creates
- */
- public static CompositeActivity addStep(CompositeActivity act, String xmlfile, AgentPath agent) throws IOException
- {
- nexts = new Vector<String[]>(1, 1);
- i = 0;
- file = xmlfile;
- while (i < file.length() - 5)
- {
- if (file.substring(i, i + 5).equals("<STEP"))
- {
- readStep(act);
- }
- else
- {
- i++;
- }
- }
- boolean flag = false;
- for (int j = 0; j < nexts.size(); j++)
- {
- for (int k = j + 1; k < nexts.size(); k++)
- {
- if (nexts.elementAt(j)[0].equals(nexts.elementAt(k)[0]))
- {
- int tmp = act.newSplitChild("And", new GraphPoint(0, 0)).getID();
- ((WfVertex) act.search(nexts.elementAt(k)[0])).addNext(act.search(tmp));
- ((Split) act.search(tmp)).addNext((WfVertex) act.search(nexts.elementAt(k)[1]));
- ((Split) act.search(tmp)).addNext((WfVertex) act.search(nexts.elementAt(j)[1]));
- nexts.removeElementAt(k--);
- flag = true;
- }
- }
- if (flag)
- {
- nexts.removeElementAt(j--);
- }
- flag = false;
- }
- for (int j = 0; j < nexts.size(); j++)
- {
- for (int k = j + 1; k < nexts.size(); k++)
- {
- if (nexts.elementAt(j)[1].equals(nexts.elementAt(k)[1]))
- {
- int tmp = act.newJoinChild(new GraphPoint(0, 0)).getID();
- ((WfVertex) act.search(nexts.elementAt(j)[0])).addNext(act.search(tmp));
- ((WfVertex) act.search(nexts.elementAt(k)[0])).addNext(act.search(tmp));
- ((Join) act.search(tmp)).addNext(nexts.elementAt(j)[1]);
- nexts.removeElementAt(k--);
- flag = true;
- }
- }
- if (flag)
- {
- nexts.removeElementAt(j--);
- }
- flag = false;
- }
- for (int j = 0; j < nexts.size(); j++)
- {
- Logger.msg(
- 7,
- "try to add next " + nexts.elementAt(j)[1] + " to " + nexts.elementAt(j)[0]);
- ((Activity) act.search(nexts.elementAt(j)[0])).addNext(nexts.elementAt(j)[1]);
- }
- if (act instanceof Workflow)
- try
- {
- act.run(agent);
- }
- catch (Exception ex)
- {
- Logger.error(ex);
- }
- return act;
- }
-
- private static void readStep(CompositeActivity parent)
- {
- Activity act = null;
- String[] step = new String[15];
- for (int j = 0; j < 15; j++)
- {
- step[j] = "";
- }
- i += 5;
- while (!file.substring(i, i + 7).equals("</STEP>"))
- {
- if (file.substring(i, i + 5).equals("<STEP"))
- {
- Logger.msg(7, "<STEP");
- if (!step[14].equals("done"))
- {
- act = parent.newCompChild(step[0], step[12].startsWith("true"), new GraphPoint(0, 0));
- }
- readStep((CompositeActivity) act);
- step[14] = "done";
- }
- else if (file.substring(i, i + 3).equals("Id="))
- {
- Logger.msg(7, "Id=");
- i += 4;
- int j = 0;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[0] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 6).equals("Alias="))
- {
- Logger.msg(7, "Alias=");
- i += 7;
- int j = 0;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[10] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 9).equals("Resource="))
- {
- Logger.msg(7, "Ressource=");
- i += 10;
- int j = 0;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[1] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 6).equals("First="))
- {
- Logger.msg(7, "First=");
- i += 7;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[12] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 3).equals("LC="))
- {
- Logger.msg(7, "LC=");
- i += 4;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[2] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 3).equals("WC="))
- {
- Logger.msg(7, "WC=");
- i += 4;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[3] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 6).equals("Posts="))
- {
- Logger.msg(7, "Posts=");
- i += 7;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[4] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 17).equals("Preparation-Time="))
- {
- Logger.msg(7, "Preparation-Time=");
- i += 18;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[5] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 12).equals("Active-Time="))
- {
- Logger.msg(7, "Active-Time=");
- i += 13;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[6] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 13).equals("OP-Startdate="))
- {
- Logger.msg(7, "OP-Startdate=");
- i += 14;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[7] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 11).equals("OP-Enddate="))
- {
- Logger.msg(7, "OP-Enddate=");
- i += 12;
- int j = 0;
- ;
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- step[8] = file.substring(i, i + j);
- i += (j + 1);
- }
- else if (file.substring(i, i + 13).equals("<DESCRIPTION>"))
- {
- Logger.msg(7, "<DESCRIPTION>");
- i += 13;
- int j = 0;
- ;
- while (file.charAt(i + j) != '<')
- {
- j++;
- }
- step[9] = file.substring(i, i + j);
- i += (j + 14);
- }
- else if (file.substring(i, i + 6).equals("<NEXT>"))
- {
- Logger.msg(7, "<NEXT>");
- i += 6;
- int j = 0;
- ;
- String[] tmp = new String[2];
- while (file.charAt(i + j) != '<')
- {
- j++;
- }
- tmp[0] = step[0];
- tmp[0] = parent.getPath() + "/" + tmp[0];
- tmp[1] = file.substring(i, i + j);
- tmp[1] = parent.getPath() + "/" + tmp[1];
- nexts.addElement(tmp);
- i += (j + 8);
- Logger.msg(7, "</NEXT>");
- }
- else if (file.substring(i, i + 5).equals("Path="))
- {
- Logger.msg(7, "Path=");
- i += 6;
- int j = 0;
- ;
- step[11] = file.substring(i, i + j);
- while (file.charAt(i + j) != '"')
- {
- j++;
- }
- i += (j + 1);
- }
- else
- {
- i++;
- }
- }
- i += 7;
- if (!step[14].equals("done"))
- act = parent.newAtomChild(step[0], step[12].startsWith("true"), new GraphPoint(0, 0));
- Logger.msg(7, "Step Created");
-
- try
- {
- Logger.msg(7, "Starting to create info");
- if (!step[1].equals(""))
- act.getProperties().put("Agent ID", step[1]);
- if (!step[2].equals(""))
- act.getProperties().put("Lc", step[2]);
- if (!step[3].equals(""))
- act.getProperties().put("Wc", step[3]);
- if (!step[4].equals(""))
- act.getProperties().put("Posts", step[4]);
- if (!step[5].equals(""))
- act.getProperties().put("PreparationTime", step[5]);
- if (!step[6].equals(""))
- act.getProperties().put("ActiveTime", step[6]);
- if (!step[7].equals(""))
- act.getProperties().put("OpStartdate", step[7]);
- if (!step[8].equals(""))
- act.getProperties().put("OpEnddate", step[8]);
- if (!step[9].equals(""))
- act.getProperties().put("Description", step[9]);
- Logger.msg(7, "create info for " + act.getID());
- Logger.msg(7, "Finished to create info");
- }
- catch (Exception e)
- {
- Logger.error(e);
- }
- file = file.substring(i);
- i = 0;
- }
-}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Split.java b/src/main/java/com/c2kernel/lifecycle/instance/Split.java
index 7ba9db3..a123391 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Split.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Split.java
@@ -2,7 +2,11 @@ package com.c2kernel.lifecycle.instance;
import java.util.Vector;
+import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.InvalidTransitionException;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.Vertex;
import com.c2kernel.graph.traversal.GraphTraversal;
import com.c2kernel.lookup.AgentPath;
@@ -29,10 +33,14 @@ public abstract class Split extends WfVertex
/**
* @throws InvalidDataException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
* @see com.c2kernel.lifecycle.instance.WfVertex#runNext()
*/
@Override
- public abstract void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException;
+ public abstract void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException;
/**
* Method addNext.
@@ -64,7 +72,7 @@ public abstract class Split extends WfVertex
}
@Override
- public void reinit(int idLoop)
+ public void reinit(int idLoop) throws InvalidDataException
{
Vertex[] outVertices = getOutGraphables();
for (Vertex outVertice : outVertices)
@@ -139,10 +147,14 @@ public abstract class Split extends WfVertex
/**
* @throws InvalidDataException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
* @see com.c2kernel.lifecycle.instance.WfVertex#run()
*/
@Override
- public void run(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
runNext(agent, itemSysKey);
}
@@ -191,7 +203,7 @@ public abstract class Split extends WfVertex
}
@Override
- public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runFirst(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
runNext(agent, itemSysKey);
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
index b0872c2..271e8df 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/WfVertex.java
@@ -4,8 +4,12 @@ package com.c2kernel.lifecycle.instance;
import java.util.HashMap;
+import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.InvalidTransitionException;
+import com.c2kernel.common.ObjectAlreadyExistsException;
import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.GraphableVertex;
import com.c2kernel.lifecycle.routingHelpers.ViewpointDataHelper;
import com.c2kernel.lookup.AgentPath;
@@ -25,8 +29,13 @@ public abstract class WfVertex extends GraphableVertex
{
/**sets the activity available to be executed on start of Workflow or composite activity (when it is the first one of the
* (sub)process
- * @throws InvalidDataException */
- public abstract void runFirst(AgentPath agent, int itemSysKey) throws ScriptingEngineException, InvalidDataException;
+ * @throws InvalidDataException
+ * @throws ObjectAlreadyExistsException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException */
+ public abstract void runFirst(AgentPath agent, int itemSysKey) throws ScriptingEngineException, InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, ObjectAlreadyExistsException, PersistencyException;
/**
* @see java.lang.Object#Object()
@@ -41,12 +50,17 @@ public abstract class WfVertex extends GraphableVertex
/**
* Method runNext.
* @throws InvalidDataException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
+ * @throws ObjectAlreadyExistsException
*/
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
try
{
- ((CompositeActivity)getParent()).request(agent, Transitions.COMPLETE, null);
+ ((CompositeActivity)getParent()).request(agent, itemSysKey, CompositeActivity.COMPLETE, null);
}
catch (Exception e)
{
@@ -78,8 +92,13 @@ public abstract class WfVertex extends GraphableVertex
/**
* Method run.
* @throws InvalidDataException
+ * @throws ObjectAlreadyExistsException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
+ * @throws PersistencyException
*/
- public abstract void run(AgentPath agent, int itemSysKey) throws InvalidDataException;
+ public abstract void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException;
/**
* Method loop.
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
index 0ead50d..faf0841 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
@@ -156,8 +156,11 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
*
* @param systemKey
* @throws InvalidDataException
+ * @throws ObjectNotFoundException
+ * @throws AccessRightsException
+ * @throws InvalidTransitionException
*/
- public void initialise(int systemKey, AgentPath agent) throws InvalidDataException
+ public void initialise(int systemKey, AgentPath agent) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException
{
try
{
@@ -166,18 +169,22 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
catch (InvalidDataException ex)
{
Logger.error(ex);
+ } catch (PersistencyException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
}
- /**
- * Method calculateJobs.
- *
- * @param type
- * @return JobList
- */
+
/**
* if type = 0 only domain steps will be queried if type = 1 only predefined steps will be queried else both will be queried
+ * @param agent
+ * @param itemSysKey
+ * @param type
+ * @return
+ * @throws ObjectNotFoundException
+ * @throws InvalidDataException
*/
- public ArrayList<Job> calculateJobs(AgentPath agent, int itemSysKey, int type)
+ public ArrayList<Job> calculateJobs(AgentPath agent, int itemSysKey, int type) throws ObjectNotFoundException, InvalidDataException
{
ArrayList<Job> jobs = new ArrayList<Job>();
if (type != 1)
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java b/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java
index 6c11e92..164fabc 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/XOrSplit.java
@@ -3,7 +3,11 @@ package com.c2kernel.lifecycle.instance;
import java.util.ArrayList;
import java.util.StringTokenizer;
+import com.c2kernel.common.AccessRightsException;
import com.c2kernel.common.InvalidDataException;
+import com.c2kernel.common.InvalidTransitionException;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.common.PersistencyException;
import com.c2kernel.graph.model.DirectedEdge;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.scripting.ScriptingEngineException;
@@ -24,7 +28,7 @@ public class XOrSplit extends Split
}
@Override
- public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException
+ public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
ArrayList<DirectedEdge> nextsToFollow = new ArrayList<DirectedEdge>();
String nexts;
@@ -55,7 +59,7 @@ public class XOrSplit extends Split
}
- public void followNext(Next activeNext, AgentPath agent, int itemSysKey) throws InvalidDataException {
+ public void followNext(Next activeNext, AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException {
activeNext.getTerminusVertex().run(agent, itemSysKey);
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java
index 8d5ba4a..30d014c 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/AddStepsFromDescription.java
@@ -35,7 +35,7 @@ public class AddStepsFromDescription extends PredefinedStep
lifeCycle.initChild(domain, true, new GraphPoint(150, 100));
domain.setName("domain");
domain.setType(actDef.getName());
- lifeCycle.run(agent);
+ lifeCycle.run(agent, itemSysKey);
Gateway.getStorage().put(itemSysKey, lifeCycle, null);
Logger.msg(1, "AddStepsFromDescription::request() - DONE.");
return requestData;
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 2e4b313..5c600e2 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/CreateItemFromDescription.java
@@ -159,7 +159,7 @@ public class CreateItemFromDescription extends PredefinedStep
for (Iterator<String> iter = collections.iterator(); iter.hasNext();) {
colls[0] = iter.next();
// TODO: initialize
- newItem.requestAction(agent.getSysKey(), "workflow/predefined/AddC2KObject", Transitions.DONE, PredefinedStep.bundleData(colls));
+ newItem.requestAction(agent.getSysKey(), "workflow/predefined/AddC2KObject", PredefinedStep.DONE, PredefinedStep.bundleData(colls));
}
}
@@ -168,12 +168,6 @@ public class CreateItemFromDescription extends PredefinedStep
context.setEntity(entityPath);
Gateway.getLDAPLookup().add(context);
return requestData;
- } catch (ObjectAlreadyExistsException e) {
- Logger.error(e);
- throw e;
- } catch (AccessRightsException e) {
- Logger.error(e);
- throw e;
} catch (Exception e) {
Logger.error(e);
throw new InvalidDataException(e.getMessage(), "");
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
index a9776ed..5369cb2 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/PredefinedStep.java
@@ -19,11 +19,13 @@ import com.c2kernel.utils.Logger;
* @author $Author: sgaspard $ $Date: 2004/09/21 10:32:17 $
* @version $Revision: 1.14 $
**********************************************************************************************************************************************************************************************************************************************************************************************************/
-public class PredefinedStep extends Activity
+public abstract class PredefinedStep extends Activity
{
/*******************************************************************************************************************************************************************************************************************************************************************************************************
* predefined Steps are always Active, and have only one transition subclasses could override this method (if necessary)
******************************************************************************************************************************************************************************************************************************************************************************************************/
+ public static final int DONE = 0;
+ public static final int AVAILABLE = 0;
private boolean isPredefined = false;
@Override
public boolean getActive()
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java
index c3334d6..f089a83 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/entitycreation/NewItem.java
@@ -16,6 +16,7 @@ import com.c2kernel.entity.TraceableEntity;
import com.c2kernel.events.Event;
import com.c2kernel.events.History;
import com.c2kernel.lifecycle.CompositeActivityDef;
+import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lookup.DomainPath;
import com.c2kernel.lookup.EntityPath;
import com.c2kernel.persistency.ClusterStorage;
@@ -128,7 +129,7 @@ public class NewItem extends ModuleImport {
}
// write new view/outcome/event
- Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Import", "Import", "Import", thisOutcome.schema, thisOutcome.version, thisOutcome.viewname, States.FINISHED);
+ Event newEvent = hist.addEvent("system", "Admin", PredefinedStep.DONE, "Import", "Import", "Import", thisOutcome.schema, thisOutcome.version, thisOutcome.viewname, PredefinedStep.AVAILABLE);
newOutcome.setID(newEvent.getID());
impView.setEventId(newEvent.getID());
try {
diff --git a/src/main/java/com/c2kernel/process/Bootstrap.java b/src/main/java/com/c2kernel/process/Bootstrap.java
index 08cf2e7..93698e8 100644
--- a/src/main/java/com/c2kernel/process/Bootstrap.java
+++ b/src/main/java/com/c2kernel/process/Bootstrap.java
@@ -15,10 +15,9 @@ import com.c2kernel.events.History;
import com.c2kernel.lifecycle.CompositeActivityDef;
import com.c2kernel.lifecycle.instance.CompositeActivity;
import com.c2kernel.lifecycle.instance.Workflow;
+import com.c2kernel.lifecycle.instance.predefined.PredefinedStep;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStepContainer;
import com.c2kernel.lifecycle.instance.predefined.ServerPredefinedStepContainer;
-import com.c2kernel.lifecycle.instance.stateMachine.States;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
import com.c2kernel.lookup.AgentPath;
import com.c2kernel.lookup.DomainPath;
import com.c2kernel.lookup.EntityPath;
@@ -152,7 +151,7 @@ public class Bootstrap
// data was missing or doesn't match
Logger.msg("Bootstrap.verifyResource() - Writing new version "+version+" to "+getDataType(itemType)+" "+itemName);
History hist = new History(thisProxy.getSystemKey(), thisProxy);
- Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Bootstrap", "Bootstrap", "Bootstrap", getDataType(itemType), 0, String.valueOf(version), States.FINISHED);
+ Event newEvent = hist.addEvent("system", "Admin", PredefinedStep.DONE, "Bootstrap", "Bootstrap", "Bootstrap", getDataType(itemType), 0, String.valueOf(version), PredefinedStep.AVAILABLE);
newOutcome.setID(newEvent.getID());
Viewpoint newLastView = new Viewpoint(thisProxy.getSystemKey(), getDataType(itemType), "last", 0, newEvent.getID());
Viewpoint newZeroView = new Viewpoint(thisProxy.getSystemKey(), getDataType(itemType), String.valueOf(version), 0, newEvent.getID());
diff --git a/src/main/java/com/c2kernel/process/UserCodeProcess.java b/src/main/java/com/c2kernel/process/UserCodeProcess.java
index 0abd906..f58da51 100644
--- a/src/main/java/com/c2kernel/process/UserCodeProcess.java
+++ b/src/main/java/com/c2kernel/process/UserCodeProcess.java
@@ -11,7 +11,6 @@ import com.c2kernel.entity.agent.Job;
import com.c2kernel.entity.proxy.AgentProxy;
import com.c2kernel.entity.proxy.EntityProxyObserver;
import com.c2kernel.entity.proxy.MemberSubscription;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.scripting.ErrorInfo;
import com.c2kernel.scripting.ScriptErrorException;
@@ -26,7 +25,14 @@ import com.c2kernel.utils.Logger;
* All rights reserved.
**************************************************************************/
public class UserCodeProcess extends StandardClient implements EntityProxyObserver<Job>, Runnable {
- protected AgentProxy agent;
+
+ // Default state machine transitions
+ private static final int START = 1;
+ private static final int COMPLETE = 2;
+ private static final int SUSPEND = 3;
+ private static final int RESUME = 4;
+
+ protected AgentProxy agent;
static boolean active = true;
ArrayList<String> ignoredPaths = new ArrayList<String>();
HashMap<String, ErrorInfo> errors = new HashMap<String, ErrorInfo>();
@@ -60,13 +66,13 @@ public class UserCodeProcess extends StandardClient implements EntityProxyObserv
Job thisJob = null;
synchronized (jobs) {
if (jobs.size() > 0) {
- thisJob = getJob(jobs, Transitions.COMPLETE);
+ thisJob = getJob(jobs, COMPLETE);
if (thisJob == null)
- thisJob = getJob(jobs, Transitions.START);
+ thisJob = getJob(jobs, START);
if (thisJob == null)
- thisJob = getJob(jobs, Transitions.SUSPEND);
+ thisJob = getJob(jobs, SUSPEND);
if (thisJob == null)
- thisJob = getJob(jobs, Transitions.RESUME);
+ thisJob = getJob(jobs, RESUME);
if (thisJob == null) {
Logger.error("No supported jobs, but joblist is not empty! Discarding remaining jobs");
@@ -80,7 +86,7 @@ public class UserCodeProcess extends StandardClient implements EntityProxyObserv
if (thisJob != null) {
String jobKey = thisJob.getItemSysKey()+":"+thisJob.getStepPath();
try {
- if (thisJob.getPossibleTransition()==Transitions.START) {
+ if (thisJob.getTransitionId()==START) {
Logger.msg(5, "Testing start conditions");
boolean start = assessStartConditions(thisJob);
if (start) {
@@ -91,13 +97,13 @@ public class UserCodeProcess extends StandardClient implements EntityProxyObserv
Logger.msg(5, "Start conditions failed "+thisJob.getStepName()+" in "+thisJob.getItemSysKey());
}
}
- else if (thisJob.getPossibleTransition()==Transitions.COMPLETE) {
+ else if (thisJob.getTransitionId()==COMPLETE) {
Logger.msg(5, "Executing logic");
runUCLogic(thisJob);
if (ignoredPaths.contains(jobKey))
ignoredPaths.remove(jobKey);
}
- else if (thisJob.getPossibleTransition()==Transitions.SUSPEND) {
+ else if (thisJob.getTransitionId()==SUSPEND) {
if (ignoredPaths.contains(jobKey)) {
if (errors.containsKey(jobKey)) {
thisJob.setOutcome(Gateway.getMarshaller().marshall(errors.get(jobKey)));
@@ -106,7 +112,7 @@ public class UserCodeProcess extends StandardClient implements EntityProxyObserv
agent.execute(thisJob);
}
}
- else if (thisJob.getPossibleTransition()==Transitions.RESUME) {
+ else if (thisJob.getTransitionId()==RESUME) {
if (!ignoredPaths.contains(jobKey))
agent.execute(thisJob);
}
@@ -116,7 +122,7 @@ public class UserCodeProcess extends StandardClient implements EntityProxyObserv
} catch (InvalidTransitionException ex) {
// must have already been done by someone else - ignore
} catch (Throwable ex) {
- Logger.error("Error executing "+Transitions.getTransitionName(thisJob.getPossibleTransition())+" job:");
+ Logger.error("Error executing "+getTransitionName(thisJob.getTransitionId())+" job:");
Logger.error(ex);
ErrorInfo ei = new ErrorInfo();
ei.setFatal();
@@ -148,12 +154,27 @@ public class UserCodeProcess extends StandardClient implements EntityProxyObserv
}
}
- private static Job getJob(HashMap<String, C2KLocalObject> jobs, int transition) {
+ private static String getTransitionName(int transitionId) {
+ switch (transitionId) {
+ case 1:
+ return "Start";
+ case 2:
+ return "Complete";
+ case 3:
+ return "Suspend";
+ case 4:
+ return "Resume";
+ default:
+ return "Unknown";
+ }
+ }
+
+ private static Job getJob(HashMap<String, C2KLocalObject> jobs, int transition) {
for (C2KLocalObject c2kLocalObject : jobs.values()) {
Job thisJob = (Job)c2kLocalObject;
- if (thisJob.getPossibleTransition() == transition) {
+ if (thisJob.getTransitionId() == transition) {
Logger.msg(1,"=================================================================");
- Logger.msg(1, "Got "+Transitions.getTransitionName(transition)+" job for "+thisJob.getStepName()+" in "+thisJob.getItemSysKey());
+ Logger.msg(1, "Got "+getTransitionName(transition)+" job for "+thisJob.getStepName()+" in "+thisJob.getItemSysKey());
return thisJob;
}
}
diff --git a/src/main/resources/boot/SM/CompositeActivity.xml b/src/main/resources/boot/SM/CompositeActivity.xml
new file mode 100644
index 0000000..a713c27
--- /dev/null
+++ b/src/main/resources/boot/SM/CompositeActivity.xml
@@ -0,0 +1,11 @@
+<StateMachine initialState="0">
+ <State id="0" name="Waiting"/>
+ <State id="1" name="Started"/>
+ <State id="2" name="Finished" proceeds="true"/>
+
+ <Transition id="0" name="Start" origin="0" terminus="1"/>
+ <Transition id="1" name="Complete" origin="1" terminus="2"/>
+</StateMachine>
+
+
+
diff --git a/src/main/resources/boot/SM/Default.xml b/src/main/resources/boot/SM/Default.xml
index 237506e..8d08570 100644
--- a/src/main/resources/boot/SM/Default.xml
+++ b/src/main/resources/boot/SM/Default.xml
@@ -1,16 +1,22 @@
<StateMachine initialState="0">
<State id="0" name="Waiting"/>
- <State id="1" name="Finished" proceeds="true"/>
- <State id="2" name="Suspended"/>
+ <State id="1" name="Started"/>
+ <State id="2" name="Finished" proceeds="true"/>
+ <State id="3" name="Suspended"/>
- <Transition id="0" name="Done" origin="0" terminus="1">
+ <Transition id="0" name="Done" origin="0" terminus="2">
<Outcome name="${SchemaType}" version="${SchemaVersion}"/>
<Script name="${ScriptName}" version="${ScriptVersion}"/>
</Transition>
- <Transition id="1" name="Suspend" origin="0" terminus="2">
+ <Transition id="1" name="Start" origin="0" terminus="1" reservation="set"/>
+ <Transition id="2" name="Complete" origin="1" terminus="2" reservation="clear">
+ <Outcome name="${SchemaType}" version="${SchemaVersion}"/>
+ <Script name="${ScriptName}" version="${ScriptVersion}"/>
+ </Transition>
+ <Transition id="2" name="Suspend" origin="1" terminus="3">
<Outcome name="Errors" version="0"/>
</Transition>
- <Transition id="2" name="Retry" origin="2" terminus="0" roleOverride="Admin"/>
+ <Transition id="2" name="Resume" origin="3" terminus="1" roleOverride="Admin"/>
</StateMachine>
diff --git a/src/main/resources/boot/SM/PredefinedStep.xml b/src/main/resources/boot/SM/PredefinedStep.xml
new file mode 100644
index 0000000..0cc418a
--- /dev/null
+++ b/src/main/resources/boot/SM/PredefinedStep.xml
@@ -0,0 +1,9 @@
+<StateMachine initialState="0">
+ <State id="0" name="Available"/>
+ <Transition id="0" name="Done" origin="0" terminus="0">
+ <Outcome name="PredefinedStepOutcome" version="0"/>
+ </Transition>
+</StateMachine>
+
+
+
diff --git a/src/main/resources/boot/allbootitems.txt b/src/main/resources/boot/allbootitems.txt
index 3f13968..4fdcbdc 100644
--- a/src/main/resources/boot/allbootitems.txt
+++ b/src/main/resources/boot/allbootitems.txt
@@ -11,6 +11,8 @@ OD/Script
OD/Errors
OD/StateMachine
SM/Default
+SM/PredefinedStep
+SM/CompositeActivity
EA/AssignNewVersionFromLast
EA/EditActivityDef
EA/EditSchema