From 04048a6c4026b47fc6c372e792ffb60726baee56 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 24 Oct 2013 13:12:52 +0200 Subject: Clear of exceptions --- src/main/java/com/c2kernel/entity/agent/Job.java | 5 +- .../java/com/c2kernel/entity/proxy/AgentProxy.java | 2 +- .../com/c2kernel/lifecycle/instance/Activity.java | 24 +- .../lifecycle/instance/AdvancementCalculator.java | 5 +- .../com/c2kernel/lifecycle/instance/AndSplit.java | 6 +- .../lifecycle/instance/CompositeActivity.java | 35 +- .../java/com/c2kernel/lifecycle/instance/Join.java | 18 +- .../java/com/c2kernel/lifecycle/instance/Loop.java | 9 +- .../com/c2kernel/lifecycle/instance/ParserWF.java | 356 --------------------- .../com/c2kernel/lifecycle/instance/Split.java | 20 +- .../com/c2kernel/lifecycle/instance/WfVertex.java | 29 +- .../com/c2kernel/lifecycle/instance/Workflow.java | 23 +- .../com/c2kernel/lifecycle/instance/XOrSplit.java | 8 +- .../predefined/AddStepsFromDescription.java | 2 +- .../predefined/CreateItemFromDescription.java | 8 +- .../instance/predefined/PredefinedStep.java | 4 +- .../predefined/entitycreation/NewItem.java | 3 +- src/main/java/com/c2kernel/process/Bootstrap.java | 5 +- .../java/com/c2kernel/process/UserCodeProcess.java | 49 ++- 19 files changed, 175 insertions(+), 436 deletions(-) delete mode 100644 src/main/java/com/c2kernel/lifecycle/instance/ParserWF.java (limited to 'src/main/java') 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(); hasprevActive = new Hashtable(); } - 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 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(1, 1); - i = 0; - file = xmlfile; - while (i < file.length() - 5) - { - if (file.substring(i, i + 5).equals("")) - { - if (file.substring(i, i + 5).equals("")) - { - Logger.msg(7, ""); - 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("")) - { - Logger.msg(7, ""); - 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, ""); - } - 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 calculateJobs(AgentPath agent, int itemSysKey, int type) + public ArrayList calculateJobs(AgentPath agent, int itemSysKey, int type) throws ObjectNotFoundException, InvalidDataException { ArrayList jobs = new ArrayList(); 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 nextsToFollow = new ArrayList(); 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 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, 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 ignoredPaths = new ArrayList(); HashMap errors = new HashMap(); @@ -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 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 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; } } -- cgit v1.2.3