diff options
Diffstat (limited to 'src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java')
| -rw-r--r-- | src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java | 117 |
1 files changed, 46 insertions, 71 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java index f3f5a81..f9ab0fe 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/CompositeActivity.java @@ -1,20 +1,17 @@ package com.c2kernel.lifecycle.instance;
import java.util.ArrayList;
-import java.util.Vector;
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.lifecycle.instance.stateMachine.States;
-import com.c2kernel.lifecycle.instance.stateMachine.Transitions;
import com.c2kernel.lookup.AgentPath;
-import com.c2kernel.scripting.ScriptingEngineException;
import com.c2kernel.utils.Logger;
/**
@@ -23,9 +20,8 @@ import com.c2kernel.utils.Logger; */
public class CompositeActivity extends Activity
{
- /**
- * @see java.lang.Object#Object()
- */
+
+
/*
* --------------------------------------------
* ----------------CONSTRUCTOR-----------------
@@ -37,6 +33,14 @@ public class CompositeActivity extends Activity setChildrenGraphModel(new GraphModel(new WfVertexOutlineCreator()));
setIsComposite(true);
}
+
+ // State machine
+ public static final int START = 0;
+ public static final int COMPLETE = 1;
+ @Override
+ protected String getDefaultSMName() {
+ return "CompositeActivity";
+ }
@Override
public void setChildrenGraphModel(GraphModel childrenGraph) {
@@ -276,66 +280,40 @@ 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) throws ScriptingEngineException
+ public void run(AgentPath agent, int itemSysKey) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException, PersistencyException
{
- super.run(agent);
- if (getChildrenGraphModel().getStartVertex() != null && getMachine().getCurrentState() != States.FINISHED)
+ super.run(agent, itemSysKey);
+ if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished())
{
WfVertex first = (WfVertex) getChildrenGraphModel().getStartVertex();
- first.run(agent);
+ first.run(agent, itemSysKey);
}
}
@Override
- public void runNext(AgentPath agent) throws ScriptingEngineException
- {
- if (getMachine().state != States.FINISHED)
- getMachine().traverse(Transitions.COMPLETE);
- super.runNext(agent);
- }
-
- /**
- * @see com.c2kernel.lifecycle.instance.Activity#query(com.c2kernel.common.AgentInfo,
- * java.lang.String, boolean)
- */
- @Override
- public Activity[] query(AgentPath agent, int stateID, boolean filter)
+ public void runNext(AgentPath agent, int itemSysKey) throws InvalidDataException, AccessRightsException, InvalidTransitionException, ObjectNotFoundException, PersistencyException
{
- Vector<Activity[]> steps = new Vector<Activity[]>();
- Activity[] returnArray = null;
- for (int i = 0; i < getChildren().length; i++)
- {
- if (getChildren()[i] instanceof Activity)
- steps.addElement(((Activity) getChildren()[i]).query(agent, stateID, filter));
- }
- int j = 0;
- for (int i = 0; i < steps.size(); i++)
- j += steps.elementAt(i).length;
- Activity[] tmp = super.query(agent, stateID, filter);
- if (tmp.length == 1)
- {
- returnArray = new Activity[j + 1];
- returnArray[j] = tmp[0];
- } else
- returnArray = new Activity[j];
- j = 0;
- for (int i = 0; i < steps.size(); i++)
- {
- Activity[] stepArray = steps.elementAt(i);
- for (Activity element : stepArray)
- returnArray[j++] = element;
- }
- return returnArray;
+ if (!getStateMachine().getState(state).isFinished())
+ request(agent, itemSysKey, CompositeActivity.COMPLETE, null);
+ super.runNext(agent, itemSysKey);
}
+ /**
+ * @throws InvalidDataException
+ * @throws ObjectNotFoundException
* @see com.c2kernel.lifecycle.instance.Activity#calculateJobs()
*/
@Override
- public ArrayList<Job> calculateJobs(AgentPath agent, boolean recurse)
+ public ArrayList<Job> calculateJobs(AgentPath agent, int itemSysKey, boolean recurse) throws ObjectNotFoundException, InvalidDataException
{
ArrayList<Job> jobs = new ArrayList<Job>();
boolean childActive = false;
@@ -344,16 +322,16 @@ public class CompositeActivity extends Activity if (getChildren()[i] instanceof Activity)
{
Activity child = (Activity) getChildren()[i];
- jobs.addAll(child.calculateJobs(agent, recurse));
+ jobs.addAll(child.calculateJobs(agent, itemSysKey, recurse));
childActive |= child.active;
}
if (!childActive)
- jobs.addAll(super.calculateJobs(agent, recurse));
+ jobs.addAll(super.calculateJobs(agent, itemSysKey, recurse));
return jobs;
}
@Override
- public ArrayList<Job> calculateAllJobs(AgentPath agent, boolean recurse)
+ public ArrayList<Job> calculateAllJobs(AgentPath agent, int itemSysKey, boolean recurse) throws ObjectNotFoundException, InvalidDataException
{
ArrayList<Job> jobs = new ArrayList<Job>();
if (recurse)
@@ -361,9 +339,9 @@ public class CompositeActivity extends Activity if (getChildren()[i] instanceof Activity)
{
Activity child = (Activity) getChildren()[i];
- jobs.addAll(child.calculateAllJobs(agent, recurse));
+ jobs.addAll(child.calculateAllJobs(agent, itemSysKey, recurse));
}
- jobs.addAll(super.calculateAllJobs(agent, recurse));
+ jobs.addAll(super.calculateAllJobs(agent, itemSysKey, recurse));
return jobs;
}
@@ -425,36 +403,33 @@ 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 && getMachine().getCurrentState() != States.FINISHED)
+ if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished())
((WfVertex) getChildrenGraphModel().getStartVertex()).reinit(idLoop);
}
@Override
- public void request(AgentPath agent, 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 && getMachine().getCurrentState() != States.FINISHED && transitionID == Transitions.START)
- try
- {
- ((WfVertex) getChildrenGraphModel().getStartVertex()).run(agent);
- } catch (ScriptingEngineException e)
- {
- Logger.error(e);
- }
- super.request(agent, transitionID, requestData);
+ if (getChildrenGraphModel().getStartVertex() != null && !getStateMachine().getState(state).isFinished() && transitionID == CompositeActivity.START)
+ ((WfVertex) getChildrenGraphModel().getStartVertex()).run(agent, itemSysKey);
+
+ super.request(agent, itemSysKey, transitionID, requestData);
}
- public void refreshJobs()
+
+ public void refreshJobs(int itemSysKey)
{
GraphableVertex[] children = getChildren();
for (GraphableVertex element : children)
if (element instanceof CompositeActivity)
- ((CompositeActivity) element).refreshJobs();
+ ((CompositeActivity) element).refreshJobs(itemSysKey);
else if (element instanceof Activity)
- ((Activity) element).pushJobsToAgents();
+ ((Activity) element).pushJobsToAgents(itemSysKey);
}
}
\ No newline at end of file |
