From 9dbce79cb5798feb92c4862e694ceeb8799ba284 Mon Sep 17 00:00:00 2001 From: Andrew Branson Date: Thu, 31 Jan 2013 21:02:47 +0100 Subject: Added ViewName field to Event. Filled in with the Viewpoint name if specified in the Activity properties, making it possible to derive previous states of the Viewpoint. Closes #96 Cleanup outcome storing code. Throw an exception if SchemaType filled in and outcome is empty. --- .../com/c2kernel/lifecycle/instance/Activity.java | 19 +++++++++++-------- .../instance/predefined/entitycreation/NewItem.java | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) (limited to 'src/main/java/com/c2kernel/lifecycle') diff --git a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java index c91a270..38ed626 100644 --- a/src/main/java/com/c2kernel/lifecycle/instance/Activity.java +++ b/src/main/java/com/c2kernel/lifecycle/instance/Activity.java @@ -510,21 +510,21 @@ public class Activity extends WfVertex } // empty joblist then return jobs; } - // - //methods written by kovax - // + + /** Adds an event to the AuditTrail of the Item if any */ - private Event auditEvent(int transitionID, AgentPath agent) + private Event auditEvent(int transitionID, AgentPath agent, boolean hasOutcome) { EntityPath entityPath = getItemEntityPath(); if (entityPath != null) { Event event = null; History hist = null; + String viewName = hasOutcome?(String)getProperties().get("Viewpoint"):null; try { hist = (History) Gateway.getStorage().get(entityPath.getSysKey(), ClusterStorage.HISTORY, this); - event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), transitionID, getName(), getPath(), getType(), getCurrentState()); + event = hist.addEvent(agent.getAgentName(), getCurrentAgentRole(), transitionID, getName(), getPath(), getType(), viewName, getCurrentState()); Logger.msg(7, "Activity::auditEvent() - Event:" + event.getName() + " was added to the AuditTrail"); } catch (Exception ex) @@ -542,6 +542,8 @@ public class Activity extends WfVertex private String storeOutcome(int eventID, String requestData, boolean isError) throws InvalidDataException { EntityPath entityPath = getItemEntityPath(); + if (requestData == null || requestData.length() == 0) + throw new InvalidDataException("Empty outcome", ""); if (entityPath != null) { String schemaType; int schemaVersion; @@ -593,11 +595,12 @@ public class Activity extends WfVertex public void sendEventStoreOutcome(int transitionID, String requestData, AgentPath agent) throws InvalidDataException { int eventID = -1; - Event event = null; - event = auditEvent(transitionID, agent); + String schemaType = (String) getProperties().get("SchemaType"); + boolean hasOutcome = (transitionID == Transitions.DONE || transitionID == Transitions.COMPLETE || transitionID == Transitions.SUSPEND) && (schemaType != null && schemaType.length() > 0); + Event event = auditEvent(transitionID, agent, hasOutcome); if (event != null) eventID = event.getID(); - if ((transitionID == Transitions.DONE || transitionID == Transitions.COMPLETE || transitionID == Transitions.SUSPEND) && requestData != null && requestData.length() > 0) + if (hasOutcome) storeOutcome(eventID, requestData, transitionID == Transitions.SUSPEND); EntityPath entityPath = getItemEntityPath(); TransactionManager storage = Gateway.getStorage(); 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 caa53e4..3c5a16e 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 @@ -92,7 +92,7 @@ public class NewItem extends ModuleImport { History hist = new History(entPath.getSysKey(), null); for (Outcome thisOutcome : outcomes) { - Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Import", "Import", "Import", States.FINISHED); + Event newEvent = hist.addEvent("system", "Admin", Transitions.DONE, "Import", "Import", "Import", thisOutcome.viewname.equals("last")?null:thisOutcome.viewname, States.FINISHED); com.c2kernel.persistency.outcome.Outcome newOutcome = new com.c2kernel.persistency.outcome.Outcome(newEvent.getID(), thisOutcome.getData(ns), thisOutcome.schema, thisOutcome.version); Viewpoint newLastView = new Viewpoint(entPath.getSysKey(), thisOutcome.schema, thisOutcome.viewname, thisOutcome.version, newEvent.getID()); try { -- cgit v1.2.3