diff options
Diffstat (limited to 'src/main/java/com')
3 files changed, 24 insertions, 12 deletions
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java index 54df25c..42ffe79 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java @@ -177,20 +177,21 @@ public class Activity extends WfVertex if (storeOutcome) {
Outcome newOutcome = new Outcome(newEvent.getID(), requestData, schema.docType, schema.docVersion);
- Gateway.getStorage().put(itemSysKey, newOutcome, this);
+ Gateway.getStorage().put(itemSysKey, newOutcome, getWf());
// update specific view if defined
if (viewName != null && !viewName.equals("")) {
Viewpoint currentView = new Viewpoint(itemSysKey, schema.docType, viewName, schema.docVersion, newEvent.getID());
- Gateway.getStorage().put(itemSysKey, currentView, this);
+ Gateway.getStorage().put(itemSysKey, currentView, getWf());
}
// update last view
Viewpoint currentView = new Viewpoint(itemSysKey, schema.docType, "last", schema.docVersion, newEvent.getID());
- Gateway.getStorage().put(itemSysKey, currentView, this);
+ Gateway.getStorage().put(itemSysKey, currentView, getWf());
}
- Gateway.getStorage().commit(this);
+ Gateway.getStorage().commit(getWf());
} catch (ClusterStorageException ex) {
Logger.error(ex);
+ Gateway.getStorage().abort(getWf());
throw new PersistencyException("Exception storing event data");
}
diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java index e3a6b7f..fa5e66b 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/Workflow.java @@ -24,6 +24,8 @@ import com.c2kernel.utils.Logger; public class Workflow extends CompositeActivity implements C2KLocalObject
{
public History history;
+ private Integer itemSysKey = null;
+
/** TypeNameAndConstructionInfo[] variables added by Steve */
private final TypeNameAndConstructionInfo[] mVertexTypeNameAndConstructionInfo =
{
@@ -54,11 +56,11 @@ public class Workflow extends CompositeActivity implements C2KLocalObject addChild(act, new GraphPoint(300, 100));
}
- public History getHistory() {
+ public History getHistory() throws InvalidDataException {
if (history == null) {
- Integer i = (Integer) (getProperties().get("ItemSystemKey"));
- if (i != null)
- history = new History(i, this);
+ if (itemSysKey == null)
+ throw new InvalidDataException("Workflow not initialized.", "");
+ history = new History(itemSysKey, this);
}
return history;
}
@@ -173,6 +175,7 @@ public class Workflow extends CompositeActivity implements C2KLocalObject */
public void initialise(int systemKey, AgentPath agent) throws InvalidDataException, InvalidTransitionException, AccessRightsException, ObjectNotFoundException
{
+ itemSysKey = systemKey;
try
{
runFirst(agent, systemKey);
@@ -186,6 +189,14 @@ public class Workflow extends CompositeActivity implements C2KLocalObject }
}
+ public Integer getItemSysKey() {
+ return itemSysKey;
+ }
+
+ public void setItemSysKey(Integer itemSysKey) {
+ this.itemSysKey = itemSysKey;
+ }
+
/**
* 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
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 9b25546..29d4c54 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/predefined/Import.java @@ -76,16 +76,16 @@ public class Import extends PredefinedStep Event event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), getName(), getPath(), getType(), schemaName, schemaVersion, getStateMachine().getName(), getStateMachine().getVersion(), getStateMachine().getTransition(transitionID), viewpoint, timestamp);
try {
- storage.put(itemSysKey, new Outcome(event.getID(), requestData, schemaName, schemaVersion), this);
- storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, viewpoint, schemaVersion, event.getID()), this);
+ storage.put(itemSysKey, new Outcome(event.getID(), requestData, schemaName, schemaVersion), locker);
+ storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, viewpoint, schemaVersion, event.getID()), locker);
if (!"last".equals(viewpoint))
- storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, "last", schemaVersion, event.getID()), this);
+ storage.put(itemSysKey, new Viewpoint(itemSysKey, schemaName, "last", schemaVersion, event.getID()), locker);
} catch (ClusterStorageException e) {
Logger.error(e);
storage.abort(locker);
throw new InvalidDataException("Could not store imported outcome. Rolled back.");
}
- storage.commit(this);
+ storage.commit(locker);
return requestData;
}
}
|
