summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2013-09-20 13:39:01 +0200
committerAndrew Branson <andrew.branson@cern.ch>2013-09-20 13:39:01 +0200
commit28b878fe7ff77be9441d3d8843ed355fbd7629ea (patch)
tree9cf28587dfcc527920d35ece5ea9ab2c2813f466
parentdac66d0b5aac974af565b1924c472866b4956bf4 (diff)
Keep a History object in the Workflow to avoid recreating it on repeated
executions.
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Activity.java13
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/Workflow.java11
-rw-r--r--src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java14
3 files changed, 25 insertions, 13 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
index 2384dc3..a8a2016 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java
@@ -21,7 +21,6 @@ import com.c2kernel.lookup.EntityPath;
import com.c2kernel.lookup.InvalidEntityPathException;
import com.c2kernel.lookup.LDAPRoleManager;
import com.c2kernel.lookup.RolePath;
-import com.c2kernel.persistency.ClusterStorage;
import com.c2kernel.persistency.TransactionManager;
import com.c2kernel.persistency.outcome.Outcome;
import com.c2kernel.persistency.outcome.Viewpoint;
@@ -523,7 +522,7 @@ public class Activity extends WfVertex
String viewName = hasOutcome?(String)getProperties().get("Viewpoint"):null;
try
{
- hist = (History) Gateway.getStorage().get(entityPath.getSysKey(), ClusterStorage.HISTORY, this);
+ hist = getWf().getHistory();
if (hasOutcome) {
String schemaName = isError?"Errors":(String)getProperties().get("SchemaType");
String schemaVersion = isError?"0":(String)getProperties().get("SchemaVersion");
@@ -577,17 +576,18 @@ public class Activity extends WfVertex
Logger.msg(5, "Activity::storeOutcome() - type:" + schemaType + " version:" + schemaVersion);
try
{
+ Object locker = getWf();
Outcome newOutcome = new Outcome(eventID, requestData, schemaType, schemaVersion);
- Gateway.getStorage().put(entityPath.getSysKey(), newOutcome, this);
+ Gateway.getStorage().put(entityPath.getSysKey(), newOutcome, locker);
// update specific view if defined
String specificView = (String) getProperties().get("Viewpoint");
if (specificView != null && !specificView.equals(""))
{
Viewpoint currentView = new Viewpoint(entityPath.getSysKey(), schemaType, specificView, schemaVersion, eventID);
- Gateway.getStorage().put(entityPath.getSysKey(), currentView, this);
+ Gateway.getStorage().put(entityPath.getSysKey(), currentView, locker);
} // update last view
Viewpoint currentView = new Viewpoint(entityPath.getSysKey(), schemaType, "last", schemaVersion, eventID);
- Gateway.getStorage().put(entityPath.getSysKey(), currentView, this);
+ Gateway.getStorage().put(entityPath.getSysKey(), currentView, locker);
return schemaType + "/" + schemaVersion + "/" + eventID;
}
catch (Exception ex)
@@ -609,6 +609,7 @@ public class Activity extends WfVertex
String schemaType = (String) getProperties().get("SchemaType");
boolean hasOutcome = (transitionID == Transitions.DONE || transitionID == Transitions.COMPLETE) && (schemaType != null && schemaType.length() > 0);
boolean hasErrorOutcome = transitionID == Transitions.SUSPEND && requestData != null && requestData.length()>0;
+ Object locker = getWf();
Event event = auditEvent(transitionID, agent, hasOutcome, hasErrorOutcome);
if (event != null)
eventID = event.getID();
@@ -618,7 +619,7 @@ public class Activity extends WfVertex
TransactionManager storage = Gateway.getStorage();
if (entityPath != null)
{
- storage.commit(this);
+ storage.commit(locker);
}
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
index 321e53e..13a7db6 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java
@@ -8,6 +8,7 @@ import com.c2kernel.common.ObjectAlreadyExistsException;
import com.c2kernel.common.ObjectNotFoundException;
import com.c2kernel.entity.C2KLocalObject;
import com.c2kernel.entity.agent.Job;
+import com.c2kernel.events.History;
import com.c2kernel.graph.model.GraphPoint;
import com.c2kernel.graph.model.TypeNameAndConstructionInfo;
import com.c2kernel.lifecycle.instance.predefined.PredefinedStepContainer;
@@ -23,6 +24,7 @@ import com.c2kernel.utils.Logger;
*/
public class Workflow extends CompositeActivity implements C2KLocalObject
{
+ public History history;
/** TypeNameAndConstructionInfo[] variables added by Steve */
private final TypeNameAndConstructionInfo[] mVertexTypeNameAndConstructionInfo =
{
@@ -53,6 +55,15 @@ public class Workflow extends CompositeActivity implements C2KLocalObject
PredefinedStepContainer act = new PredefinedStepContainer();
addChild(act, new GraphPoint(300, 100));
}
+
+ public History getHistory() {
+ if (history == null) {
+ Integer i = (Integer) (getProperties().get("ItemSystemKey"));
+ if (i != null)
+ history = new History(i, this);
+ }
+ return history;
+ }
/**
* Method getVertexTypeNameAndConstructionInfo.
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java
index 8bcaa45..cbdc33b 100644
--- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java
+++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java
@@ -77,20 +77,20 @@ public class Import extends PredefinedStep
// write event, outcome and viewpoints to storage
int syskey = getItemEntityPath().getSysKey();
TransactionManager storage = Gateway.getStorage();
-
- History hist = new History(syskey, this);
+ Object locker = getWf();
+ History hist = getWf().getHistory();
Event event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), transitionID, getName(), getPath(), getType(), schemaName, schemaVersion, viewpoint, getCurrentState(), timestamp);
try {
- storage.put(syskey, new Outcome(event.getID(), requestData, schemaName, schemaVersion), this);
- storage.put(syskey, new Viewpoint(syskey, schemaName, viewpoint, schemaVersion, event.getID()), this);
+ storage.put(syskey, new Outcome(event.getID(), requestData, schemaName, schemaVersion), locker);
+ storage.put(syskey, new Viewpoint(syskey, schemaName, viewpoint, schemaVersion, event.getID()), locker);
if (!"last".equals(viewpoint))
- storage.put(syskey, new Viewpoint(syskey, schemaName, "last", schemaVersion, event.getID()), this);
+ storage.put(syskey, new Viewpoint(syskey, schemaName, "last", schemaVersion, event.getID()), locker);
} catch (ClusterStorageException e) {
Logger.error(e);
- storage.abort(this);
+ storage.abort(locker);
throw new InvalidDataException("Could not store imported outcome. Rolled back.");
}
- storage.commit(this);
+ storage.commit(locker);
}
}